Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Подписка на событие: ОбработкаПолученияФормы          
Constantus Подменю пользователя
сообщение 01.08.19, 8:43
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Приветствую, Форумчане!
1с8.3.12, БСП, самопис, УФ

Пытаюсь изобрести подписку на событие при открытии. Для этого использую подписку на событие ОбработкаПолученияФормы для МенеджераДокумента:
ДокументМенеджер.РасходДенег как источник...

Написал общую процедуру:

Процедура ОбработкаПолученияФормы(Источник, ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) Экспорт

    Если ТипЗнч(Источник) = Тип("ДокументМенеджер.РасходДенег")  Тогда
        Сообщить("ОООО");
        //Сообщить(Источник.Элементы.Контрагент);
        Источник.ТолькоПросмотр = истина;

    КонецЕсли;

КонецПроцедуры


Сообщение "ОООО" выходит при открытии, но вот дальше...

Как мне обратится к реквизитам и элементам формы в этом коде?
Ну например, сделать форму заблокированной для изменения (только просмотр)?
Получить данные реквизита "Контрагент"?
Обратится к табличной части?

Основная соль это проверить реквизит "Дата" и если он меньше какой-то даты, то сделать форму только для чтения

sava1 Подменю пользователя
сообщение 01.08.19, 9:35
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Наверно, Параметры.
дата - реквизит источника (документа)
ТолькоПросмотр - параметр формы

Constantus Подменю пользователя
сообщение 01.08.19, 10:15
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

sava1 @ Сегодня, 12:35 * ,

Сообщить(Параметры.Ключ.Контрагент);


Спасибо за наводку. Вот так вывело контрагента.

А как заблокировать форму?

Constantus Подменю пользователя
сообщение 01.08.19, 11:43
Сообщение #4

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Constantus @ Сегодня, 13:15 * ,


    СтандартнаяОбработка = Ложь;
        Параметры.Вставить("ТолькоПросмотр", Истина);        
        ВыбраннаяФорма = СтрЗаменить(Источник, "Менеджер", "") + "." + ВидФормы;




Подписка на событие при открытии формы. Только просмотр... Сработало

Constantus Подменю пользователя
сообщение 02.08.19, 8:02
Сообщение #5

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Только вышла засада...

Если создавать новый документ, то попытка что-либо сделать не увенчалась успехом.

Сообщить(Параметры.Ключ.Контрагент) - выдает сообщение

Ошибка при выполнении обработчика - 'ОбработкаПолученияФормы'
по причине:
{ОбщийМодуль.ОбработкаОткрытияФормы.Модуль(18)}: Поле объекта не обнаружено (Ключ)
   Сообщить(Параметры.Ключ);


"Параметры" при новом документе не существуют...

Как осуществить проверку на новый документ, чтобы поставить условие, что если это вновь созданный документ, то открываешь без каких либо условий?



pablo Подменю пользователя
сообщение 02.08.19, 8:27
Сообщение #6

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Если Параметры.Свойство("Ключ") тогда //это не новый документ


Сообщение отредактировал pablo - 02.08.19, 9:31


Signature
Правильно поставленный вопрос содержит до 90% ответа.

cos12 Подменю пользователя
сообщение 02.08.19, 8:34
Сообщение #7

Завсегдатай
****
Группа: Пользователи
Сообщений: 226
Спасибо сказали: 28 раз
Рейтинг: 0

Constantus @ Сегодня, 9:02 * ,
Если ДокументОбъект.ЭтоНовый() Тогда

или
Если ЭтоНовый() Тогда

или
Если Объект.ЭтоНовый() Тогда


Аналог ЭтоНовый() в управляемом приложении
Чтобы выяснить новый объект или нет, необходимо использовать конструкцию вида:

Параметры.Ключ.Пустая();

Если объект записан в базу данных, он содержит ссылку на объект — Ключ. Если ключ пустой- объект новый.

Например:
Если НЕ Параметры.Ключ.Пустая() Тогда
Возврат Истина;
КонецЕсли;

Спасибо сказали: Constantus,

Kerberos Подменю пользователя
сообщение 05.08.19, 12:24
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 62
Спасибо сказали: 13 раз
Рейтинг: 0

Constantus @ 01.08.19, 9:43 * ,
А вы действительно, в конфигурации на БСП изголяетесь, используя "Сообщить" вместо "ОбщегоНазначенияКлиентСервер.СообщитьПользователю"?
Это как купить дорогой сматфон, чтобы только звонить любимой бабушке.

Посоветовал бы почитать книгу Радченко по программированию для начинающих. Много вопросов бы исчезло после чтива матчасти за 2 выходных

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 12:04
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!