3.3.2. Построение отчета с помощью средств паскаль-операций¶
3.3.2.1. Стандартные средства паскаль-операций¶
Для построения отчёта из паскаль-операции необходимо вызвать один из следующих методов:
TbtkScriptSelectionObject.CreateReport
<PASCAL> Selection.CreateReport(GetVar('sSystemName'), null, rvmShow, 0, ,fcfModal); </PASCAL>
TbtkScriptSelectionObject.CreateReportEx
<PASCAL> Selection.CreateReportEx(GetVar('sSystemName'), null, rvmShow, 0, ,fcfModal, ['ParamName'], ['ParamValue']); </PASCAL>
О допустимых параметрах читайте ниже. Для каждого из типов шаблона они свои. Но есть общие параметры:
Название параметра | Описание |
---|---|
ShowPrintDialog | Управляет диалогом выбора принтера перед выводом на печать. Если параметр имеет значение «0», диалог выбора принтера отображаться не будет. Печать будет произведена на принтере по умолчанию |
PrinterName | Определяет принтер, на котором следует печатать |
CopiesCount | Параметр управляет количеством копий отчёта, которые будут напечатаны. Этот параметр имеет смысл только при печати без просмотра (режим rvmPrint) |
Collate | Разобрать по копиям. (по умолчанию = 1). При печати нескольких копий многостраничного документа сначала будут напечатаны все страницы первого экземпляра потом второго и т.д. |
3.3.2.2. Расширенные средства паскаль-операций¶
При желании заняться шаманством, или, если вам очень нужно указать источник шаблона самостоятельно (это может быть как выборка с полем Blob, в котором находится шаблон, так и файл на жестком диске), можно использовать метод:
<Sql>
<GetVer>
[OUT idPVer, sMasterSelection, sMastSelRepresent]
BEGIN
idPVer:=RPT_REPORTVERSIONAPI.GetReportVersion('TestReport2',:sMasterSelection, :sMastSelRepresent);
END;
</GetVer>
</Sql>
SQL блок возвращает ID версии отчёта, системное имя и отображение главной выборки мастера отчётов, по системному имени отчёта и дате (если дата не задана, берётся системная дата). Если вы не используете мастер, просто не используйте вернувшиеся значения: sMasterSelection и sMastSelRepresent
<PASCAL>
{Если шаблон отчёта хранится в базе данных, то необходимо открыть выборку, которая вернёт этот шаблон. Для этого необходимо найти ID актуальной версии отчёта}
V:=ExecSQLEX('GetVer','idpVer;sMasterSelection;sMastSelRepresent',[ftFloat,ftString,ftString],[0,,]);
C:=CreateSelection; C.EntityName:='RPT_CurrentReportVersion';
C.Representation:='List'; C.AddVar('idpReportVer#',V[0],ftFloat);
C.Master:=Selection; C.Active:=true; {Вызываем генерацию отчёта}
CreateReportForm(C, 'blobDocument', C.GetVar('sDocType'), , rvmShow, ,fcfModal);
</PASCAL>
Если шаблон отчёта хранится в базе данных, то необходимо открыть выборку, которая вернёт этот шаблон. Для этого необходимо найти ID актуальной версии отчёта