Печатное представление
Печатное представление формы состоит из набора шаблонов (отчетов), при под становке данных в которые происходит формирование документа в графическом формате (с пиксельным позиционированием) или псевдографическом (с позиционированием по ячейкам). Этот документ отображается пользователю при помощи специального графического компонента, внутри которого пользователь может осуществлять навигацию по страницам, приближение/отдаление внутри страниц, а также выводить содержимое компонента на печать или экспортировать в различные форматы (например PDF или Excel). При необходимости отображение компонента пользователю можно пропустить, и сразу отправить документ на печать или сохранить в выбранный файл в заданном формате.
Для каждого отчета определяется набор групп объектов формы, которые он будет отображать.
Иерархия отчетов
Также как и у группы объектов, у каждого отчета есть родительский отчет, таким образом все отчеты образуют иерархию. При этом иерархия отчетов должна :
- включать в себя иерархию групп объектов, то есть если группа объектов одного отчета является потомком группы объектов второго отчета, то первый отчет должен совпадать со вторым отчетом или также являться его потомком
- внутри одного отчета у каждой группы объектов должен быть ровно один потомок.
Построение иерархии отчетов
Как следует из ограничений на иерархию отчетов, в один отчет можно включать только "цепочки" групп объектов (то есть, G1, G2, G3, ... Gn, где G2 - единственный прямой потомок G1, G3 - единственный прямой потомок G2 и т.д.). Соответственно решение о том, как разбивать группы объектов на отчеты сводится к тому, надо ли сливать группу объектов с ее единственным прямым потомком (при наличии такого) или нет. По умолчанию, такое слияние выполняется, однако, при необходимости, разработчик может запретить его задав соответствующую опцию (SUBREPORT
) для группы объектов-потомка.
Использование этой опции сводится к тому, нужно ли отображать данные для группы объектов-родителя при отсутствии данных в группе объектов-потомке.
Пример построения иерархии отчетов
Форма такая же как и в примере построения иерархии групп объектов:
FORM myForm 'myForm'
OBJECTS A, B SUBREPORT, C, D, E
PROPERTIES f(B, C), g(A, C)
FILTERS c(E) = C, h(B, D)
;
Иерархия отчетов для этой формы будет построена следующим образом:
Язык
Использование всех вышеперечисленных возможностей, как и задание структуры формы, осуществляется при помощи инструкции 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';
}