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

src/kernel/doctask.p - Фоновая работа с документом

src/kernel/doctask.p
Фоновая обработка документа. Предназначена для выполнения действий с документом в фоновом режиме. Задача выполняется системными фоновыми процессами в порядке очереди.

define input parameter rid-doc as integer.             
define input parameter event as character.
Где rid-doc - внутренний номер документа.
Event – событие  на фоновую обработку.

Если event = ””  или event = “Recalc” – пересчет документа
Если event = “Exect” – Установить признак исполненности документа
Если event = “Puton” – Перевести документ из отложенных в проведенные
Если event = “Putoff” – Перевести документ из проведенных в отложенные
Если event = “keepon” – Поставить документ на хранение
Если event = “keepOff” – Снять документ с хранения
Если event = "CancelOut" - Отменить партионное списание по документу
Если event = “Delete” – Удалить документ

Замечание 1. Если документ заблокирован, система исполнит фоновую задачу после его освобождения. В автоматическом режиме.

Замечание 2. Некоторые операции могут завершится неуспешно. Например удаление документ невозможно по причине связей с другими документами. Также некоторые недоступны, если Документ стоит на хранении.

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

Пример 1. Пересчет документа основания, после закрытия текущего документа.

PROCEDURE OnAfterClose :
  define input parameter rid-doc as integer.
 
  define variable rid-main      as integer.
 
  run src/kernel/get_ffv.p ( "1:27", rid-doc ).
  rid-main = DECIMAL (RETURN-VALUE).
  run src/kernel/doctask.p ( rid-main, "Recalc" ).
END.                                            
Пример 2. Создание актов выполненных работ по счетам програмным режимом, с передачей функции пересчета и создания проводок по акту в отложенный фоновый режим.

     run src/kernel/tidtorid.p ( 145, OUTPUT rid-typedoc ).
     run src/kernel/new_doc2.p ( rid-typedoc, OUTPUT rid-akt ).          
     if rid-akt <> ? then do:
         run src/kernel/sendevnt.p ( rid-akt, 1).
         run src/kernel/set_ffv.p ( "1:1", rid-akt, STRING( date-create ) ).
         Find First document WHERE document.rid-doc = rid-akt NO-ERROR.
         IF AVAILABLE document then document.date-doc = date-create.
         run src/kernel/get_ffv.p ( "1:2", rid-akt ).
         IF AVAILABLE document then document.id-document = INTEGER (RETURN-VALUE) NO-ERROR.

         run src/kernel/set_ffv.p ( "1:18", rid-akt, STRING( rid-sch ) ).
         run src/kernel/set_ffv.p ( "1:19", rid-akt, "yes").
 
ModifyMode = no.
        run src/kernel/cp_fld.p ( rid-sch, "1:3,1:8,1:7,1:4,1:9,1:28,2:1,2:2,2:3,2:4,2:5,2:6,2:10",
                                  rid-akt, "1:3,1:4,1:5,1:15,1:25,1:9,2:1,2:2,2:3,2:4,2:5,2:6,2:7" ).
ModifyMode = yes.
   run src/kernel/get_tfun.p ( "2:5", rid-akt, 1, OUTPUT sum ).
   run src/kernel/set_ffv.p ( "1:8", rid-akt, STRING ( sum ) ).
   run src/kernel/get_tfun.p ( "2:6", rid-akt, 1, OUTPUT sum ).        
   run src/kernel/set_ffv.p ( "1:14", rid-akt, STRING ( sum ) ).

       run src/kernel/set_ffv.p ( "1:10", rid-akt, "" ).
       run src/kernel/doctask.p ( rid-akt, "Recalc" ).