Описание инструмента
Создание папки с шаблоном отчета
Шаблон отчета должен распологаться по пути "отчеты\шаблоны печатных форм"
Создание шаблона docx
В новый документ docx добавить поля-метки. Метки добавляются следующим методом "Вставка" => "Экспресс-блоки" => "Поле: "Категория" = "Слияние" => "MERGEFIELD" => "Коды поля". Далее в кавычках добавляется название нового поля, например:
MERGEFIELD "Новое поле"
При создании поля важно проверять галку "Сохранять формат при обновлении", иначе потеряется форматирование при вставке текста в поле, если до этого туда вставляли HTML. Остальные чекбоксы при создании поля должны быть выключены.
Имя метки в настройках и вводимое имя поля должны совпадать.
Поддерживается как чистый HTML, так и HTML + CSS (передаётся единой строкой в СЭД сервис).
Поле для вставки HTML должно находиться на новой строке, отдельно от остального текста, вне таблиц и списков.
Описание шаблона
Создать файла tempate.xml, в котором:
- name - название шаблона, которое должно соотвествовать названию файла docx
- description - описание шаблона
- constructor - docx
- format - DOCX
<?xml version="1.1" encoding="UTF-8" standalone="yes"?> <ReportMetadataConfig name="{name}" description="{description}" constructor="docx"> <formats> <format>DOCX</format> </formats> </ReportMetadataConfig>
Описание меток
Описание меток происходит в файле ss_labels_settings.csv по пути "отчеты\описание меток", где:
- title - название метки в docх шаблоне. Обязательное.
expression - SpEL-выражение, с подключённым функционалом LabelPrint для вычисления значения, которое подставится вместо метки. Обязательное.
moduleorg - идентификатор приложения, получается через запрос. Не обязательное.
Пример. Запрос, который находит именное приложение организации "ИсхД" в пустом комплекте и возвращает его idselect mo.id from ss_moduleorg mo inner join ss_module m on m.id = mo.module inner join ss_moduletype mt on mt.id = m.type join SO_OrgSystem os on os.id = mo.organization join SO_StructureUnit su ON su.id = os.id where mt.alias = '{module}' AND m.complect='' AND m.isNamed=1 AND su.shortname = '{short name organization}'
- moduletype - тип модуля. Обязательное.
- organization - название организации, если используется мульти СО. Не обязательное.
TYPE_NAME=ss_labels_settings;KEYS=title,moduletype; title;expression;moduleorg;moduletype;organization {label};getDocumentFieldValue('{field name}');;"alias=""{module}""";
Подключение отчета к формированию пакета для загрузки
Конфигурация иморта отчетов
<?xml version="1.0" encoding="UTF-8"?> <report-import-config> <!-- Путь к конфигурационным файлам к описанию отчетов --> <csv> <!-- Описание шаблона --> <file-path>reports/descriptions/cp1251/report_template.csv</file-path> <!-- Описание отчета --> <file-path>reports/descriptions/cp1251/qr_report.csv</file-path> <!-- Указание ключевого слова --> <file-path>reports/descriptions/cp1251/qr_report_keyword.csv</file-path> <!-- Указание модуля --> <file-path>reports/descriptions/cp1251/qr_report_supported_type.csv</file-path> <!-- Указание дескриптора --> <file-path>reports/descriptions/cp1251/qr_reportviewdescription.csv</file-path> <!-- Метки шаблона --> <file-path>reports/descriptions/cp1251/ss_labels_settings.csv</file-path> </csv> <!-- Шаблоны отчетов --> <templates> <!-- Путь к шаблону --> <template> <file-path>reports/{path}/template.xml</file-path> <file-path>reports/{path}/{name}.docx</file-path> </template> </templates> </report-import-config>
Описание шаблона
TYPE_NAME=report_template;KEYS=name;; name;description;constructor;type {name};{description};docx;printform
Описание отчета
TYPE_NAME=QR_Report;KEYS=Name,Template;;;;;;; Name;Comment;Module;IsSelectionBased;Template;PredefinedParameters;DefaultParamFormula;DialogSchema;IsAvailableInAnalytics;notavailableinrepcoll;isprintimmediately;issendchlog;order {description};;select m.id from ss_module m inner join ss_moduletype mt on mt.id = m.type where mt.alias = 'QRCentre-AF5';true;"name=""{name}""";;;;false;false;false;false;60
Указание ключевого слова
TYPE_NAME=QR_ReportKeyword;KEYS=Report,Keyword Report;Keyword "name=""{description}""";{keyword}
Указание модуля
TYPE_NAME=QR_ReportSupportedType;KEYS=Report,ModuleType Report;ModuleType SELECT r.id FROM QR_Report r JOIN report_template rt on rt.id = r.template WHERE rt.name = '{name}';"alias=""{module}"""
Указание дескрипторов
TYPE_NAME=QR_ReportViewDescription;KEYS=Report,ViewDescription Report;ViewDescription SELECT r.id FROM QR_Report r JOIN report_template rt on rt.id = r.template WHERE rt.name = '{name}';{descriptor name}