Страницы: 1
RSS
Обработка оповещения в 1С
 
Добрый день! Часто сталкиваюсь с таким понятием как Момент времени в 1С, есть общие сведения, но подробное описания принципа работы найти сложно.  
 

Описание

Обработка оповещения (ОбработкаОповещения() – стандартный обработчик встроенного языка 1С, находящийся на форме объекта, вызываемый с помощью Процедуры Оповестить().  

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

Параметры

В Обработку оповещения можно передать параметры:

·        «Имя события» - ключ в виде строки, по которому можно, например, сделать проверку: из какой именно процедуры Оповестить() инициализирована ОбработкаОповещения(), и установить отбор: какие именно ОбработкиОповещения() запустить.

·        «Параметр» - произвольный параметр, которым можно передать любую дополнительную информацию из формы-источника в форму-приемник (параметр, таблицу с данными и т.д.).

·        «Источник» - источник события, например форма с процедурой Оповестить(), из которой инициализируется ОбработкаОповещения().

Пример использования

Есть 3 формы: «Форма1», «Форма2» и «Форма3». В формах: «Форма1», «Форма2» описаны одинаковые процедуры «ВыполнитьКоманду()», с той лишь разницей, что в из первой передается ключ – «Закрыть», а из второй – «Не закрывать».

В форме «Форма3» описана процедура ОбработкаОповещения(), и после ее инициализации процедурой ВыполнитьКоманду() из формы «Форма1», параметру «ИмяСобытия» присвоится значение «Закрыть», и после проверки, «Форма3» будет закрыта. Однако, если ОбработкаОповещения() будет инициализироваться процедурой ВыполнитьКоманду() из формы «Форма2», «Форма3» – не закроется, так как не пройдет проверку. Таким образом мы можем контролировать: на какие именно оповещения «Форма3» будет «реагировать», а на какие нет:

Форма1

&НаКлиенте

Процедура ВыполнитьКоманду(Команда)

              Оповестить("Закрыть", Истина, ЭтаФорма);

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

Форма2

&НаКлиенте

Процедура ВыполнитьКоманду(Команда)

              Оповестить("Не закрывать", Истина, ЭтаФорма);

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

Форма3

&НаКлиенте

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

Если ИмяСобытия = "Закрыть" Тогда

Закрыть();

КонецЕсли;

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

Вывод

Обработка оповещения – удобный и полезный инструмент по передаче параметров между открытыми формами, а так же позволяющий «реагировать» открытым ранее формам на какие-либо события, изменения или действия пользователя.

 
Правильно ли я понимаю, что процедура ПодключитьОбработчикОповещения() подключает дополнительный обработчик оповещения к уже существующим обработкам оповещения?
 
Цитата
user05 написал:
Правильно ли я понимаю, что процедура ПодключитьОбработчикОповещения() подключает дополнительный обработчик оповещения к уже существующим обработкам оповещения?
Совершенно верно.
 
Цитата
Дмитрий написал:
Цитата
user05 написал:
Правильно ли я понимаю, что процедура ПодключитьОбработчикОповещения() подключает дополнительный обработчик оповещения к уже существующим обработкам оповещения?
Совершенно верно.
Большое спасибо.
 
Так же, дополнительная информация по процедуре ПодключитьОбработчикОповещения():

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

Синтаксис:

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

Параметры:

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

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

Описание:

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

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

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

Пример:

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


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

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

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

Изменено: Дмитрий - 26.04.2022 16:24:03
Страницы: 1