Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Проверка заполнения
Дальше: Запись данных в базу данных

Событие «Перед записью на сервере»

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

Чем интересен этот обработчик? Как мы говорили выше, в процессе проверки заполнения произошло «разделение» формы на форму и прикладной объект, данные которого будут записаны в базу данных. Это определяет ряд особенностей дальнейшей работы.

Обработчик Перед записью на сервере – первый, в котором появляется возможность доступа как к данным основного реквизита формы (через его имя, как правило – Объект), так и к самому объекту, который будет записан. Этот объект система передает в обработчик в параметре ТекущийОбъект. Напомним описание вызова этого обработчика (листинг 3.30).

Листинг 3.30. Объявление обработчика события «Перед записью на сервере»

Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

Что важно понимать, находясь в этом обработчике? Данные, доступные через основной реквизит формы Объект, «мертвы». Мертвы в том смысле, что их изменение не даст никакого результата. Их можно только анализировать.

При этом также нужно понимать, что эти данные – не то, что будет записано в информационную базу. Это то, что «приехало» с клиента и «пережило» проверку заполнения. Поэтому и анализировать их можно только с точки зрения того, «а что же было».

А записан в информационную базу будет ТекущийОбъект. Отсюда еще два замечания:

Все попытки изменить данные через реквизит формы Объект ни к чему не приведут. В информационную базу эти данные записаны не будут, а перед тем как форма «поедет» обратно на клиент, ее данные будут замещены данными записанного в информационную базу объекта. Таким образом, все изменения, внесенные в Объект, пропадут.

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

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

Назад: Проверка заполнения
Дальше: Запись данных в базу данных