Пример формирования Печатной формы документа с использованием 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" ).



