OnGetContext - Событие контекста поля документа
Событие контекста поля документа.
Часто приходится сталкиваться с тем, что необходимо ограничить выбор данных или обработать данные на выбор в зависимости от других полей документа (контекста). Для того чтобы реализовать эту возможность, в систему введено событие OnGetContext. Типовое использование подобной возможности. Выбор Договора клиента по заданному клиенту. Или Выбор документа с фильтрацией на заданного клиента.
Синтаксис события:
PROCEDURE ONGetContext:
define input parameter rid-doc as integer.
define input parameter fld as character.
define input parameter row as integer.
Где rid-doc - внутренний номер редактируемого в форме документа, fld - поле для которого пришло данное событие, row - номер строки в табличной части документа.
Пример Использования:
PROCEDURE ONGetContext:
define input parameter rid-doc as integer.
define input parameter fld as character.
define input parameter row as integer.
define variable rc as character.
define variable rid-obj as INTEGER.
def var id-client as character.
if fld = "1:20" then /* Выбор аналитики согласно контекста балансового счета */
do:
run src/kernel/get_ffv.p ( "1:10", rid-doc ).
run src/kernel/getacobj.p ( RETURN-VALUE ).
rid-obj = INTEGER ( RETURN-VALUE ).
run src/kernel/ridtoobj.p ( rid-obj, OUTPUT rc ).
RETURN rc.
end.
if fld = "2:1" then RETURN "70,90,91,93,94,141,135". /* Ограничение на выбор видов документов из заданного списка */
if fld = "2:2" then /* Реализация контекстного поиска документов заданного клиента в зависимости от Типа выбранного документа */
do:
run src/kernel/get_ffv.p ( "1:4", rid-doc ).
id-client = RETURN-VALUE.
run src/kernel/get_ftv.p ( "2:1", rid-doc, row ).
rc = RETURN-VALUE.
if rc = "" then RETURN "-1".
case rc:
when "70" then RETURN (rc + ",1:7|" + id-client).
when "90" then RETURN (rc + ",1:7|" + id-client).
when "91" then RETURN (rc + ",1:7|" + id-client).
when "93" then RETURN (rc + ",1:4|" + id-client).
when "94" then RETURN (rc + ",1:7|" + id-client).
when "141" then RETURN (rc + ",1:7|" + id-client).
when "135" then RETURN (rc + ",1:4|" + id-client).
otherwise RETURN rc.
end case.
end.