OnAfterClose - Событие после закрытия документа
Событие после закрытия документа.
Событие OnAfterClose приходит после закрытия документа. По данному событию могут быть выполнены действия по созданию новых документов или задач в системе. Данное событие вынесено за рамки транзакции с документом и действия, выполняемые в данном документе исполняются в отдельной транзакции, независящей от редактирования самого документа.
Фактически данных механизм может быть задействован когда документ является не операционным, а сервисным, автоматизирующим некую операцию, Например создание других документов.
Синтаксис события:
PROCEDURE OnAfterClose:
define input parameter rid-doc as integer.
Где rid-doc - внутренний номер документа.
Пример использования:
PROCEDURE OnAfterClose:
define input parameter rid-doc as integer.
define variable date-creating as date.
define variable date-from as date.
define variable date-to as date.
define variable method as character.
define variable list-task as character.
define variable dataparam as character.
define variable done as character.
define variable put-on as character.
run src/kernel/get_ffv.p ("1:1", rid-doc) .
date-creating = date(return-value).
run src/kernel/get_ffv.p ("1:3", rid-doc).
date-from = date(return-value).
run src/kernel/get_ffv.p ("1:4", rid-doc).
date-to = date(return-value).
method = "1".
run src/kernel/get_ffv.p ("1:6", rid-doc) .
done = RETURN-VALUE.
run src/kernel/get_ffv.p ("1:9", rid-doc) .
put-on = RETURN-VALUE.
if done = "yes" then RETURN.
run src/query/doc2qt.p ( rid-doc, "ExecQuery", OUTPUT list-task ).
if NUM-ENTRIES (list-task) = 0 /* Перенаправить запуск на фоновую обработку */
then do:
dataparam = "rid-doc=" + STRING (rid-doc).
run src/query/createtask.p ( rid-doc, "",
"ExecQuery", "ServiceDoc", dataparam, "", "", 1 ).
DO TRANSACTION :
run src/kernel/set_ffv.p ( "1:5", rid-doc,
"Создана задача фонового создания документов" ).
Find First document WHERE document.rid-document = rid-doc
EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
IF AVAILABLE document
then document.descr = "Создана задача фонового создания документов".
END.
end.
else do:
run GenInvoices(rid-doc, date-from, date-to, date-creating, method, put-on).
end.
END.