Последовательность вызова обработчиков событий при открытии формы объекта

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

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

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

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

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

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

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

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

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

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

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

Комментарии

  1. при открытии УПРАВЛЯЕМОЙ формы ... хотя это из текста понятно, но и в заголовке бы не помешало, сорри за некропост ))

    ОтветитьУдалить
  2. Пропущен обработчик "ПриКопировании" модуля объекта, возникающий в определенном случае между активацией модуля объекта и обработчиком "ПриСозданииНаСервере" модуля формы.

    ОтветитьУдалить
  3. Спасибо, все четко и понятно

    ОтветитьУдалить
  4. Ох, спасибо огромное!!!!!! Прям спасли этими объяснениями!

    ОтветитьУдалить
  5. половину процедур автор где то потерял.

    ОтветитьУдалить
    Ответы
    1. Добавьте все процедуры в описание, помогите автору, а, заодно, и всем читателям.

      Удалить
  6. При входе в ПриЧтенииНаСервере() у реквизита уже установлен ТолькоПросмотр. Где это могло произойти?

    ОтветитьУдалить
    Ответы
    1. На самой форме смотрите в свойствах реквизита

      Удалить

Отправить комментарий