суббота, 21 января 2017 г.

Обработчик оповещения оповестить

Периодически возникает необходимость обновить форму документа или справочника после его программного обновления


Для таких событий присутствует операторы обработчики событий оповещения

1 форма родитель
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)

//Только в базе "1" в расходном ордере, При создании на основании Задания на отбор,
//надо добавить всплывающее окно, которое просит указать количество отборов у клиента и их номера
Если ТипЗнч(Объект.Распоряжение) = Тип("ДокументСсылка.РасходныйОрдерНаТовары") Тогда
Если ОбъектНовый = Истина Тогда
УказатьКоличествоОтборовУКлиента(); //Открытие "2" формы
КонецЕсли;
КонецЕсли;
...
КонецПроцедуры


2 форма потомок
&НаКлиенте
Процедура НажатиеОК(Команда)
ПроизвестиДобавлениеДанных();
ЭтаФорма.Закрыть();
//Необходимо вызвать команду Оповестить(),
//так вызовет в форме-родителе ОбработкаОповещения()
Оповестить();
КонецПроцедуры


1 форма родитель
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

//Обновляет форму после измений с сохранением
 ЭтаФорма.ОбновитьОтображениеДанных();
 ЭтаФорма.Прочитать();
...
КонецПроцедуры

Контекст:
Глобальный контекст (Global context)
Оповестить (Notify)
Синтаксис:
Оповестить(<ИмяСобытия>, <Параметр>, <Источник>)
Параметры:
<ИмяСобытия> (необязательный)
Тип: Строка.
Имя события. Может быть использовано для идентификации сообщений принимающими их формами.
<Параметр> (необязательный)
Тип: Произвольный.
Параметр сообщения. Могут быть переданы любые необходимые данные.
<Источник> (необязательный)
Тип: Произвольный.
Источник события. Например, в качестве источника может быть указана другая форма.
Описание:
Посылает оповещение всем созданным формам и всем подключенным через метод ПодключитьОбработчикОповещения процедурам модуля управляемого приложения (модуля обычного приложения) или общего модуля. Если для формы задана процедура-обработчик события ОбработкаОповещения, то она будет запущена, в процедуру будут переданы указанные параметры.
Данный механизм может, например, применяться для организации обмена сообщениями между открытыми формами.
Доступность:
Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
Пример:
Оповестить("ЗакрытьФорму");


Глобальный контекст (Global context)
ПодключитьОбработчикОповещения (AttachNotificationHandler)
Синтаксис:

ПодключитьОбработчикОповещения(<ИмяПроцедуры>) 
Параметры:

<ИмяПроцедуры> (обязательный)

Тип: Строка. 
Имя экспортируемой процедуры модуля управляемого приложения (модуля обычного приложения) или общего глобального модуля.
Процедура должна располагаться на клиенте.
Процедура не должна содержать параметров. 
Описание:

Подключает вызов указанной экспортируемой процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля для обработки оповещения при вызове метода Оповестить. Процедура должна быть экспортируемой и иметь три параметра - <Имя события>, <Параметр>, <Источник>.

Доступность: 

Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент). 
Пример:

Процедура глОбработкаОповещения(Событие, Параметр, Источник) Экспорт
    Сообщить("глОбработкаОповещения ИмяСобытия = " + Событие);
КонецПроцедуры


Процедура ПриНачалеРаботыСистемы()
    //...    

    ПодключитьОбработчикОповещения("глОбработкаОповещения");
    //...    

КонецПроцедуры // ПриНачалеРаботыСистемы()