Шаблоны отчетов#
Шаблоны отчетов позволяют создавать документы различных форматов на основе данных системы. Поддерживаются форматы XLSX, DOCX и TXT с единым принципом разметки через специальные тэги.
Принцип разметки#
Шаблоны документов имеют одинаковую разметку. Научившись размечать шаблоны одного типа, можно создавать отчёты других типов.
Примечание
Раздел не относится к специализированным отчетам, таким как Jasper Reports.
Основным элементом разметки шаблона является тэг — текст, окружённый спецсимволами, который управляет формированием отчёта.
Все тэги имеют следующий вид: [#{значение}#]. Простейшим случаем является тэг, возвращающий значение атрибута строки: [#{имя атрибута}#].
С помощью таких тэгов обозначаются места, которые должны быть заполнены данными. Если в данных не будет найден атрибут или параметр с именем {имя атрибута}, текст будет заменён на пустую строку.
Для печати в отчёте набора данных предназначены переменные части, позволяющие выполнять запросы и выводить в отчёт данные с изменяющимся количеством строк.
Переменной частью называется область шаблона, ограниченная открывающим и закрывающим тэгами. Переменная часть будет выведена в отчёт столько раз, сколько записей находится в выборке.
Форматы тэгов для печати данных из запроса:
Открывающий тэг:
[#&{произвольное системное имя}={SQL-запрос}#]
Закрывающий тэг:
[#/{произвольное системное имя}#]
Переменная часть обязательно должна заканчиваться закрывающим тэгом, системное имя которого совпадает с системным именем открывающего тэга. Все системные имена открывающих тэгов начинаются с символа &, а закрывающие тэги — с символа /.
При выводе данных в отчёт из запроса открывающий тэг переменной части состоит из произвольного уникального (в рамках шаблона) имени и SQL-запроса. В этом случае для данной переменной части будет создан набор данных с запросом, указанным в тэге.
Переменные части могут быть вложенными друг в друга, образуя связку «мастер-деталь». Если из вложенного уровня (уровень «деталь») необходимо получить значение атрибута из запроса верхнего уровня (уровень «мастер»), следует использовать маркер следующего вида: [#super$sField#],
где sField — имя атрибута из SQL-запроса верхнего уровня.
При этом стоит отметить, что маркер [#sField#] тоже сработает, если атрибут sField присутствует только в запросе верхнего уровня. Если же он встречается в запросе нижнего уровня, то в печатной форме будет выведено значение из него.
Совет
Располагайте открывающие и закрывающие тэги на отдельных строках.
Выносите запросы переменных частей в выборки, если их длина превышает 1000 символов.
Шаблон xlsx#
Шаблоном xlsx является документ в формате xlsx, размеченный по общим правилам разметки шаблонов, описанным в предыдущем разделе.

Шаблон docx#
Шаблоном DOCX является документ в формате docx, размеченный по общим правилам разметки шаблонов.
Если создать отчёт с шаблоном DOCX и скопировать в него разметку из отчёта XLSX, результат построения будет таким же, как для XLSX. Отличия будут только в форматировании — данные будут теми же.
Шаблон TXT#
Шаблон на основе текстового файла был реализован для быстрой печати на матричных принтерах, поскольку печать текста происходит намного быстрее, чем печать графики или векторных шрифтов. Пример:
[#&Person=Select * from LBR_Person#]
Карточка читателя библиотеки №[#sMnemoCode#]
Фамилия: [#sSecondName#] Имя: [#sFirstName#]
Отчество: [#sMiddleName#] Дата рождения: [#dBirthDate#]
Телефон: [#sPhone#]
Список заказов
Рег. № Дата Состояние
[#&Orders=select o.*,
lbr_UserOrderAPI.GetIdState_HL(o.idState) as IdState_HL
from lbr_UserOrder o
where o.idUser = :super$id#]
[#nRegNumber#][#dDate#][#idState_HL#]
[#/Orders#]
[#/Person#]
Внимание
Открывающий тэг с запросом должен располагаться в одной строке!