Последовательность вызова обработчиков событий при открытии управляемой формы (УФ)

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


Рисунок 1. Обработчики событий модуля объекта
У этих модулей дополнительно имеется обработчик, связанный с активацией модуля, т.е. тело модуля это и есть обработчик активации модуля, который не отображается в подсказке.

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


Рисунок 2. Последовательность вызова обработчиков событий при открытии формы
Описание последовательности:

1. Срабатывает обработчик события ОбработкаПолученияФормы() в модуле менеджера. Обработчик предназначен для переопределения открываемой формы, поэтому выполняется самым первым.

2. Срабатывает обработчик активации модуля формы на сервере, т.е. код, написанный в модуле формы, выполняется на стороне сервера.

3. Срабатывает обработчик активации модуля объекта, т.е. выполняется код, написанный в модуле объекта.

4. Если открывается форма для существующего объекта, то срабатывает обработчик ПриЧтенииНаСервере(). Обработчик вызывается при чтении объекта на сервере. Если создается новый объект, то обработчик игнорируется.

5. Срабатывает обработчик ПриСозданииНаСервере(), вызывается при создании формы на сервере.

6. Срабатывает обработчик активации модуля формы на клиенте, т.е. код, написанный в модуле формы, выполняется на стороне клиента.

7. Срабатывает обработчик ПриОткрытии(), вызывается при открытии формы на клиенте, до показа окна пользователю.

Заметьте, активация модуля формы выполняется два раза, первый раз на стороне сервера, второй раз на стороне клиента

Так же не стоит злоупотреблять изменением заголовков элементов или их видимость на стороне клиента, т.к. это приводит к неявной активации модуля формы на стороне сервера. Все дело в том, что, например, изменение видимости элементов приводит к перерисовке формы на стороне сервера (выполняется вызов сервера).

Добавить комментарий