Страница 1 из 1
Оганизация вывода данных в slk
Добавлено: 20 сен 2011, 08:55
Marisha_P
Здравствуйте!
Подскажите, пожалуйста, можно ли и как это сделать, если можно, при выводе в отчет slk, который состоит из бланка авизо и расшифровки, сначала заполнить расшифровку, просчитав по ходу итоговые суммы, а потом вернуться в заголовок и заполнить его полученными данными?
Re: Оганизация вывода данных в slk
Добавлено: 20 сен 2011, 09:09
Semi-bit
Таки, если это делать на чистом слк, надо сначала рассчитать суммы, а потом уже всё печатать скопом. Если же подключить макросы, можно управиться и за один проход.
Код: Выделить всё
// после form.ShowFile
var sTempFileName: string;
sTempFileName := GetStringParameter('Files', 'OutputFilesDirectory', 0) + 'tmp.xls';
DeleteFile(sTempFileName);
xlCreateExcel(sTempFileName, false);// xlOpenExcel удаляет открытый файл, поэтому не используется
xlImportModule('Module.bas');
xlRunMacro('Macro');
xlCloseWorkbookByName(sTempFileName);
DeleteFile(sTempFileName);
xlKillExcel;
Собственно, в
Module.bas пишете простенький скрипт, который скопирует сумму, куда надо.
Re: Оганизация вывода данных в slk
Добавлено: 20 сен 2011, 17:02
oiko
Попробуйте так.
Обьявляете в форме таблицу в памяти.
В цикле выгрузки спецификации грузите данные в нее и считаете итог.
После всех циклов выводите заголовок с итогом, а затем цикл по этой табле с выгрузкой спецификации.
Re: Оганизация вывода данных в slk
Добавлено: 21 сен 2011, 08:30
Marisha_P
Спасибо большое, oiko!:) Так и сделала - отчет формируется достаточно быстро:)
Re: Оганизация вывода данных в slk
Добавлено: 21 сен 2011, 14:41
Marisha_P
а можно как-то организовать цикл вывода данных по таблице так, чтобы значения предыдущих ячеек не изменялись?
В первом столбце было фиксированное значение прописано изначально, а в следующем столбце выводился цикл значений из временной таблицы?
Например в шапку таблицы надо выгрузить список счетов из расшифровки:
-----------------------| дебет счета
Авизо акцептовано | 10.2
------------------------| 10.5
Или это можно сделать только макросом - путем копирования значений?
Re: Оганизация вывода данных в slk
Добавлено: 22 сен 2011, 08:19
Semi-bit
Marisha_P,
Конечно, можно!
Надо объявить переменную для шапки, и сделать цикл по таблице со списком счетов, очистив шапку в конце первого прохода:
Код: Выделить всё
.var
header: string;
.endvar
!... далее в коде
.begin
header := 'Авизо акцептовано';
end.
!... в процессе печати
.{table 'v_acc.Accounts'
.fields
header
Accounts.Num
.endfields
^ | ^ |
.begin
header := '';
end.
.}
Причём, можно ухитриться, и очистить шапку не в первом, а во втором проходе, или даже в середине напечатанной таблицы.

Как говорится, было бы желание...