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" ).



