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

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.