1С порядок событий при проведении документа

рубрики: Документы | Дата: 3 Февраль, 2018

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

Но чтобы правильно выбрать ту или иную функцию для своего кода, необходимо представлять в какой последовательности выполняются эти функции и где они выполняются — на клиенте или на сервере.

Как всегда я призываю не принимать на веру любую теорию, а опробовать все самостоятельно на практике. Эксперименты будем проводить на платформе 8.3 с использованием управляемой формы документа. Для начала создадим любой документ с возможностью проведения и добавим в него форму. Далее откроем модуль формы и добавим в него все предопределенные процедуры связанные с записью документа. А чтобы в момент записи и проведения документ мог сам нам рассказать в какой последовательности выполняются предопределенные процедуры, в каждую из них вставим вызов сообщения с указанием имени процедуры.

В итоге получим вот такой код:

И такую же процедуру проделаем с модулем объекта:

А теперь посмотрим в какой последовательности отработают все вышеперечисленные события. Для этого откроем документ и нажмем кнопку Провести, т.е. выполним проведение документа из его формы. В итоге в окне сообщений получим следующую последовательность событий:

  • МодульФормы.ПередЗаписью
  • МодульФормы.ОбработкаПроверкиЗаполненияНаСервере
  • МодульОбъекта.ОбработкаПроверкиЗаполнения
  • МодульФормы.ПередЗаписьюНаСервере
  • МодульОбъекта.ПередЗаписью
  • МодульОбъекта.ПриЗаписи
  • МодульОбъекта.ОбработкаПроведения
  • МодульФормы.ПриЗаписиНаСервере
  • МодульФормы.ПослеЗаписиНаСервере
  • МодульФормы.ПослеЗаписи

Для наглядности представим информацию в графическом виде:

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

Читайте также:  Фенибут и триттико совместимость

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

(некоторые части теста скопированы и подкорректированы *12 ).

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

Ниже список предопределенных процедур, которые можно заучить *06

ИНТЕРАКТИВНЫЕ ВЫЗОВЫ ЗАПИСИ / ПРОВЕДЕНИЯ / ОТМЕНЫ ПРОВЕДЕНИЯ

ЗАПИСЬ документа

Форма. НаКлиенте. ПередЗаписью
Форма. НаСервере. ПередЗаписьюНаСервере
Модуль. ПередЗаписью
Модуль. ПриЗаписи
Форма. НаСервере. ПриЗаписиНаСервере
Форма. НаСервере. ПослеЗаписиНаСервере
Форма. НаКлиенте. ПослеЗаписи

ПРОВЕДЕНИЕ документа
Форма. НаКлиенте. ПередЗаписью
Форма. НаСервере. ОбработкаПроверкиЗаполненияНаСервере
Модуль. ОбработкаПроверкиЗаполнения
Форма. НаСервере. ПередЗаписьюНаСервере
Модуль. ПередЗаписью
Модуль. ПриЗаписи
Модуль. ОбработкаПроведения
Форма. НаСервере. ПриЗаписиНаСервере
Форма. НаСервере. ПослеЗаписиНаСервере
Форма . НаКлиенте. ПослеЗаписи

ОТМЕНА ПРОВЕДЕНИЯ документа

Форма. НаКлиенте. ПередЗаписью
Форма. НаСервере. ПередЗаписьюНаСервере
Модуль. ПередЗаписью
Модуль. ОбработкаУдаленияПроведения
Модуль. ПриЗаписи
Форма. НаСервере. ПриЗаписиНаСервере
Форма. НаСервере. ПослеЗаписиНаСервере
Форма. НаКлиенте. ПослеЗаписи

ПРОГРАММНЫЕ ВЫЗОВЫ ЗАПИСИ / ПРОВЕДЕНИЯ / ОТМЕНЫ ПРОВЕДЕНИЯ

ЗАПИСЬ документа

Модуль. ПередЗаписью
Модуль. ПриЗаписи

ПРОВЕДЕНИЕ документа

Модуль. ПередЗаписью
Модуль. ПриЗаписи
Модуль. ОбработкаПроведения

ОТМЕНА ПРОВЕДЕНИЯ документа

Модуль. ПередЗаписью
Модуль. ОбработкаУдаленияПроведения
Модуль. ПриЗаписи

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

Заливкой выделены события, выполняющиеся в транзакции записи.

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

Заливкой выделены события, выполняющиеся в транзакции записи.

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

Заливкой выделены события, выполняющиеся в транзакции записи.

Читайте также:  Узнать на какие сайты заходили через роутер

Обработчики событий

Расширение управляемой формы для документа. Возникает на клиенте перед выполнением записи объекта из формы. Процедура-обработчик данного события вызывается перед вызовом процедуры-обработчика события ПередЗаписью .

  • Отказ , тип Булево . Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина , запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь .
  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения». Параметр РежимПроведения может отсутствовать, если режим проведения в документе не определен.

Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере .

Расширение управляемой формы для документа. Вызывается перед записью объекта на сервере. Можно отменить запись. Выполняется вне транзакции.

  • Отказ , тип Булево . Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина , запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь .
  • ТекущийОбъект , тип ДокументОбъект.ИмяДокумента . Записываемый объект.
  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

Возникает перед выполнением записи объекта. Процедура-обработчик вызывается после начала транзакции записи, но до начала записи документа.

  • Отказ , тип Булево . Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина , то запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь .
  • РежимЗаписи , тип РежимЗаписиДокумента . В параметр передается текущий режим записи документа. Позволяет определить в теле процедуры режим записи. Изменение значения параметра позволяет изменить режим записи.
  • РежимПроведения , тип РежимПроведенияДокумента . В данный параметр передается текущий режим проведения. Изменение значения параметра позволяет изменить режим проведения.
Читайте также:  Эмулятор локальной сети для игр

Возникает при записи объекта. Процедура-обработчик вызывается после записи объекта в базу данных, но до окончания транзакции записи.

  • Отказ , тип Булево . Признак отказа от записи документа. Если в теле процедуры-обработчика установить данному параметру значение Истина , то запись документа выполнена не будет. Значение по умолчанию: Ложь .

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

  • Отказ , тип Булево . Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина , то запись произведена не будет. Значение по умолчанию: Ложь .
  • ТекущийОбъект , тип ДокументОбъект.ИмяДокумента . Записываемый документ.
  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

Расширение управляемой формы для документа. Вызывается после записи объекта на сервере и после завершения транзакции.

  • ТекущийОбъект , тип ДокументОбъект.ИмяДокумента . Записываемый объект.
  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

Расширение управляемой формы для документа. Возникает на сервере после записи объекта и после окончания транзакции записи, то есть к моменту вызова этой процедуры запись объекта полностью завершена.

  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере .

Оцените статью
Добавить комментарий

Adblock detector