Разработка в Облик Saas>Програмирование в Oblik-SaaS>События документа>OnAfterClose - Событие после закрытия документа
Начать работу

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.