Страница 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.
.}
Причём, можно ухитриться, и очистить шапку не в первом, а во втором проходе, или даже в середине напечатанной таблицы. :) Как говорится, было бы желание...