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

Дизайн отчетов

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

Шаблоны

Для каждого из отчетов необходимо задать специальный файл (шаблон), который будет использоваться для построения результирующего документа. В качестве имени шаблона конкретного отчета используется <каноническое имя формы>_<имя первой группы объектов>, где каноническое имя формы включает её пространство имён, причём каждая . заменяется на _. Считается, что у пустой группы объектов нет имени, поэтому если первая группа объектов пустая, имя шаблона просто равняется каноническому имени формы (без постфикса _). Пустая группа объектов всегда является первой группой объектов формы, поэтому у формы всегда есть верхний отчет, называемый по одному только каноническому имени формы, без постфикса; если подотчеты не нужны, этот шаблон — единственный. Подотчеты возникают только из независимых друг от друга групп объектов: цепочка взаимозависимых групп (каждая фильтруется по объектам предыдущей) остаётся одним плоским отчетом под верхним шаблоном без постфикса, тогда как каждая независимая ветвь иерархии групп выделяется в отдельный подотчет. Каждый подотчет добавляет свой шаблон с постфиксом _<группа> по своей первой (непустой) группе объектов — так, например, форма с двумя независимыми группами объектов даёт три шаблона: верхний без постфикса и по одному на каждый из двух подотчетов.

При разработке шаблона разработчик может использовать в качестве полей свойства групп объектов, которые входят в соответствующий отчет или отчеты-предки. Имена и типы полей будут совпадать с именами и типами свойств на форме. Если один отчет является непосредственным потомком другого отчета, то он должен быть вставлен в шаблон как подотчет, при этом свойства и фильтры в нем в качестве значений верхних объектов будут использовать текущие значения объектов верхнего отчета.

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

Автоматический дизайн

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

Формат шаблона

В качестве конкретной реализации механизма формирования документов используется LGPL технология JasperReports. Соответственно шаблонами являются файлы формата jrxml, которые можно редактировать при помощи приложения JasperSoft Studio. В момент формирования отчета выполняется поиск файлов шаблонов с именем <имя шаблона>.jrxml в текущем classpath'е сервера (в том числе во всех подкаталогах). Если хоть один файл шаблона не был найден, платформа сгенерирует некоторый автоматический дизайн. Этот дизайн, при запуске сервера из IDE и формировании отчета в режиме предпросмотра, можно при помощи соответствующих кнопок сохранить в каталог запуска (и каталог исходников), после чего отредактировать в соответствии с требованиями задачи (при этом платформа будет автоматически синхронизировать файлы в каталоге запуска и каталоге исходников).

Язык

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