1С-Предприятие 8.0. Практическое пособие разработчика

       

События, связанные с формой


События, обрабатываемые формой, довольно разнообразны и на них стоит остановиться отдельно.

Во-первых, для формы доступна обработка событий, связанных с изменением данных как самой формы, так и подчиненных форм. Поскольку данные формы могут быть самыми различными, определена только категория этих событий, но сами события определяются путем программного назначения обработчика конкретного события. Для этого используется метод объекта Форма – ПодключитьОбработчикИзмененияДанных() (есть и обратный метод – ОтключитьОбработчикИзмененияДанных()). В параметрах этого метода передается имя обработчика данных, а также путь к данным, изменение которых будет отлеживаться этим обработчиком.

Узнай больше!

В случае, когда в форме объекта редактируются дополнительные, логически связанные данные, существует два способа для отслеживания изменения объекта и синхронизации этих данных:



1.Для синхронизации данных, которые изменяются и записываются синхронно с объектом, нужно использовать событие расширения формы объекта – "ПриИзмененииДанных".

Примером таких данных могут служить наборы записей регистров у документа, или картинка у справочника.

2.Для синхронизации данных, которые редактируются и записываются отдельно от самого объекта, нужно использовать обработчик события изменения данных назначенный на изменения ссылки объекта.

Например, для формы справочника валют, в котором редактируется список курсов валюты, он может выглядеть следующим образом:

ПодключитьОбработчикИзмененияДанных( "СправочнжОбъект.Ссылка", "ПриИзмененииСсылки", Ложь); [547]

Сам же обработчик "ПриИзмененииСсылки()" будет выглядеть следующим образом:

Процедура ПриИзмененииСсылки(Путь)

   СписокКурсов.Отбор.Валюта.Установить(Ссылка);

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

Также для объекта Форма существует возможность указать обработчик ожидания, который будет вызываться в период ожидания системы каждый раз по истечению указанного интервала времени. Для этого используется метод ПодключитьОбработчикОжидания() (соответственно обратный метод ОтключитьОбработчикОжидания()). В параметрах этого метода передается имя обработчика и интервал, с которым он будет вызываться.




Кроме этого существует ряд событий, позволяющих формам взаимодействовать друг с другом.
Прежде всего это события, связанные с подчиненностью одной формы другой.
Во-первых, форма может обрабатывать событие ОбработкаАктивизацииОбъекта(), которое возникает при изменении активного объекта в одной из подчиненных форм или при вызове в одной из подчиненных форм метода ОповеститьОбАктивизацииОбъекта().
Во-вторых, форма может обрабатывать событие ОбработкаВыбора(), которое возникает при выборе объекта в одной из подчиненных форм или при вызове в одной из подчиненных форм метода ОповеститьОВыбореОбъекта().
В-третьих, форма может обрабатывать событие ОбработкаЗаписиНовогоОбъекта(), которое возникает при записи объекта в одной из подчиненных форм или при вызове в одной из подчиненных форм метода ОповеститьОЗаписиНовогоОбъекта().
Но кроме этих трех событий существует еще одно событие объекта Форма, которое позволяет взаимодействовать не только подчиненным, но вообще любым открытым формам. Это событие ОбработкаОповещения(), которое возникает при оповещении всех открытых форм методом глобального контекста Оповестить(). [548]
В заключение следует отметить одну интересную особенность в обработке события модуля приложения ОбработкаВнешнегоСобытия(). Это событие возникает при посылке внешним приложением сообщения, сформированного в специальном формате. Так вот, внешнее событие сначала будет предложено обработать всем открытым формам (по событию ВнешнееСобытие()), а затем уже это внешнее событие может быть обработано обработчиком модуля приложения. [549]
Содержание раздела