MyTetra Share
Делитесь знаниями!
Последовательность выполнения предопределенных процедур документа в 1С 8 при записи и проведении.
Время создания: 14.06.2012 16:54
Автор: Николай Николаев
Раздел: Компьютер - Windows - 1С - Готовые решения
Запись: xintrea/mytetra_syncro/master/base/1339678473staslca2c2/text.html на raw.github.com

Последовательность выполнения предопределенных процедур документа в 1С 8 при записи и проведении.

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

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

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

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

При простой интерактивной записи документа (без проведения) порядок будет тот-же, за исключением процедуры ОбработкаПроведения(), которая в режиме записи не запускается. А при отмене проведения вместо нее запускается процедура ОбработкаОтменыПроведения();

На этапах 1 и 2 Вы еще можете программно внести изменения в документ, если это требуется - запись документа в базу еще не произошла и транзакция записи еще не начата. Начиная с этапа 3 внести изменения уже не получится, т.к. процесс записи документа уже совершился, но транзакция еще не завершена. Транзакция завершится только после завершения этапа 5, когда все требуемые данные и движения документа будут полностью физически записаны в базу данных.

Теперь давайте рассмотрим проведение документа без открытия формы документа (с помощью обработки или из формы списка). Последовательность запуска процедур будет выглядеть следующим образом:

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

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

Вывод: Если Вы хотите провести какие-то проверки в процессе оформления документа (т.е. пока он открыт у пользователя), и не хотите, чтобы они выполнялись например при регламентном перепроведении документов, то их следует располагать в модуле формы документа. В противном случае, если надо эти проверки проводить всегда, то код целесообразно разместить в модуле документа. Но при этом надо помнить, что в серверном варианте работы БД код модуля документа выполняется на сервере, поэтому обязательно надо помнить, какие методы программы работают на сервере, а какие нет.

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования