© Tillypad 2008-2014
В некоторых отчетах или форматах печати экранных форм требуется с помощью одного печатного представления создавать несколько независимых отчетов. Например, в отчете по приходам по складам необходмимо вывести отдельный отчет по каждому складу, а в списке расходных накладных формировать отдельные счета-фактуры для каждого из выбранных документов. Для этого необходимо использовать группированные печатные представления с логической нумерацией страниц. В таком печатном представлении в заголовке странице требуется выводить не все значения фильтров, а только относящиеся к текущей группе.
Значения фильтров, по котором выполняется группировка, может возвращаться как в самом основном потоке отчета, так и в специально созданном потоке. Первая ситуация характерна для печатных представлений форматов экранных форм, вторая - для отчетов.
Если значения фильтров можно получить из основного потока, то для формирования группированного печатного представления достаточно:
в атрибуте «FilterNDataSet» указать название потока,
в атрибуте «FilterNFieldName» указать название поля, из которого будут получены значения фильтра.
атрибуту «FilterNFromCurrentRecord» присвоить значение «True»,
атрибуту «FilterNCaption» присвоить, если необходимо, значение для заголовка фильтра.
При использовании специального потока со значениями фильтра требуется на вкладке «Code»:
Создать глобальную переменную, например, FilterString
, и обработчик события OnBeforePrint
для компонента TssPageHeader.
В обработчике события необходимо предусмотреть фильтрацию специальных потоков по признаку группировки из основного потока, а также перезагрузку данных компонента TssPageHeader
.
var FilterString: String =''; procedure TssPageHeader2OnBeforePrint(Sender: TfrxComponent); begin if TssFastReportDataSet(MasterData1.DataSet).DisplayText('stor_ID') <> FilterStore then begin FilterStore := TssFastReportDataSet(MasterData1.DataSet).DisplayText('stor_ID'); // Фильтрация складов TssFastReportDataSet(Report.GetDataSet('Stores')) := 'SELECT FROM Main WHERE stor_ID='+FilterStore; // Фильтрация юридических лиц TssFastReportDataSet(Report.GetDataSet('OwnFirms')) := 'SELECT FROM Main WHERE stor_ID='+FilterStore; // Обновление данных в компоненте заголовка страниц TssPageHeader2.ReloadData; end; end;