Последовательность выполнения событий при записи в регистр сведений
У объекта
Документ имеется свой набор событий, с помощью которых разработчик может вмешаться в процесс записи документа в базу данных используя обработчики этих событий. В зависимости от вида действия, которое выполнит пользователь, события документа вызываются в определенной последовательности.
Существуют следующие основные виды действий для документа:
- Записать
- Провести
- Провести и закрыть
- Отмена проведения
Рассмотрим последовательность выполнения событий при каждом действии.
Действие Записать
Для непроведенного документа последовательность выполнения событий при записи документа из формы будет следующей:
 |
1. Последовательность событий при записи документа |
- Модуль формы (&НаКлиенте) - перед записью;
- Модуль формы (&НаСервере) - перед записью на сервере;
- Модуль объекта - перед записью (начинается транзакция, документ еще не записан);
- Модуль объекта - при записи (документ записан);
- Модуль формы (&НаСервере) - при записи на сервере (фиксация транзакции);
- Модуль формы (&НаСервере) - после записи на сервере;
- Модуль формы (&НаКлиенте) - после записи.
Заметим, что для расширения формы документа платформа 1С по-умолчанию устанавливает значение
Истина для свойства
ПриЗаписиПерепроводить, поэтому, при записи проведенного документа из формы платформа 1С выполнит автоматически его перепроведение. В этом случае для проведенного документа последовательность выполнения событий при записи из формы будет следующей:
 |
2. Последовательность событий при записи проведенного документа |
- Модуль формы (&НаКлиенте) - перед записью;
- Модуль формы (&НаСервере) - обработка проверки заполнения на сервере;
- Модуль объекта - обработка проверки заполнения;
- Модуль формы (&НаСервере) - перед записью на сервере;
- Модуль объекта - перед записью (начало транзакции, документ еще не записан);
- Модуль объекта - при записи (документ записан);
- Модуль объекта - обработка проведения (формирование набора записей движений документа);
- Модуль формы (&НаСервере) - при записи на сервере (записан набор записей движений документа, фиксация транзакции);
- Модуль формы (&НаСервере) - после записи на сервере;
- Модуль формы (&НаКлиенте) - после записи.
Если для свойства
ПриЗаписиПерепроводить установить значение
Ложь, тогда последовательность выполнения событий при записи проведенного документа из формы будет такой же как и для непроведенного документа.
Последовательность выполнения событий при записи документа из формы, у которого запрещено проведение (свойство
Проведение установлено в значение
Запретить) будет следующей:
 |
3. Последовательность событий для не проводимого документа |
В отличии от документа, у которого разрешено проведения, в этом случае отсутствует событие
ОбработкаПроведения. Но, при записи проведенного документа с перепроведением и при записи документа, у которого запрещено проведение, кроме самой записи, в контексте формы и в контексте объекта вызывается также событие
ОбработкаПроверкиЗаполнения. Это событие вызывается расширением формы для проверки заполнения реквизитов при записи или при проведении документа в форме.
Действие Провести
При выполнении данного действия, то есть запись нового документа с проведением из формы, последовательность выполнения событий будет такая же как и у действия запись проведенного документа (см. рисунок 2).
Действие Провести и закрыть
Последовательность выполнения событий аналогична действию провести (см. рисунок 2).
Действие Отмена проведения
Данное действие инициирует запись документ и запускает следующую последовательность событий:
 |
4. Последовательность событий при отмене проведения документа |
- Модуль формы (&НаКлиенте) - перед записью;
- Модуль формы (&НаСервере) - перед записью на сервере;
- Модуль объекта - перед записью (начало транзакции);
- Модуль объекта - обработка удаления проведения (удаление движений);
- Модуль объекта - при записи (движения удалены, документ записан);
- Модуль формы (&НаСервере) - после записи на сервере (фиксация транзакции);
- Модуль формы (&НаКлиенте) - после записи.
Если действия выполняются не из формы (выполняются программно), отличия состоя в том, что не выполняются события формы!
Если сравнить этот пост с дивным золотым ювелирным украшением, то указание на диаграммах моментов срабатывания подписок на события стало бы сверкающим камушком на нём ))
ОтветитьУдалитьА где подписки???
ОтветитьУдалитьНа самостоятельное изучение ;)
Удалитьдобавил про подписки https://github.com/kuzyara/Sequences-of-events-for-1C-objects
Удалитьа где "ПриУстановкеНовогоНомера"?
ОтветитьУдалить1 - 15.07.12 - 18:48
Отрабатывает после события ПередЗаписью но перед ПриЗаписи.