Последовательность выполнения процедур записи, проведения, отмены проведения Документов в УП. Идея была взята с
Последовательность записи/проведения в обычных формах
(некоторые части теста скопированы и подкорректированы *12 ).
Для чего может пригодиться знание последовательности, в которой отрабатывают предопределенные процедуры модуля документа и модуля формы документа при Записи или Проведении или Отмены проведения.
Ответ прост - что бы правильно организовать обработку данных на разных
этапах и режимах проведения документа.
Ниже список предопределенных процедур, которые можно заучить *06
ИНТЕРАКТИВНЫЕ ВЫЗОВЫ ЗАПИСИ / ПРОВЕДЕНИЯ / ОТМЕНЫ ПРОВЕДЕНИЯ
ЗАПИСЬ документа
Форма. НаКлиенте. ПередЗаписью
Форма. НаСервере. ПередЗаписьюНаСервере
Модуль. ПередЗаписью
Модуль. ПриЗаписи
Форма. НаСервере. ПриЗаписиНаСервере
Форма. НаСервере. ПослеЗаписиНаСервере
Форма. НаКлиенте. ПослеЗаписи
ПРОВЕДЕНИЕ документа
Форма. НаКлиенте. ПередЗаписью
Форма. НаСервере. ОбработкаПроверкиЗаполненияНаСервере
Модуль. ОбработкаПроверкиЗаполнения
Форма. НаСервере. ПередЗаписьюНаСервере
Модуль. ПередЗаписью
Модуль. ПриЗаписи
Модуль. ОбработкаПроведения
Форма. НаСервере. ПриЗаписиНаСервере
Форма. НаСервере. ПослеЗаписиНаСервере
Форма . НаКлиенте. ПослеЗаписи
ОТМЕНА ПРОВЕДЕНИЯ документа
Форма. НаКлиенте. ПередЗаписью
Форма. НаСервере. ПередЗаписьюНаСервере
Модуль. ПередЗаписью
Модуль. ОбработкаУдаленияПроведения
Модуль. ПриЗаписи
Форма. НаСервере. ПриЗаписиНаСервере
Форма. НаСервере. ПослеЗаписиНаСервере
Форма. НаКлиенте. ПослеЗаписи
ПРОГРАММНЫЕ ВЫЗОВЫ ЗАПИСИ / ПРОВЕДЕНИЯ / ОТМЕНЫ ПРОВЕДЕНИЯ
ЗАПИСЬ документа
Модуль. ПередЗаписью
Модуль. ПриЗаписи
ПРОВЕДЕНИЕ документа
Модуль. ПередЗаписью
Модуль. ПриЗаписи
Модуль. ОбработкаПроведения
ОТМЕНА ПРОВЕДЕНИЯ документа
Модуль. ПередЗаписью
Модуль. ОбработкаУдаленияПроведения
Модуль. ПриЗаписи
P.S.: Знаю где-то в какой-то книженции это описано, но данные списки выведены опытным путем *17
Категория:
Документы
Последовательность выполнения ПередЗаписью(), ПриЗаписи(), ПослеЗаписи() и ОбработкаПроведения() ? Для чего может пригодиться знание последовательности, в которой отрабатывают такие предопределенные процедуры модуля документа и модуля формы документа, как ПередЗаписью(), ПриЗаписи(), ПослеЗаписи() и ОбработкаПроведения() ?
Ответ прост - что бы правильно организовать обработку данных на разных
этапах и режимах проведения документа.
Чтобы выяснить этот вопрос, Вы можете разместить вывод сообщений в указанных процедурах и посмотреть, в каком порядке они запускаются.
Итак, начнем с самого распространенного режима - проведение документа пользователем из его формы (проще говоря нажатием на кнопку "Провести" или "Ок" в форме документа).
Последовательность запуска процедур будет выглядеть следующим образом:
Форма. Перед записью.
Модуль. Перед записью.
Модуль. При записи.
Модуль. Обработка проведения.
Форма. При записи.
Форма. После записи.
При простой интерактивной записи документа (без проведения) порядок будет тот-же, за исключением процедуры ОбработкаПроведения(), которая в режиме записи не запускается. А при отмене проведения вместо нее запускается процедура ОбработкаОтменыПроведения();
На
этапах 1 и 2 Вы еще можете программно внести изменения в документ, если это требуется - запись документа в базу еще не произошла и транзакция записи еще не начата. Начиная с этапа 3 внести изменения уже не получится, т.к. процесс записи документа уже совершился, но транзакция еще не завершена. Транзакция завершится только после завершения этапа 5, когда все требуемые данные и движения документа будут полностью физически записаны в базу данных.
Теперь давайте рассмотрим проведение документа без открытия формы документа (с помощью обработки или из формы списка).
Последовательность запуска процедур будет выглядеть следующим образом:
Модуль. Перед записью.
Модуль. При записи.
Модуль. Обработка проведения.
Как видите, процедуры модуля формы не запустились.
Вывод: Если Вы хотите провести какие-то проверки в процессе оформления документа (т.е. пока он открыт у пользователя), и не хотите, чтобы они выполнялись например при регламентном перепроведении документов, то их следует располагать в модуле формы документа. В противном случае, если надо эти проверки проводить всегда, то код целесообразно разместить в модуле документа. Но при этом надо помнить, что в серверном варианте работы БД код модуля документа выполняется на сервере, поэтому обязательно надо помнить, какие методы программы работают на сервере, а какие нет.
Источник:
lessons1c Категория:
Документы