Перейти к основному содержимому
Версия: 4.x

Печатное представление

Печатное представление формы состоит из набора шаблонов (отчетов), при подстановке данных в которые происходит формирование документа в графическом формате (с пиксельным позиционированием) или псевдографическом (с позиционированием по ячейкам). Этот документ отображается пользователю при помощи специального графического компонента, внутри которого пользователь может осуществлять навигацию по страницам, приближение/отдаление внутри страниц, а также выводить содержимое компонента на печать или экспортировать в различные форматы (например PDF или Excel). При необходимости отображение компонента пользователю можно пропустить, и сразу отправить документ на печать или сохранить в выбранный файл в заданном формате.

Для каждого отчета определяется набор групп объектов формы, которые он будет отображать.

Иерархия отчетов

Также как и у группы объектов, у каждого отчета есть родительский отчет, таким образом все отчеты образуют иерархию. При этом иерархия отчетов должна :

  • включать в себя иерархию групп объектов, то есть если группа объектов одного отчета является потомком группы объектов второго отчета, то первый отчет должен совпадать со вторым отчетом или также являться его потомком
  • внутри одного отчета у каждой группы объектов должен быть ровно один потомок.

Построение иерархии отчетов

Как следует из ограничений на иерархию отчетов, в один отчет можно включать только "цепочки" групп объектов (то есть, G1, G2, G3, ... Gn, где G2 - единственный прямой потомок G1, G3 - единственный прямой потомок G2 и т.д.). Соответственно решение о том, как разбивать группы объектов на отчеты сводится к тому, надо ли сливать группу объектов с ее единственным прямым потомком (при наличии такого) или нет. По умолчанию, такое слияние выполняется, однако, при необходимости, разработчик может запретить его задав соответствующую опцию (SUBREPORT) для группы объектов-потомка.

info

Использование этой опции сводится к тому, нужно ли отображать данные для группы объектов-родителя при отсутствии данных в группе объектов-потомке.

Пример построения иерархии отчетов

Форма такая же как и в примере построения иерархии групп объектов:


FORM myForm 'myForm'
OBJECTS A, B SUBREPORT, C, D, E
PROPERTIES f(B, C), g(A, C)
FILTERS c(E) = C, h(B, D)
;

Иерархия отчетов для этой формы будет построена следующим образом:

nullABпомечена какSUBREPORTCEnull AСEDDB

Язык

Использование всех вышеперечисленных возможностей, как и задание структуры формы, осуществляется при помощи инструкции FORM.

Открытие формы

Для отображения формы в печатном представлении используется соответствующий оператор открытия формы в печатном представлении.

Примеры

FORM printOrder
OBJECTS o = Order
PROPERTIES(o) currency, customer

OBJECTS d = OrderDetail
PROPERTIES(d) idSku, price
FILTERS order(d) == o
;

print (Order o) {
PRINT printOrder OBJECTS o = o; // выводим на печать

LOCAL file = FILE ();
PRINT printOrder OBJECTS o = o DOCX TO file;
open(file());

//v 2.0-2.1 syntax
LOCAL sheetName = STRING[255]();
sheetName() <- 'enctypted';
PRINT printOrder OBJECTS o = o XLS SHEET sheetName PASSWORD 'pass';

//v 2.2 syntax
//PRINT printOrder OBJECTS o = o XLS SHEET 'enctypted' PASSWORD 'pass';
}