Последовательность вызова обработчиков событий при открытии формы объекта
При открытии формы объекта, задействованы не только обработчики событий формы, но и модуль менеджера и модуль объекта. Перед рассмотрением последовательности вызова событий, хочу заметить, что количество обработчиков событий для модуля объекта и модуля формы равно не количеству отображаемых процедур в подсказке (см. рисунок 1), а на единицу больше.
У этих модулей дополнительно имеется обработчик, связанный с активацией модуля, т.е. тело модуля это и есть обработчик активации модуля, который не отображается в подсказке.
Последовательность вызова обработчиков событий при открытии формы объекта, например объекта Документ, включая активацию модуля, изображена на рисунке 2.
Описание последовательности:
1. Срабатывает обработчик события ОбработкаПолученияФормы() в модуле менеджера. Обработчик предназначен для переопределения открываемой формы, поэтому выполняется самым первым.
2. Срабатывает обработчик активации модуля формы на сервере, т.е. код, написанный в модуле формы, выполняется на стороне сервера.
3. Срабатывает обработчик активации модуля объекта, т.е. выполняется код, написанный в модуле объекта.
4. Если открывается форма для существующего объекта, то срабатывает обработчик ПриЧтенииНаСервере(). Обработчик вызывается при чтении объекта на сервере. Если создается новый объект, то обработчик игнорируется.
5. Срабатывает обработчик ПриСозданииНаСервере(), вызывается при создании формы на сервере.
6. Срабатывает обработчик активации модуля формы на клиенте, т.е. код, написанный в модуле формы, выполняется на стороне клиента.
7. Срабатывает обработчик ПриОткрытии(), вызывается при открытии формы на клиенте, до показа окна пользователю.
Заметьте, активация модуля формы выполняется два раза, первый раз на стороне сервера, второй раз на стороне клиента
Так же не стоит злоупотреблять изменением заголовков элементов или их видимость на стороне клиента, т.к. это приводит к неявной активации модуля формы на стороне сервера. Все дело в том, что, например, изменение видимости элементов приводит к перерисовке формы на стороне сервера (выполняется вызов сервера).
![]() |
Рисунок 1. Обработчики событий модуля объекта Документ |
Последовательность вызова обработчиков событий при открытии формы объекта, например объекта Документ, включая активацию модуля, изображена на рисунке 2.
![]() |
Рисунок 2. Последовательность вызова обработчиков событий при открытии формы |
1. Срабатывает обработчик события ОбработкаПолученияФормы() в модуле менеджера. Обработчик предназначен для переопределения открываемой формы, поэтому выполняется самым первым.
2. Срабатывает обработчик активации модуля формы на сервере, т.е. код, написанный в модуле формы, выполняется на стороне сервера.
3. Срабатывает обработчик активации модуля объекта, т.е. выполняется код, написанный в модуле объекта.
4. Если открывается форма для существующего объекта, то срабатывает обработчик ПриЧтенииНаСервере(). Обработчик вызывается при чтении объекта на сервере. Если создается новый объект, то обработчик игнорируется.
5. Срабатывает обработчик ПриСозданииНаСервере(), вызывается при создании формы на сервере.
6. Срабатывает обработчик активации модуля формы на клиенте, т.е. код, написанный в модуле формы, выполняется на стороне клиента.
7. Срабатывает обработчик ПриОткрытии(), вызывается при открытии формы на клиенте, до показа окна пользователю.
Заметьте, активация модуля формы выполняется два раза, первый раз на стороне сервера, второй раз на стороне клиента
Так же не стоит злоупотреблять изменением заголовков элементов или их видимость на стороне клиента, т.к. это приводит к неявной активации модуля формы на стороне сервера. Все дело в том, что, например, изменение видимости элементов приводит к перерисовке формы на стороне сервера (выполняется вызов сервера).
при открытии УПРАВЛЯЕМОЙ формы ... хотя это из текста понятно, но и в заголовке бы не помешало, сорри за некропост ))
ОтветитьУдалитьПропущен обработчик "ПриКопировании" модуля объекта, возникающий в определенном случае между активацией модуля объекта и обработчиком "ПриСозданииНаСервере" модуля формы.
ОтветитьУдалитьСпасибо, все четко и понятно
ОтветитьУдалитьОх, спасибо огромное!!!!!! Прям спасли этими объяснениями!
ОтветитьУдалитьполовину процедур автор где то потерял.
ОтветитьУдалитьДобавьте все процедуры в описание, помогите автору, а, заодно, и всем читателям.
УдалитьПри входе в ПриЧтенииНаСервере() у реквизита уже установлен ТолькоПросмотр. Где это могло произойти?
ОтветитьУдалитьНа самой форме смотрите в свойствах реквизита
Удалить