Управление заголовком в группированных отчетах

Управление заголовком в группированных отчетах

В некоторых отчетах или форматах печати экранных форм требуется с помощью одного печатного представления создавать несколько независимых отчетов. Например, в отчете по приходам по складам необходмимо вывести отдельный отчет по каждому складу, а в списке расходных накладных формировать отдельные счета-фактуры для каждого из выбранных документов. Для этого необходимо использовать группированные печатные представления с логической нумерацией страниц. В таком печатном представлении в заголовке странице требуется выводить не все значения фильтров, а только относящиеся к текущей группе.

Значения фильтров, по котором выполняется группировка, может возвращаться как в самом основном потоке отчета, так и в специально созданном потоке. Первая ситуация характерна для печатных представлений форматов экранных форм, вторая - для отчетов.

Если значения фильтров можно получить из основного потока, то для формирования группированного печатного представления достаточно:

При использовании специального потока со значениями фильтра требуется на вкладке «Code»:

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;