Начать работу

OnCloseDocument - Событие закрытие документа

Событие закрытие документа.

Событие OnCloseDocument является одним из самым главным событием в системе и часто имеет достаточно обьемный код. Обработчик данного события призван решать следующие задачи :

  • Генерация заголовка документа
  • Генерация связей в бизнес-процессе
  • Проверка целостности и установка флагов по документу
  • Генерация учетной информации

Синтаксис вызова события :

PROCEDURE OnCloseDocument :
  define input parameter rid-doc as integer.

Где rid-doc - внутренний номер закрываемого в форме или обрабатываемого в автоматическом режиме документа.

Пример Использования:

PROCEDURE OnCloseDocument :
  define input parameter rid-doc as integer.
  define variable doc-date     as date.
  define variable doc-num      as integer.
  define variable doc-descr    as character.
  define variable doc-currency as integer initial 0.
  define variable doc-fil      as integer.
  define variable tovar        as character.
  define variable tovar-obj    as character.
  define variable sum          as decimal.
  define variable price        as decimal.
  define variable sumdoc       as decimal.
  define variable rows         as integer.
  define variable i            as integer.
  define variable whouse       as integer.
  define variable quantity     as decimal.
  define variable costs        as decimal.
  define variable sumpr        as decimal initial 0.
  define variable count        as character.
  define variable count-def    as character.
 
  run src/kernel/get_ffv.p ( "1:1", rid-doc ).
  doc-date = DATE ( RETURN-VALUE ).
  run src/kernel/get_ffv.p ( "1:2", rid-doc ).
  doc-num = INTEGER ( RETURN-VALUE ).
  run src/kernel/get_ffv.p ( "1:5", rid-doc ).
  whouse = INTEGER ( RETURN-VALUE ).
  run src/kernel/get_ffv.p ( "1:3", rid-doc ).
  doc-fil = INTEGER ( RETURN-VALUE ).
  run src/kernel/get_ffv.p ( "1:4", rid-doc ).
  sumdoc = DECIMAL ( RETURN-VALUE ).
  run src/kernel/get_ffv.p ( "1:6", rid-doc ).
  doc-descr = RETURN-VALUE.
  run src/kernel/get_ffv.p ( "1:7", rid-doc ).
  count-def = RETURN-VALUE.                    
 
  run src/kernel/get_tr.p ( 2, rid-doc, OUTPUT rows ).
  DO i = 1 TO rows :
    run src/kernel/get_ftv.p ( "2:2", rid-doc, i ).
    tovar = RETURN-VALUE.
    run src/kernel/wr_toobj.p ( tovar, OUTPUT tovar-obj ).
 
    run src/kernel/get_ftv.p ( "2:4", rid-doc, i ).
    quantity = DECIMAL ( RETURN-VALUE ).
    run src/kernel/get_ftv.p ( "2:3", rid-doc, i ).
    price = DECIMAL ( RETURN-VALUE ).
    costs =  ROUND ( price * quantity, 2).
    run src/kernel/get_ftv.p ( "2:6", rid-doc, i ).
    count = RETURN-VALUE.           
    if count = "" then count = count-def.
 
    run src/kernel/gen_opr.p ( rid-doc, doc-date,count,"719",
            tovar-obj,"", costs,0,0,0,quantity,
            doc-descr ).
    run src/kernel/wh_in.p ( rid-doc, doc-date, whouse, tovar-obj,
            quantity, costs ).
    run src/kernel/wh_own.p ( yes, count, 0, 0, no ).
  END.
  run src/kernel/gen_doc.p( rid-doc,doc-num,doc-fil,doc-date,doc-descr,
      sumdoc,doc-currency).
END.