Difference between revisions of "DB.Publish"
1>Admin (→Примеры) |
m (1 revision imported) |
(No difference)
|
Latest revision as of 10:44, 9 August 2022
Publish (Обработка документа) | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Функция выполняет процедуру обработки документа. Обработка -- условное название процесса изменения состояния документа. Обработанным называется документ, когда он имеет движения в накопителях (документ может иметь движения только в накопителях, закрепленных за ним в Студии), и его статус больше 1. Функция помогает свести совокупность изменений, происходящих при обработке документа в один вызов. При необходимости можно полностью эмулировать поведение этой функции, к примеру, когда необходимо загрузить документ с движениями из внешнего источника. Существует возможность также вызвать заданный в конфигурации обработчик без вызова самой функции (см. InvokeEvent). Функция не может быть вызвана для удаленных документов (имеющих статус 1). Функция последовательно выполняет следующие действия:
- Если для документа указан режим автоматической транзакции, функция инициирует режим транзакции и сохраняет состояние текущего документа во внутреннем буфере.
- Функция производит вызов события OnPublish, если оно задано в структуре метаданных проекта (см. Конфигурация данных проекта). Ожидается, что событие произведет проверку корректности и заполненности данных в документе, после чего, либо вернет ошибку (будет вызвано исключение), либо заблокирует нужные накопители и произведет их заполнение на основе информации документа.
- Если для документа указан режим автоматической транзакции, функция проверяет состояние документа. Если он имеет состояние изменен, функция производит вызов события метаданных OnSave. Событие может отменить попытку обработки (будет вызвано исключение).
- Также, если объект открыт для визуального редактирования и он имеет обязательные для заполнения реквизиты, эти реквизиты будут проверены на заполненность, если хотя бы один из них не заполнен, будет вызвано исключение.
- Будет произведена попытка сохранения измененного документа в базе данных (см. функцию Save).
- Будет установлена пометка обработки документа, если она пока не установлена на данном документе (см. PublishedMark)
- Будет произведено фиксирование транзакции CommitTransaction
- Если предусмотрено установками, создается соответствующая запись в таблице журнала регистрации событий. Функция заканчивает работу и возвращает управление вызвавшей программе.
- При наличии исключения на любом из этапов работы функции, если для документа указан режим автоматической транзакции, функция отменяет транзакцию и возвращает предыдущее состояние документа из внутреннего буфера.
Синтаксис
DB.Publish(<Параметр>,<Опция>)
Аргументы
<Параметр>,<Опция>
- (необязательный аргумент) Два необязательных параметра, которые будут доступны, как переменные Param и Option внутри обработчика события OnPublish.
Примеры
//Пример производит обработку документа с дополнительным параметром //Если обработка неудачна, событие ''OnPublish'' вернет текст ошибки, из которого функция Publish создает исключение //Чтобы отличить ошибку обработки от системных ошибок и ошибок сервера, пример проверяет код ошибки и, если это ошибка обработки, // оставляет только текст, удаляя из сообщения ошибки лишнюю информацию. сп:=List.Create(); сп.SetByName("ФорсироватьОбработку",1); Try аДок.Publish(сп); Except Стр:=PeekError(); If Pos("(80 at",Стр)=1 Then Стр:=PopError(4); Else Стр:=PopError(); EndIf; Message(Стр,"!"); EndTry;