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

Пример формирования Печатной формы документа с использованием XLS95

define input parameter rid-doc as integer.

{src/xls95/xls.i}


define variable doc-date    as date      format "99/99/9999".
define variable e-date      as date      format "99/99/9999".
define variable doc-num     as integer FORMAT ">>>>>9".
define variable rows        as integer.
define variable i           as integer   format ">>>>9".
define variable my-zkpo     as character FORMAT "X(10)".
define variable my-name     as character FORMAT "X(20)".
define variable boss        as character FORMAT "X(20)".
define variable adress      as character FORMAT "X(120)".
define variable client-name as character format "X(30)".
DEFINE VARIABLE my-text        AS CHARACTER FORMAT "X(250)".
 
define variable dt          as character format "X(50)".
define variable kt          as character format "X(50)".
define variable dt-a        as character format "X(50)".
define variable kt-a        as character format "X(50)".
define variable sum         as character format "X(50)".
define variable val         as character format "X(50)".
define variable t-kurs      as character format "X(5)".
define variable sum-val     as character format "X(50)".
define variable kol-vo      as character format "X(50)".
define variable soderg      as character format "X(50)".
define variable k           as integer.
define variable id-curr as integer.
define variable comp-curr as char.

define variable template as character .
define variable file     as character.
define variable mpage     as character.
 
 /* Получить данные из документа и отчета */
run src/kernel/get_ffv.p ( "1:1", rid-doc ).
doc-date = DATE ( RETURN-VALUE ).
 
run src/kernel/get_ffv.p ( "1:2", rid-doc ).
doc-num = INTEGER ( RETURN-VALUE ).
 
run src/kernel/getconst.p ( "Ф-ИмяКратко", doc-date ).
if return-value = "" then
   run src/kernel/getconst.p ( "Ф-Имя", doc-date ).
my-name = RETURN-VALUE.
run src/kernel/getconst.p ( "Ф-Директор", doc-date ).
boss = getSName2( return-value ).     /* ФИО в И.О.Фамилия */

run src/kernel/getconst.p ( "Ф-ЗКПО", doc-date ).
my-zkpo = RETURN-VALUE.
run src/kernel/getconst.p ( "Ф-адрес", doc-date ).
adress = REPLACE(RETURN-VALUE,"\n"," ").
 
RUN src/kernel/get_ffv.p ( "1:6", rid-doc ).
my-text = STRING( RETURN-VALUE ).
  run balance-curr (0, output id-curr, output comp-curr).
  comp-curr = "Сума(" + comp-curr + ")".

/* Получить шаблон отчета */  
  run src/xls95/gettenanttemp.p ("004.xls").
  template = RETURN-VALUE.  

/* Временный файл отчета */
  run src/system/getmpfi2.p ( "xls" ).
  file = RETURN-VALUE.
  mpage = "Print".         

/* Создание файла и страницы и копирование параметров в печатную форму */
  RUN src/xls95/XlWBook.p ( template, "OPEN").
  RUN src/xls95/XlWBook.p ( file, "CREATE").                      
  RUN src/xls95/XlWSheet.p ( file, mpage).                     
  run src/xls95/XlCopyPS.p ( template, mpage, file, mpage, "ALL").
  run src/xls95/copyregion.p (template, mpage, 0, 0, 8, 8, file, mpage, 0, 0 ).
 

/* Вывод данных в шаблон по координатам X-Y */

  run src/xls95/XlPutStr.p (file, mpage, 0, 0, my-name, "").
  run src/xls95/XlPutStr.p (file, mpage, 1, 0, my-zkpo, "").
  run src/xls95/XlPutStr.p (file, mpage, 1, 7, boss, "").
  run src/xls95/XlPutStr.p (file, mpage, 2, 0, adress, "").

  run src/xls95/XlPutStr.p (file, mpage, 4, 1, string(doc-date, "99/99/9999"), "").
  run src/xls95/XlPutDec.p (file, mpage, 5, 1, doc-num, "").
  run src/xls95/XlPutStr.p (file, mpage, 6, 1, my-text, "").
  run src/xls95/XlPutStr.p (file, mpage, 8, 7, comp-curr, "").

/* Получение данных из табличной части документа и вывод их в печатную форму */
k = 9.
run src/kernel/get_tr.p ( 2, rid-doc, OUTPUT rows ).
DO i = 1 to rows :
   run get_fts ( "2:1",  rid-doc, i, output dt ).
   run get_fts ( "2:2",  rid-doc, i, output kt ).
   run get_fts ( "2:3",  rid-doc, i, output dt-a ).
   run get_fts ( "2:4",  rid-doc, i, output kt-a ).
   run get_fts ( "2:5",  rid-doc, i, output sum ).
   if decimal(sum) = 0 then
      sum = "-".
   run get_fts ( "2:6",  rid-doc, i, output val ).
   run get_fts ( "2:7",  rid-doc, i, output t-kurs ).
   run get_fts ( "2:8",  rid-doc, i, output sum-val ).
   if decimal(sum-val) = 0 then
      sum-val = "-".
   run get_fts ( "2:9",  rid-doc, i, output kol-vo ).
   run get_fts ( "2:10", rid-doc, i, output soderg ).

  /* Копирование форматов табличной части из шаблона и вывод в ячейки */
   run src/xls95/copyregion.p (template, mpage, 9, 0, 9, 8, file, mpage, k , 0 ).
   run src/xls95/XlPutStr.p (file, mpage, k , 0, dt, "").
   run src/xls95/XlPutStr.p (file, mpage, k , 1, dt-a, "").
   run src/xls95/XlPutStr.p (file, mpage, k , 2, kt, ""   ).
   run src/xls95/XlPutStr.p (file, mpage, k , 3, kt-a, "" ).
   run src/xls95/XlPutStr.p (file, mpage, k , 4, soderg, "" ).
   run src/xls95/XlPutDec.p (file, mpage, k , 5, sum-val, "").
   run src/xls95/XlPutDec.p (file, mpage, k , 6, val, "" ).
   run src/xls95/XlPutDec.p (file, mpage, k , 7, sum, "").
   k = k + 1.
end.
 
  run src/xls95/copyregion.p (template, mpage, 10, 0, 11, 8, file, mpage, k , 0 ).
  run src/kernel/getconst.p ( "Ф-гол.бух.", doc-date ).
  run src/xls95/XlPutStr.p (file, mpage, k + 1, 4, return-value, "").
 

/* Закрытие файла Печатной формы и отправка его на вывод пользователю */
  RUN src/xls95/XlWBook.p ( file, "CLOSE").                       
  RUN src/prn_dvs.w ( false, "EXCEL#" + file , "OUT-ONLY=Yes" ).