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

OnChoose - Событие нажатия кнопки документа

Событие нажатия кнопки документа.

Событие OnChoose - событие приходящее к полям типа кнопка при нажатии ее пользователем. 

Вы можете писать сложные обработчики на событие нажатие кнопки. Если документ имеет несколько кнопок, то нужный обработчик внутри события можно определить по коду нажатой кнопки из поля fld.

Замечание: Поля типа кнопка могут быть определены только для нетабличной части документа.

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

PROCEDURE OnChoose:

define input parameter rid-doc as integer.

define input parameter fld as character.

Где rid-doc - внутренний номер редактируемого в форме документа,

fld - поле для которого пришло данное событие.

 

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

define temp-table res no-undo
  field item     as char format "X(7)"   /* показатель */
  field sum-opr  as decimal
  field sum-prv  as decimal
  field is-sum   as logical init no
index i0 is primary item ascending .
 
define temp-table resa no-undo
    field item         as char format "X(7)"   /* показатель */
    field count        as char format "X(10)"   /* счет */
    FIELD plus-minus as character format "x(2)"       
    FIELD formula as character format "x(15)"          
    field sum-beg      as decimal format
    field sum-val      as decimal format
    field sum-end      as decimal format
    index i0 item count .
 

PROCEDURE OnChoose :
  define input parameter rid-doc as integer.                                    
  define input parameter fld as character.               
 
  define variable i    as integer.
  define variable j    as integer.
  define variable d-beg    as date.
  define variable d-end    as date.
  define variable rid-per       as integer.       /* rid периода           */
  define variable rid-per-prev  as integer.    /* rid пред. периода  */
  define variable id-curr       as integer.  /* валюта */
  define variable append-file as character.
 
  run src/kernel/get_ffv.p ( "1:1", rid-doc ).
  doc-date = date (return-value).
  run src/kernel/get_ffv.p ( "1:4", rid-doc ).  /* период */
  if return-value = "" then do:
     run src/message_alert.p ( "Не задан период").
     return.
  end.
  rid-per = INTEGER ( RETURN-VALUE ).
  run src/kernel/get_ffv.p ( "1:11", rid-doc ).  /* накоп. период */
  rid-per-prev = INTEGER ( RETURN-VALUE ).
  run src/kernel/get_ffv.p ( "1:5", rid-doc ).  /* валюта */
  id-curr = integer ( RETURN-VALUE ).
  run src/kernel/get_ffv.p ( "1:9", rid-doc ). 
  append-file = RETURN-VALUE.

  run src/kernel/get_ffv.p ( "1:13", rid-doc ).
  d-beg = date ( RETURN-VALUE ).
  run src/kernel/get_ffv.p ( "1:14", rid-doc ). 
  d-end = date ( RETURN-VALUE ).
  run src/kernel/get_ffv.p ( "1:10", rid-doc ).                      
  report-type = RETURN-VALUE.                                        

  run calc ( append-file, rid-per,rid-per-prev,id-curr, OUTPUT TABLE res, OUTPUT TABLE resa ).
 
  ModifyMode = no.
  i = 1.
  run src/kernel/deltable.p ( 2, rid-doc ).
  run src/kernel/deltable.p ( 3, rid-doc ).

  for each res by res.item:
    run src/kernel/set_ftv.p ("2:1", rid-doc,i ,res.item ).
    run src/kernel/set_ftv.p ("2:2", rid-doc,i ,string(round(res.sum-opr / 1000, 1)) ).
    run src/kernel/set_ftv.p ("2:3", rid-doc,i ,string(round(res.sum-prv / 1000, 1)) ).
    i = i + 1.
  end.
  i = 1.
  for each resa:
    run src/kernel/set_ftv.p ("3:1", rid-doc,i ,resa.item ).
    run src/kernel/set_ftv.p ("3:2", rid-doc,i ,string(resa.count )).
    run src/kernel/set_ftv.p ("3:3", rid-doc,i ,string(resa.plus-minus )).
    run src/kernel/set_ftv.p ("3:4", rid-doc,i ,string(resa.formula )).
    run src/kernel/set_ftv.p ("3:5", rid-doc,i ,string(resa.sum-beg )).
    run src/kernel/set_ftv.p ("3:6", rid-doc,i ,string(resa.sum-end )).
    run src/kernel/set_ftv.p ("3:7", rid-doc,i ,string(resa.sum-val )).
    i = i + 1.
  end.
  ModifyMode = yes.
END.