Подписки на события
Подписки на события
Подписки на события позволяют назначать обработчики событий для одного объекта или группы объектов встроенного языка.
При добавлении новой подписки на событие, кроме общих свойств объектов конфигурации, следует указать источник события, само событие, обработчик которого назначается, и процедуру, являющуюся обработчиком этого события.
Источниками событий могут являться прикладные объекты, наборы записей регистров, менеджеры объектов конфигурации. Допускается как множественный выбор объектов, являющихся поставщиками событий, так и выбор всех объектов одного типа (например, все документы).
Выбор события осуществляется из выпадающего списка, причем список содержит те события, которые присутствуют во всех выбранных объектах. Если таких событий нет, список будет пуст.
Выбор обработчика события выполняется в окне, содержащем процедуры, которые могут быть назначены в качестве обработчика события. Такие процедуры должны удовлетворять следующим требованиям:
● Процедура должна быть расположена в общем модуле;
● У общего модуля, в котором расположена процедура, должны быть заданы следующие свойства:
● флажок Глобальный снят;
● флажок Клиент (обычное приложение) установлен;
● флажок Клиент (управляемое приложение) снят;
● флажок Сервер установлен;
● флажок Внешнее соединение установлен.
● Количество параметров процедуры должно быть на единицу больше, чем количество параметров, которое имеет обработчик выбранного события.
Это связано с тем, что дополнительно к параметрам, которые передаются системой в метод обработки события, передается еще и объект-источник данного события.
При наступлении указанного события выполняется следующая последовательность действий:
● Сначала отрабатывается событие в самом объекте и вызывается обработчик события, определенный в модуле объекта или набора записей. Если к прикладному решению подключены расширения конфигурации (см. здесь), то программный код, расширяющий обработчики событий, также исполняется на этом этапе.
● Если в процессе выполнения обработчика параметр Отказ установлен в значение Истина или вызвано исключение, действие прерывается.
● Затем в произвольном порядке вызываются внешние обработчики, назначенные для данного события.
● Если в процессе выполнения назначенного обработчика параметр Отказ установлен в значение Истина или вызвано исключение, действие
прерывается.
В качестве источника в назначенный обработчик передается сам объект (набор записей), вызвавший событие.
Назначенные обработчики событий вызываются в том же контексте, что и действие, вызвавшее событие. Если выполнение назначенного обработчика нужно перенести на сервер, следует вызывать в коде обработчика процедуру общего модуля, исполняемую на сервере.
Назначение обработчиков событий доступно также и средствами встроенного языка. Для этого используются операторы ДобавитьОбработчик и УдалитьОбработчик.
У объектов, которые могут являться источниками событий, есть свойство ДополнительныеСвойства типа Структура, позволяющее хранить информацию
между вызовами событий, например, новый или старый это объект.