Руководство прикладного разработчика#
Термины и определения#
Список терминов и определений приведен в одноименном разделе документа «Руководство по установке».
Системные требования#
Прикладному разработчику для подключения к компоненту Сервис генерации документов (DCGN) не требуется установка дополнительного ПО. В документе Руководство по установке представлен перечень внешних продуктов, используемых для установки, настройки и контроля.
Подключение и конфигурирование#
Компонент Сервис генерации документов (DCGN) обеспечивает создание электронных документов по размеченным шаблонам:
создание документов на основе данных, переданных в API инициатором при генерации;
создание документов с использованием одного из поддерживаемых движков:
JasperReport версии 6.16.0;
FreeMarker версии 2.3.30;
XDocReport версии 2.0.2;
создание документов в форматах: HTML, PDF, ODT, TXT, XLS, XLSX, RTF, CSV, XML, DOCX, ODS, PNG, PNG_WITH_TRANSPARENT и другие;
ведение реестра шаблонов документов с поддержкой версионности;
управление шаблонами печати (импорт, активация\деактивация шаблонов и их версий, просмотр подробной информации о версии).
Компонент Сервис генерации документов предназначен для изоляции прикладных бизнес-проектов от механизма создания электронных документов и обеспечения единого универсального подхода к реализации Сервиса по генерации документов. Компонент Сервис генерации документов состоит из следующих компонент:
Название компонента |
Ответственность компонента |
|---|---|
Docgen service |
Сервис формирования электронных документов. Предоставляет версионированное REST API для генерации документа. Потребителями сервиса являются бизнес-приложения |
Библиотека генерации документов |
JAR-библиотека, которую потребитель подключает в свое spring boot приложение, используя предоставленный spring-boot-starter, с целью формирования электронных документов |
Template provider |
Сервис для получения шаблонов, используемый как Сервисом генерации документов, так и Библиотекой генерации документов. Внутренний элемент компонента Сервис генерации документов для получения информации о необходимой версии шаблона, которая нужна для генерации документа |
Сервис админки UI Реестра шаблонов |
Пользовательский интерфейс для администрирования шаблонов. Администратор взаимодействует с приложением посредством браузера, инициируя обращения к сервису API для выполнения операций администрирования шаблонов |
Template registry |
Сервис импорта шаблонов. Сервис предоставляет REST API для импорта шаблонов документов |
Процесс подключения и конфигурирования компонента Сервис генерации документов пошагово и с примерами приведен в разделах «Бстрый старт» и «Использование программного продукта» настоящего документа.
Миграция на текущую версию#
Обновление до версии 1.2.0 производится администраторами по шагам, описанным в документе «Руководство по установке» раздел «Обновления».
Быстрый старт#
Для интеграции с копонентом Сервис генерации документов необходимо выполнить шаги:
Подготовить ZIP-архив шаблона (подробнее в разделе «Подготовка ZIP-архива» настоящего документа).
Произвести импорт шаблона через REST API (подробнее в разделе «Импорт шаблона документа» настоящего документа).
Для создания документов настроить подключение к (одним из способов):
Сервису генерации документов (подробнее в разделе «Docgen service» настоящего документа);
Библиотеке генерации документа (подробнее в разделе «Библиотека генерации электронного документа» настоящего документа).
Использование программного продукта#
Функции, выполняемые компонентом Сервис генерации документов:
Импорт ZIP-архива шаблона/версий шаблона документа в БД через template registry (подробнее в разделе «Импорт шаблона документа в БД» настоящего документа).
Формирование электронного документа на основе загруженного в БД шаблона (подробнее в разделе «Создание электронного документа» настоящего документа).
Импорт, экспорт, поиск и просмотр, а также создание ZIP-архивов шаблонов документов через пользовательский интерфейс (подробнее в разделе «Работа с шаблонами документов через пользовательский интерфейс» настоящего документа).
Импорт шаблона документа в БД#
Подготовка ZIP-архива#
Предварительным шагом импорта ZIP-архива шаблона является его подготовка. Подготовка возможна 2-мя способами:
Вручную (Описание приведено в настоящем документе).
В UI с помощью механизма создания ZIP-архива шаблона (Подробное описание приведено в документе «Руководство оператора»).
Порядок создания пользователем вручную ZIP-архива шаблона:
Подготовить шаблон/шаблоны. Это файлы, сформированные по правилам одной из поддерживаемых технологий (шаблонов движков):
JasperReport (файл формата jrxml);
FreeMarker (файл формата ftl);
XDocReport (файл формата odt).
Подготовить конфигурационный файл.
Подготовить файл/файлы, содержащий/содержащие ресурс по умолчанию в одном из ниже указанных форматов (в зависимости от выбранного шаблона движка).
Сформировать ZIP-архив.
Поддержка форматов ресурсов в разрезе шаблонов движков
Движок |
XDocReport (ODT) |
FreeMarker |
JasperReport |
|||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
исходящий формат |
исходящий формат |
исходящий формат |
||||||||||||||||
формат ресурсов |
HTML |
ODT |
TXT |
HTML |
HTML |
XLS |
XLSX |
RTF |
CSV |
XML |
DOCX |
ODS |
ODT |
TXT |
PNG |
PNG_WITH_TRANSPARENT |
||
PNG |
PNG |
PNG |
PNG |
~ |
PNG |
PNG |
PNG |
PNG |
PNG |
PNG |
~ |
PNG |
PNG |
PNG |
PNG |
~ |
PNG |
|
JPG |
JPG |
JPG |
JPG |
~ |
JPG |
JPG |
JPG |
JPG |
JPG |
JPG |
~ |
JPG |
JPG |
JPG |
JPG |
~ |
JPG |
JPG |
GIF |
GIF |
GIF |
GIF |
~ |
GIF |
GIF |
GIF |
GIF |
GIF |
GIF |
~ |
GIF |
GIF |
GIF |
GIF |
~ |
GIF |
GIF |
SVG |
~ |
SVG |
SVG |
~ |
SVG |
SVG |
SVG |
SVG |
SVG |
SVG |
~ |
SVG |
SVG |
SVG |
SVG |
~ |
SVG |
SVG |
TIFF |
~ |
~ |
~ |
~ |
TIFF |
TIFF |
~ |
TIFF |
TIFF |
TIFF |
~ |
TIFF |
TIFF |
TIFF |
TIFF |
~ |
TIFF |
TIFF |
BMP |
BMP |
BMP |
BMP |
~ |
~ |
~ |
BMP |
BMP |
BMP |
BMP |
~ |
BMP |
BMP |
BMP |
BMP |
~ |
BMP |
BMP |
XML |
~ |
~ |
~ |
~ |
~ |
XML |
XML |
XML |
XML |
XML |
XML |
XML |
XML |
XML |
XML |
XML |
XML |
XML |
JSON |
~ |
~ |
~ |
~ |
~ |
JSON |
JSON |
JSON |
JSON |
JSON |
JSON |
JSON |
JSON |
JSON |
JSON |
JSON |
JSON |
JSON |
CSV |
~ |
~ |
~ |
~ |
~ |
CSV |
CSV |
CSV |
CSV |
CSV |
CSV |
CSV |
CSV |
CSV |
CSV |
CSV |
CSV |
CSV |
XLS |
~ |
~ |
~ |
~ |
~ |
XLS |
XLS |
XLS |
XLS |
XLS |
XLS |
XLS |
XLS |
XLS |
XLS |
XLS |
XLS |
XLS |
XLSX |
~ |
~ |
~ |
~ |
~ |
XLSX |
XLSX |
XLSX |
XLSX |
XLSX |
XLSX |
XLSX |
XLSX |
XLSX |
XLSX |
XLSX |
XLSX |
XLSX |
Формат файла конфигурации
Название |
Тип |
Формат |
Описание |
Обязательность О/Н |
Пример |
|---|---|---|---|---|---|
templateCode |
string 128 |
^[a-zA-Z0-9_]+$ |
Код шаблона |
О |
«templateCode»: «client-profile» |
description |
string 256 |
- |
Описание шаблона |
О |
«description»: «Описание» |
selectionStrategy |
string |
выбор их двух значений: BASED_ON_DATE BASED_ON_CODE |
Стратегия выбора версии шаблона |
О |
«selectionStrategy»: «BASED_ON_DATE», |
activeVersions |
array |
- |
Секция для описания активной версии шаблона |
Н |
«activeVersions»: [ { «versionCode»: «version_2019», «description»: «первая версия», «activationDate»: «01.01.2019», «engine»: «XDOCREPORT_ODT_TEMPLATE», «defaultFormat»: «PDF», «templateFileName»: «template_2019.odt» } ] |
activeVersions.versionCode |
string 128 |
^[a-zA-Z0-9_]+$ |
Код версии. Уникальное значение, которое не может быть изменено со временем. |
О |
«versionCode»: «version_01 |
activeVersions.description |
string 256 |
Описание версии |
О |
«description»: «первая версия» |
|
activeVersions.activationDate |
string |
dd.MM.yyyy |
Дата, с которой шаблон считается активным. Заполнение обязательно для типа «BASED_ON_DATE». |
Н |
«activationDate»: «01.01.2019» |
activeVersions.engine |
string |
Возможно указание одного из значений: JASPERREPORT FREEMARKER XDOCREPORT_ODT_TEMPLATE |
Движок шаблона |
О |
«engine»: «XDOCREPORT_ODT_TEMPLATE» |
activeVersions.defaultFormat |
string |
Возможно указание одного из значений: PDF, HTML, XLS, XLSX, RTF, CSV, XML, DOCX, ODT, ODS, TXT, PNG_WITH_TRANSPARENT, PNG |
Исходящий формат документа по умолчанию |
О |
«defaultFormat»: «PDF» |
activeVersions.templateFileName |
string 256 |
^[a-zA-Z0-9_]+$ |
Имя файла шаблона |
Н |
«templateFileName»: «template.jrxml» |
activeVersions.resources |
Движки при создании документов поддерживают использование ресурсов. В этой секции описываются ресурсы, подставляемые по умолчанию. Движок FREEMARKER не поддерживает установку ресурсов по умолчанию, а только как передачу в параметрах на генерацию |
Н |
«resources»: [ { «name»: «logo», «fileName»: «resources/logo.png» } ] |
||
activeVersions.resources.name |
string 128 |
^[a-zA-Z0-9_]+$ |
Наименование ресурса |
О |
«name»: «logo» |
activeVersions.resources.fileName |
string 256 |
^[a-zA-Z0-9_]+$ |
Путь до ресурса |
О |
«fileName»: «resources/logo.png» |
archiveVersions |
array |
Секция для описания архивной версии шаблона |
Н |
«archiveVersions»: [ «version_2018» ] |
|
archiveVersion.versionCode |
string 128 |
^[a-zA-Z0-9_]+$ |
Код версии. Уникальное в рамках кода шаблона значение, которое не может быть изменено со временем. |
О |
«versionCode»: «version_02 |
Пример файла конфигурации (configuration.json)
{
"templateCode": "client-profile",
"description": "Анкета клиента",
"selectionStrategy": "BASED_ON_DATE",
"activeVersions": [
{
"versionCode": "version_2019",
"description": "первая версия",
"activationDate": "01.01.2019",
"engine": "XDOCREPORT_ODT_TEMPLATE",
"defaultFormat": "PDF",
"templateFileName": "template_2019.odt",
"resources": [
{
"name": "foto",
"fileName": "foto.png"
}
]
},
{
"versionCode": "version_2020",
"description": "вторая версия",
"activationDate": "01.01.2020",
"engine": "XDOCREPORT_ODT_TEMPLATE",
"defaultFormat": "PDF",
"templateFileName": "template_2020.odt",
"resources": [
{
"name": "foto",
"fileName": "foto.png"
}
]
}
],
"archiveVersions": [
"version_2018",
"version_2017"
]
}
Разработка шаблона JasperReport#
Компонент Сервис генерации документов использует версию 6.16.0, поэтому при создании шаблонов в Jaspersoft Studio необходимо установить режим совместимости с версией 6.16.0.
Движок JasperReport поддерживает вставку различных ресурсов. Для описания в шаблоне параметра, который затем получит в качестве значения ресурс, необходимо:
Добавить описание параметра с типом java.io.InputStream и именем, совпадающим с именем параметра в конфигурационном файле шаблона, через который будет получен ресурс. Пример:
<parameter name="IMAGE" class="io.InputStream"/>.Добавить описание получения данных из этого параметра:
Вставка картинки через тег image. Пример:
<image>
...
<imageExpression><![CDATA[$P{IMAGE}]]></imageExpression>
</image>
Вставка данных, используя готовые реализации DataSource от JasperReport:
получение данных из потока, представляющего содержимое csv файла — JRCsvDataSource;
получение данных из потока, представляющего содержимое xls файла — XlsDataSource;
получение данных из потока, представляющего содержимое xlsx файла — JRXlsxDataSource;
получение данных из потока, представляющего содержимое json файла — JsonDataSource;
получение данных из потока, представляющего содержимое как коллекция JRBeanCollectionDataSource.
Пример получения данных из CSV файла:
<datasetRun subDataset="dataSetForTable" uuid="46c55e0e-9e78-4c71-ab05-296d20941140">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRCsvDataSource($P{CSV_CONTENT})]]></dataSourceExpression>
</datasetRun>
JasperReport, кроме того, что экспортирует документы в популярные форматы, обладает обширными возможностями по обработке объектов. Использовать его стоит, если возникла потребность отображения в документе:
QR-code.
Изображения.
Диаграммы.
Таблицы или списки.
Для создания шаблонов JasperReport используется Jaspersoft Studio. Инструкция по разработке шаблонов документов с помощью Jaspersoft Studio приведена на официальном сайте Jaspersoft Studio.
Разработка шаблона FreeMarker#
DCGN использует Apache FreeMarker версии 2.3.30. Apache FreeMarker – это библиотека Java для генерации текста (HTML-страницы, электронные письма, файлы конфигурации, исходный код и другое) на основе шаблонов и изменяемых данных. Шаблон представляет собой текстовый файл или HTML-файл с конструкциями Freemarker (например, ${name}). Шаблон может содержать списки, строковые и арифметические операции, условные выражения, циклы, макросы и другое. Шаблоны написаны на простом специализированном языке шаблонов FreeMarker (FreeMarker Template Language, FTL).
Document Generation поддерживает следующие типы для передачи параметров ресурсов при генерации:
InputStream.
String.
Движок FreeMarker не поддерживает работу с ресурсами по умолчанию, но, если необходимо использовать в шаблоне изображения, их можно передавать в формате base64, в виде пути до файла либо в виде ссылки.
Для описания картинки, которая затем будет встроена, необходимо в шаблоне ftl добавить стандартный тег HTML: <img ... src="${image}" ... /> с установкой всех необходимых атрибутов (размер и т.д.), где image — название параметра в конфигурационном файле шаблона, через который будет получена картинка.
Пример шаблона с параметром с названием image
<html>
<head>
<meta charset="utf-8">
<title>Анкета сотрудника</title>
</head>
<body>
<h1>Анкета сотрудника</h1>
<img alt="Фото сотрудника" src="${image}" width=100 height=100 align="left"/>
</body>
</html>
Подробная инструкция о разработке шаблона документа для Apache FreeMarker приведена на официальном сайте.
Ограничения для шаблона Apache FreeMarker#
Разработка шаблона в Apache FreeMarker должна производиться с соблюдением следующих ограничений:
Не поддерживается обработка тега
<!DOCTYPE>;Не поддерживается обработка тега
<function>и вложенных в него тегов<return>и<local>;Не поддерживается обработка тега
<global>;Не поддерживается обработка смежных тегов
<import>и<include>;Не поддерживается обработка тега
<#macro>;Не поддерживается обработка тега
<noparse>;Не поддерживается обработка конструкции
<#list products?filter(p -> p.recommended) as product>(условия в списках);Не поддерживается built-in ?api;
Не поддерживаются вложенные лямбда-выражения;
Не поддерживаются сноски для PDF;
Параматры внутри тега
<#attempt>обрабатываются как обязательные;Выражение вида
${data/-id}обрабатывается как два параметра с названиями data и id, а не один параметр data-id.
Разработка шаблона XDocReport#
DCGN использует версию 2.0.2, XDocReport очень легок в использовании. Для работы с ним можно использовать любой из установленных на машине офисов: MS Office, LibreOffice или OpenOffice. DCGN поддерживает синтаксис: Freemarker. Например, Hello ${name} для движка XDocReport.
Формат загружаемых шаблонов, которые будут созданы с помощью движка, — odt. Используя движок XDocReport для разработки шаблона, DCGN позволяет создать выходной документ в одном из форматов: PDF, HTML, ODT. DCGN поддерживает InputStream тип для передачи параметров ресурсов при генерации. XDocReport поддерживает только вставку картинок в качестве ресурсов. Для добавления картинки, которая затем будет заменена, необходимо:
В шаблон формата .odt добавить картинку-заглушку.
Установить картинке имя, совпадающее с именем параметра в конфигурационном файле шаблона, через который будет получена картинка.
Картинку нужно добавить в целевое место и с желаемыми размерами. Полученная через параметр, с таким же именем картинка будет вставлена в то же место с теми же размерами (уменьшена, увеличена до размеров картинки-заглушки).
Инструкция по разработке шаблонов документов с помощью XDocReport приведена на странице https://github.com/opensagres/xdocreport/wiki/GettingStarted
Ограничения для шаблона XDocReport#
Разработка шаблона в XDocReport должна производиться с соблюдением следующих ограничений:
Не поддерживается обработка тега
<!DOCTYPE>;Не поддерживается обработка тега
<function>и вложенных в него тегов<return>и<local>;Не поддерживается обработка тега
<global>;Не поддерживается обработка смежных тегов
<import>и<include>;Не поддерживается обработка тега
<#macro>;Не поддерживается обработка тега
<noparse>;Не поддерживается обработка конструкции
<#list products?filter(p -> p.recommended) as product>(условия в списках);Не поддерживается built-in ?api;
Не поддерживаются сноски для PDF;
Не поддерживаются вложенные лямбда-выражения;
Параматры внутри тега
<#attempt>обрабатываются как обязательные;Выражение вида
${data/-id}обрабатывается как два параметра с названиями data и id, а не один параметр data-id.
Поддержка шрифтов#
При создании шаблона необходимо учесть наличие используемых в нем шрифтов в ОС, в которой будет создаваться документ. В противном случае при создании документа может возникать ошибка или не отображаться текст в созданном документе. Движок JasperReport имеет дополнительную возможность: при формировании печатной формы не устанавливать шрифты, а поставлять их как расширение библиотеки, которое подключает шрифты в момент формирования. DCGN подключает расширения:
jasperreports-font, которое содержит шрифты DejaVu;
jasperreports-fonts-liberation, которое содержит шрифты Liberation.
ВАЖНО! Шрифты Liberation — общее название трех семейств шрифтов TrueType: Liberation Sans, Liberation Serif и Liberation Mono. Они метрически эквивалентны коммерческим шрифтам компании Monotype: Arial, Times New Roman и Courier New. При указании шрифтов Monotype: Arial, Times New Roman и Courier New в разметке шаблонов движка JasperReport, документы будут генерироваться со шрифтами Liberation Sans, Liberation Serif и Liberation Mono соответственно.
Для шаблонизатора FreeMarker в форматы TXT и HTML не нужны шрифты в момент генерации отчета.
Для XDocReport при генерации в формат PDF необходимо, чтобы шрифт был на сервере в папке шрифтов ОС, где происходит генерация.
Если требуется использовать дополнительные шрифты, то их нужно добавить:
Если подключена Библиотека генерации документов, то установка дополнительных шрифтов производится самостоятельно.
Если подключен Docgen service, то установка шрифтов производится по запросу на доработку к команде разработки.
Добавление шрифтов на машину/контейнер при использовании библиотеки генерации:
В данном документе не рассматриваются вопросы скачивания данных шрифтов из первичных источников и загрузки файлов со шрифтами на сервер Linux. Установка шрифтов производится в подпапку в домашней директории для текущего пользователя.
Управление шрифтами в Linux осуществляется утилитой fontconfig, по умолчанию дистрибутив/базовый образ Linux должен содержать ее. Если нет, то необходимо установить пакет fontconfig.
Пример установки пакетным менеджером:
apt-get:
apt-get install fontconfig;yum:
yum install fontconfig.
По умолчанию пакет fontconfig уже содержит шрифты DejaVu.
Проверить наличие папки
~/.fonts(например, можно перейти в эту папку командойcd ~/.fonts).Если папка
~/.fontsотсутствует, создать ее командойmkdir ~/.fonts.Скопировать в эту папку файлы шрифтов (
cp –rvf ~/.fonts— заменить на папку, в которую были предварительно скачаны шрифты).Выполнить команду
fc-cache ~/.fonts.Убедиться, что шрифты установлены в системе, используя
fc-listдля просмотра доступных шрифтов.Проверить, что необходимые шрифты сконфигурированы в fonts.conf (для поиска
find / -name "fonts.conf").
Импорт шаблона документа#
Логика работы импорта ZIP-архива шаблона через REST API:
Выполняется отправка запроса на импорт шаблона со вложенным ZIP-архивом через REST API.
Template registry производит импорт шаблонов в БД и возвращает в ответ статус операции.
Если потребитель сервиса импорта поставляется компонентом Deploy Tools продукта Platform V DevOps Tools, то он должен содержать шаблоны для импорта в дистрибутиве в каталоге package/conf/data/dcgn_templates[/<deploymentUnit>], где
dcgn_templates — каталог, закрепленный за компонентом Сервис генерации документов;
<deploymentUnit>— необязательный каталог для данных, специфичных для конкретной единицы развертывания.
Каталог настраивается администратором при установке компонента Сервис генерации документов и настройке playbook для импорта шаблона.
Также при настройке своего сервиса для потребителя в файл subsystems.json в common репозитории Deploy Tools необходимо добавить параметр resourceName:
"DOCGEN_DEMO": { // наименование subsystem потребителя
"resourceName":"<заполнить>" // наименование resourceName, с которым будет производиться импорт шаблонов
}
Спецификация OpenAPI
Реестр шаблонов для импорта шаблонов поставляет спецификацию OpenApi версии 3.0.1. Реестр шаблонов для импорта шаблонов поставляет спецификацию OpenApi версии 3.0.1. Описание API приведено в Справочнике API «Open API template import service», в дистрибутиве с документацией описание API находится в каталоге docgen-documentation/documentation/apis/template-import-service/json.
Реестр шаблонов для импорта шаблонов предоставляет API с передачей ResourceName (rn) в path:
/api/v1/rn/{rn}/templates
Пример запроса по целевому варианту api на импорт шаблона test.zip
curl -X POST -H "Content-Type: application/octet-stream" --data-binary @{path/to/ZIP/archive} http://{host}:{port}/template-registry/api/v1/rn/{respourceName}/templates
Создание электронного документа#
Создание электронного документа доступно 2 способами:
Через Docgen service.
Через подключение Библиотеки генерации документов в своем приложении.
Docgen service#
Логика создания документа через Docgen service:
Приложение прикладного проекта отправляет запрос на создание документа с указанием параметров поиска шаблона, выходным форматом и данными для заполнения документа.
Сервис производит формирование документа и возвращает приложению байтовый набор созданного документа в указанном выходном формате.
Спецификация OpenAPI
Сервисом предоставляется спецификация OpenApi версии 3.0.1. Сервисом предоставляется спецификация OpenApi версии 3.0.1. Описание API приведено в Справочнике API «Open API document generation service», в дистрибутиве с документацией описание API находится в каталоге docgen-documentation/documentation/apis/document-generation-service/json.
Docgen service предоставляет API с передачей ResourceName (rn) в path:
/api/v1/rn/{rn}/document-on-date;
/api/v1/rn/{rn}/document-by-version-uid;
/api/v1/rn/{rn}/document-by-version-code.
Подключение и конфигурирование сервиса в Spring Boot Application
1.Необходимо создать rest client api по предоставленному OpenApi. Можно использовать любой opensource генератор.
Пример использования swagger-codegen-maven-plugin
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>docgen-demo-app</artifactId>
<properties>
<default.package>sber.platform.docgen.document.demo.rest</default.package>
</properties>
<dependencies>
<!-- HTTP client: Spring RestTemplate -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>3.0.27</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/openapi.json</inputSpec>
<language>java</language>
<apiPackage>${default.package}</apiPackage>
<modelPackage>${default.package}.dto</modelPackage>
<output>${project.basedir}/target/generated-sources</output>
<generateModelTests>false</generateModelTests>
<generateModelDocumentation>false</generateModelDocumentation>
<generateApiDocumentation>false</generateApiDocumentation>
<generateApiTests>false</generateApiTests>
<supportingFilesToGenerate>ApiClient.java,ApiKeyAuth.java,Authentication.java,HttpBasicAuth.java,OAuth.java,RFC3339DateFormat.java</supportingFilesToGenerate>
<configOptions>
<dateLibrary>java8</dateLibrary>
<library>resttemplate</library>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Результатом генерации будет rest client api, dto и другие вспомогательные классы.
Пример сгенерированного класса rest client api
@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.JavaClientCodegen", date = "2021-09-27T14:26:28.223889+03:00[Europe/Moscow]")@Component("sber.platform.docgen.document.demo.rest.DocumentGenerationControllerApi")
public class DocumentGenerationControllerApi {
private ApiClient apiClient;
public DocumentGenerationControllerApi() {
this(new ApiClient());
}
@Autowired
public DocumentGenerationControllerApi(ApiClient apiClient) {
this.apiClient = apiClient;
}
public ApiClient getApiClient() {
return apiClient;
}
public void setApiClient(ApiClient apiClient) {
this.apiClient = apiClient;
}
/**
* Создание документа
* Создание документа, используя шаблон с заданным кодом и его версию с переданным кодом.
* <p><b>400</b> — Bad Request
* <p><b>500</b> — Internal Server Error
* <p><b>200</b> — OK
* @param body The body parameter
* @param rn The rn parameter
* @return Document
* @throws RestClientException if an error occurs while attempting to invoke the API
*/
public Document createByVersionCode(CreationByVersionCodeRequest body, String rn) throws RestClientException {
Object postBody = body;
// verify the required parameter 'body' is set
if (body == null) {
throw new HttpClientErrorException(HttpStatus.BAD_REQUEST, "Missing the required parameter 'body' when calling createByVersionCode");
}
// verify the required parameter 'rn' is set
if (rn == null) {
throw new HttpClientErrorException(HttpStatus.BAD_REQUEST, "Missing the required parameter 'rn' when calling createByVersionCode");
}
// create path and map variables
final Map<String, Object> uriVariables = new HashMap<String, Object>();
uriVariables.put("rn", rn);
String path = UriComponentsBuilder.fromPath("/api/v1/rn/{rn}/document-by-version-code").buildAndExpand(uriVariables).toUriString();
final MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<String, String>();
final HttpHeaders headerParams = new HttpHeaders();
final MultiValueMap<String, Object> formParams = new LinkedMultiValueMap<String, Object>();
final String[] accepts = {
"*/*", "application/json"
};
final List<MediaType> accept = apiClient.selectHeaderAccept(accepts);
final String[] contentTypes = {
"application/json"
};
final MediaType contentType = apiClient.selectHeaderContentType(contentTypes);
String[] authNames = new String[] { };
ParameterizedTypeReference<Document> returnType = new ParameterizedTypeReference<Document>() {};
return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType);
}
/**
* Создание документа
* Создание документа, используя шаблон с переданным уникальным идентификатором. Уникальный идентификатор версии шаблона возвращается в результате создания документа в Document#getVersionUid() и может быть использован для гарантированного повторного создания документа по такому же шаблону и версии, даже в случае если версия была заменена.
* <p><b>400</b> — Bad Request
* <p><b>500</b> — Internal Server Error
* <p><b>200</b> — OK
* @param body The body parameter
* @param rn The rn parameter
* @return Document
* @throws RestClientException if an error occurs while attempting to invoke the API
*/
public Document createByVersionUid(CreationByVersionUidRequest body, String rn) throws RestClientException {
Object postBody = body;
// verify the required parameter 'body' is set
if (body == null) {
throw new HttpClientErrorException(HttpStatus.BAD_REQUEST, "Missing the required parameter 'body' when calling createByVersionUid");
}
// verify the required parameter 'rn' is set
if (rn == null) {
throw new HttpClientErrorException(HttpStatus.BAD_REQUEST, "Missing the required parameter 'rn' when calling createByVersionUid");
}
// create path and map variables
final Map<String, Object> uriVariables = new HashMap<String, Object>();
uriVariables.put("rn", rn);
String path = UriComponentsBuilder.fromPath("/api/v1/rn/{rn}/document-by-version-uid").buildAndExpand(uriVariables).toUriString();
final MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<String, String>();
final HttpHeaders headerParams = new HttpHeaders();
final MultiValueMap<String, Object> formParams = new LinkedMultiValueMap<String, Object>();
final String[] accepts = {
"*/*", "application/json"
};
final List<MediaType> accept = apiClient.selectHeaderAccept(accepts);
final String[] contentTypes = {
"application/json"
};
final MediaType contentType = apiClient.selectHeaderContentType(contentTypes);
String[] authNames = new String[] { };
ParameterizedTypeReference<Document> returnType = new ParameterizedTypeReference<Document>() {};
return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType);
}
/**
* Создание документа
* Создание документа, используя шаблон с заданным кодом и его версию, которая активна на переданную дату.
* <p><b>400</b> — Bad Request
* <p><b>500</b> — Internal Server Error
* <p><b>200</b> — OK
* @param body The body parameter
* @param rn The rn parameter
* @return Document
* @throws RestClientException if an error occurs while attempting to invoke the API
*/
public Document createToDate(CreationToDateRequest body, String rn) throws RestClientException {
Object postBody = body;
// verify the required parameter 'body' is set
if (body == null) {
throw new HttpClientErrorException(HttpStatus.BAD_REQUEST, "Missing the required parameter 'body' when calling createToDate");
}
// verify the required parameter 'rn' is set
if (rn == null) {
throw new HttpClientErrorException(HttpStatus.BAD_REQUEST, "Missing the required parameter 'rn' when calling createToDate");
}
// create path and map variables
final Map<String, Object> uriVariables = new HashMap<String, Object>();
uriVariables.put("rn", rn);
String path = UriComponentsBuilder.fromPath("/api/v1/rn/{rn}/document-on-date").buildAndExpand(uriVariables).toUriString();
final MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<String, String>();
final HttpHeaders headerParams = new HttpHeaders();
final MultiValueMap<String, Object> formParams = new LinkedMultiValueMap<String, Object>();
final String[] accepts = {
"*/*", "application/json"
};
final List<MediaType> accept = apiClient.selectHeaderAccept(accepts);
final String[] contentTypes = {
"application/json"
};
final MediaType contentType = apiClient.selectHeaderContentType(contentTypes);
String[] authNames = new String[] { };
ParameterizedTypeReference<Document> returnType = new ParameterizedTypeReference<Document>() {};
return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType);
}
}
Создать объект rest client api с указанием URL Сервиса генерации:
Пример создания объекта rest client api
@Value("${docgen.docgen-service-url}")
private String docgenServiceUrl;
@Bean
public DocumentGenerationControllerApi documentGenerationControllerApi(ConfigurationService configurationService) {
DocumentGenerationControllerApi documentControllerApi = new DocumentGenerationControllerApi();
documentControllerApi.getApiClient().setBasePath(configurationService.getDocgenServiceUrl());
return documentControllerApi;
}
Реализовать сервис использования сгенерированных API и создать его объект:
Пример использования сгенерированного API
public class DocumentGeneratorService {
private final DocumentGenerationControllerApi documentGenerationControllerApi;
private final String resourceName;
public DocumentGeneratorService(DocumentGenerationControllerApi api, String resourceName) {
this.documentGenerationControllerApi = api;
this.resourceName = resourceName;
}
public Document createByVersionCode(CreationByVersionCodeRequest request) {
return documentGenerationControllerApi.createByVersionCode(request, resourceName);
}
public Document createByVersionUid(CreationByVersionUidRequest request) {
return documentGenerationControllerApi.createByVersionUid(request, resourceName);
}
public Document createToDate(CreationToDateRequest request) {
return documentGenerationControllerApi.createToDate(request, resourceName);
}
}
Пример создания объекта сервиса, использующего сгенерированное API
@Value("${rn}")
private String resourceName;
@Bean
public DocumentGeneratorService documentGeneratorService(DocumentGenerationControllerApi documentGenerationControllerApi) {
return new DocumentGeneratorService(documentGenerationControllerApi, resourceName);
}
Примеры запросов
Запрос по коду версии
public Document createByVersionCode(String templateCode, String versionCode) {
TemplateParams templateParams = new TemplateParams();
templateParams.setTemplateCode(templateCode);
DocumentParams documentParams = new DocumentParams();
documentParams.setFormat(DocumentParams.FormatEnum.PDF);
CreationByVersionCodeRequest creationByVersionCodeRequest = new CreationByVersionCodeRequest();
creationByVersionCodeRequest.setVersionCode(versionCode);
creationByVersionCodeRequest.setTemplateParams(templateParams);
creationByVersionCodeRequest.setDocumentParams(documentParams);
return documentGeneratorService.createByVersionCode(creationByVersionCodeRequest);
}
Запрос по идентификатору версии
public Document createByVersionUid(String versionUid, String userName, String agreementType) {
HashMap<String, Object> data = new HashMap<>();
data.put("userName", userName);
data.put("agreementType", agreementType);
DocumentParams documentParams = new DocumentParams();
documentParams.setFormat(DocumentParams.FormatEnum.PDF);
documentParams.setParams(data);
CreationByVersionUidRequest creationByVersionUidRequest = new CreationByVersionUidRequest();
creationByVersionUidRequest.setVersionUid(versionUid);
creationByVersionUidRequest.setDocumentParams(documentParams);
return documentGeneratorService.createByVersionUid(creationByVersionUidRequest);
}
Запрос по дате
public Document createToDate(String templateCode, String userName, String agreementType, LocalDate createDate) {
TemplateParams templateParams = new TemplateParams();
templateParams.setTemplateCode(templateCode);
HashMap<String, Object> data = new HashMap<>();
data.put("userName", userName);
data.put("agreementType", agreementType);
DocumentParams documentParams = new DocumentParams();
documentParams.setFormat(DocumentParams.FormatEnum.PDF);
documentParams.setParams(data);
CreationToDateRequest creationToDateRequest = new CreationToDateRequest();
creationToDateRequest.setDocumentParams(documentParams);
creationToDateRequest.setTemplateParams(templateParams);
creationToDateRequest.setDocumentDate(createDate);
return documentGeneratorService.createToDate(creationToDateRequest);
}
Подключение модуля В случае, если DCGN включается в проект в составе платформы, то его необходимо сконфигурировать как указано выше. В случае, если DCGN подключается как отдельный программный продукт (с использованием Spring Boot), то шаги по интеграции с ним приведены в разделе «Быстрый старт» настоящего документа.
Библиотека генерации электронного документа#
Для формирования документов DCGN поставляет потребителям Библиотеку генерации документов - JAR-библиотеку, которую потребитель подключает в свое spring boot приложение, используя предоставленный spring-boot-starter.
Подключение библиотеки#
Для подключения библиотеки нужно добавить в pom.xml spring-boot приложения зависимость на spring-boot-starter библиотеки:
<dependency>
<groupId>sber.platform.docgen</groupId>
<artifactId>docgen-lib-spring-boot-starter</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
Создание сервиса генерации#
Генерация печатных форм осуществляется с помощью класса sber.platform.docgen.document.api.DocumentGenerator.
Экземпляр сервиса создается как spring bean в контексте приложения автоматически, тк подключен docgen-lib-spring-boot-starter.
Важно В случае подключения библиотеки генерации через spring-boot-starter из коробки, поддерживаются стандартные темы графиков для движка JasperReport (jasperreports-chart-themes). Если библиотека генерации подключена напрямую, без spring-boot-starter, то необходимо подключать зависимость jasperreports-chart-themes в свой проект самостоятельно.
Конфигурирование библиотеки#
Для работы библиотеки генерации печатных форм требуется обязательное наличие нижеперечисленных параметров:
rn — resourceName (идентификатор ресурса проекта);
dcgn.template-provider-url — URL до провайдера шаблонов.
Также есть необязательные параметры:
dcgn.filling-template-timeoutInMillis — Максимально допустимое время наполнения шаблона данными. Время получения шаблона из Реестра шаблонов не учитывается. Значение по умолчанию — 60000;
для оптимизации повторных запросов на генерацию документов по одному и тому же шаблону библиотека генерации кеширует шаблон, полученный из провайдера шаблонов;
доступны следующие настройки для кеша: — dcgn.cache-max-size — Максимальный размер кеша. Значение по умолчанию — 100; — dcgn.cache-evict-timeout-seconds — Период времени с момента получения шаблона из Реестра шаблонов, после которого шаблон вытесняется из кеша. Значение по умолчанию — 900.
Пример конфигурирования через application.yaml
rn: default
dcgn:
template-provider-url: http://localhost:8090/template-provider
filling-template-timeoutInMillis: 60000
cache-max-size: 100
cache-evict-timeout-seconds: 900
Использование сервиса генерации#
1. Запрос на создание документа по дате (createToDate)
Запрос на создание документа по шаблону с заданным кодом и его версии, которая активна в переданную дату.
Параметры для генерации документа:
код шаблона (templateCode);
поток (resultingStream), в который будет передан результат генерации;
дата (documentDate) документа, используемая для выбора версии шаблона, которая активна на текущую дату;
параметры для заполнения документа (documentParams);
требуемый формат генерируемого документа (format).
Пример запроса на генерацию документа по дате
ByteArrayOutputStream resultingStream= new ByteArrayOutputStream();
Map<String, Object> params = Collections.singletonMap("paramName", "paramValue");
CreationToDateParams creationParams = CreationToDateParams.builder()
.templateCode(templateCode)
.format(format)
.documentParams(documentParams)
.resultingStream(resultingStream)
.documentDate(documentDate)
.build();
DocumentInfo documentInfo = documentGenerator.createToDate(creationParams);
//documentGenerator является экземпляром класса sber.platform.docgen.document.api.DocumentGenerator
2. Запрос на создание документа по коду версии (createByVersionCode)
Запрос на создание документа по шаблону с заданным кодом и его версии с переданным кодом.
Параметры для генерации документа:
код шаблона (templateCode);
код версии шаблона (versionCode) поток (resultingStream), в который будет передан результат генерации;
параметры для заполнения документа (documentParams) требуемый формат генерируемого документа (format).
Пример запроса на генерацию документа по коду версии
ByteArrayOutputStream resultingStream= new ByteArrayOutputStream();
Map<String, Object> params = Collections.singletonMap("paramName", "paramValue");
CreationByVersionCodeParams creationParams = CreationByVersionCodeParams.builder()
.templateCode(templateCode)
.format(format)
.documentParams(documentParams)
.resultingStream(resultingStream)
.versionCode(versionCode)
.build();
DocumentInfo documentInfo = documentGenerator.createByVersionCode(creationParams);
//documentGenerator является экземпляром класса sber.platform.docgen.document.api.DocumentGenerator
3. Запрос на создание документа по идентификатору версии (createByVersionUid)
Запрос на создание документа по шаблону с переданным уникальным идентификатором версии. Уникальный идентификатор версии шаблона возвращается в результате создания документа и может быть использован для гарантированного повторного создания документа по такому же шаблону и версии, даже в случае если версия была заменена.
Параметры для генерации документа:
уникальный идентификатор версии (versionUid);
поток (resultingStream), в который будет передан результат генерации;
параметры для заполнения документа (documentParams);
требуемый формат генерируемого документа (format).
Пример запроса на генерацию документа по коду версии
ByteArrayOutputStream resultingStream= new ByteArrayOutputStream();
Map<String, Object> params = Collections.singletonMap("paramName", "paramValue");
CreationByVersionUidParams creationParams = CreationByVersionUidParams.builder()
.format(format)
.documentParams(documentParams)
.resultingStream(resultingStream)
.versionUid(versionUid)
.build();
DocumentInfo documentInfo = documentGenerator.createByVersionUid(creationParams);
//documentGenerator является экземпляром класса sber.platform.docgen.document.api.DocumentGenerator
Результатом для всех запросов генерации является объект DocumentInfo, который содержит:
Уникальный идентификатор версии шаблона, по которому создан документ
Формат созданного документа, указанный явно при запросе, если не указан, то получен из конфигурации шаблона.
Созданный документ записывается в переданный в запросе resultingStream.
Работа с шаблонами документов через пользовательский интерфейс#
Начиная с версии ПО 1.0.1 в компонент Сервис генерации документов поддерживает пользовательский интерфейс — приложение «Реестр шаблонов документов».
С помощью приложения «Реестр шаблонов документов» пользователь может:
Просмотреть:
реестр загруженных шаблонов документов;
шаблоны документов определенного ресурса проекта;
информацию о шаблоне и его версиях;
информацию о версии шаблона, его параметрах и ресурсах.
Импортировать шаблон с одной или несколькими версиями шаблона.
Экспортировать шаблон:
со всеми версиями в их текущем состоянии;
только с выбранной активной версией шаблона.
Создать ZIP-архив шаблона для импорта:
на основе существующего ZIP-архива шаблона;
новый на основе шаблона документа.
Порядок получения доступа к UI и правила работы с UI приведены в документе «Руководство оператора» в разделе «Использование приложения оператором».
Часто встречающиеся проблемы и пути их устранения#
В работе компонента Сервис генерации документов предусмотрено получение пользователем следующих ошибок:
Ошибки Template Registry#
Пользовательские ошибки#
Код ошибки |
Текст ошибки |
Текст ошибки (ru) |
Описание |
|---|---|---|---|
400 |
The maximum length of rn = <{имя ресурса проекта}> has been exceeded. Maximum allowed number of characters: <{максимальное число символов для имени ресурса проекта} |
Превышена максимальная длина rn = <{имя ресурса проекта}>. Максимально допустимое количество символов: <{максимальное число символов для имени ресурса проекта}> |
При импорте шаблона указанное имя ресурсов проектов содержит превышает максимально допустимую длину |
400 |
The contents of the file <{наименование передаваемого архива}> are not<{формат архива}> an archive. Archives in the <{формат}> format are supported |
Содержимое файла <{наименование передаваемого архива}> не является <{формат архива}> архивом. Поддерживаются архивы в формате <{формат}> |
Ошибка возникает при импорте в момент загрузки файла, содержимое которого не является архивом |
400 |
Error when reading the contents of the archive. The names of files or folders in the archive contain invalid characters. It is allowed to use only characters from the ASCII table |
Ошибка при чтении содержимого архива. Названия файлов или папок в архиве содержат недопустимые символы. Разрешено использовать только символы из таблицы ASCII. |
Ошибка возникает при разборе импортируемого шаблона в момент чтения содержимого архива: названия файлов или папок в архиве содержат недопустимые символы. |
400 |
Configuration file <{имя ожидаемого конфигурационного файла}> not found |
Файл конфигурации <{имя ожидаемого конфигурационного файла}> не найден |
Ошибка возникает при импорте шаблона: в архиве импортируемого шаблона не найден json-файл конфигурации |
400 |
Файл конфигурации пустой |
Ошибка возникает при импорте шаблона: в архиве импортируемого шаблона пустой json-файл конфигурации |
|
400 |
Incorrect structure or contents of the configuration file: {наименование конфигурационного файла } |
Некорректная структура или содержимое файла конфигурации: {наименование конфигурационного файла} |
Ошибка возникает при импорте шаблона: в архиве некорректная структура или содержание json-файла конфигурации |
400 |
Violation of restrictions in the configuration file: {список нарушений/ошибок} |
Нарушение ограничений в файле конфигурации: {список нарушений/ошибок} |
Ошибка возникает при импорте шаблона: обнаружено нарушение установленных ограничений на поля в файле конфигурации |
400 |
The activation date is already used for the version with the code <{код версии шаблона, использующий задаваемую дату}>. Template code: <{код шаблона, содержащий обе версии: импортируемую и загруженную ранее}> |
Дата активации уже используется у версии с кодом <{код версии шаблона, использующий задаваемую дату}>. Код шаблона: <{код шаблона, содержащий обе версии: импортируемую и загруженную ранее}> |
Ошибка возникает при разборе импортируемого шаблона: обнаружена существующая (ранее загруженная) версия шаблона с указанной датой для этого шаблона |
400 |
Changing the version selection strategy from <{одна из (по коду версии или по UID) — указанная ранее в шаблоне}> to <{другая из этих возможных стратегий- указанная в импортируемом шаблоне}> is not allowed. Template code: <{код импортируемого шаблона}> |
Изменение стратегии выбора версии с <{одна из (по коду версии или по UID) — указанная ранее в шаблоне}> на <{другая из этих возможных стратегий- указанная в импортируемом шаблоне}> недопустимо. Код шаблона: <{код импортируемого шаблона}> |
Ошибка возникает при сохранении архивной версии: запрещено добавлять или изменять архивную версию шаблона |
400 |
Violation of restrictions in the configuration file: Parameter <{параметр, описанный в конфигурационном файле}>, error: <{список нарушений}> |
Нарушение ограничений в файле конфигурации: Параметр <{параметр, описанный в конфигурационном файле}>, ошибка: <{список нарушений}> |
Ошибка возникает при импорте шаблона: обнаружено нарушение ограничений на поля, заданных в файле конфигурации. Указанный в сообщении параметр содержит ошибку |
400 |
Violation of restrictions in the configuration file: Resource <{имя файла ресурса}> of version with code <{код импортируемой версии шаблона}> not found |
Нарушение ограничений в файле конфигурации: Ресурс <{имя файла ресурса}> версии с кодом <{код импортируемой версии шаблона}> не найден |
Ошибка возникает при разборе импортируемого шаблона: указанный ресурс в версии с заданным кодом не найден |
400 |
Violation of restrictions in the configuration file: Resource <{имя файла ресурса}> of version with code <{код импортируемой версии шаблона}> an default format <{формат, заданный как формат по умолчанию в версии шаблона}> is not supported by the engine <{движок, указанный версии шаблона}> |
Нарушение ограничений в файле конфигурации: Ресурс <{имя файла ресурса}> версии с кодом <{код импортируемой версии шаблона}> и форматом по умолчанию <{формат, заданный как формат по умолчанию в версии шаблона}> не поддерживается движком <{движок, указанный версии шаблона}> |
Ошибка возникает при разборе импортируемого шаблона: указанный ресурс в версии с заданным кодом и выбранным форматом по умолчанию не поддерживается заданным движком. Поддерживаемые форматы в разрезе движков приведены в настоящем документе |
400 |
Violation of restrictions in the configuration file: Template file <{название импортируемого файла шаблона}> of version with code <{код версии, указываемый в запросе на импорт}> not found |
Нарушение ограничений в файле конфигурации: Файл шаблона <{название импортируемого файла шаблона}> версии с кодом <{код версии, указываемый в запросе на импорт}> не найден |
Ошибка возникает при разборе импортируемого архива: файл шаблона заданной версии с указанным кодом не найден |
400 |
Violation of restrictions in the configuration file: The version with the code <{код импортируемой версии}> contains an incorrect template file (<{наименование файла импортируемой версии шаблона}>) for the engine <{наименование движка}>. Error: <{текст ошибки}> |
Нарушение ограничений в файле конфигурации: Версия с кодом <{код импортируемой версии}> содержит некорректный файл шаблона (<{наименование файла импортируемой версии шаблона}>) для движка <{наименование движка}>. Ошибка: <{текст ошибки}> |
Ошибка возникает при импорте шаблона: заданная версия шаблона содержит некорректный файл шаблона для указанного движка |
400 |
Violation of restrictions in the configuration file: The engine <{наименование движка}> specified in the version with the code <{код импортируемой версии шаблона}> does not support the template in the format <{расширение файла шаблона}> |
Нарушение ограничений в файле конфигурации: Движок <{наименование движка}>, указанный в версии с кодом <{код импортируемой версии шаблона}>, не поддерживает шаблон в формате <{расширение файла шаблона}> |
Ошибка возникает при импорте шаблона: движок, заданный в версии с указанным кодом, не поддерживает шаблон в выбранном формате |
400 |
Duplicate version codes were found in <{наименование параметра в структуре конфигурационного файла, описывающее версии}>: <{перечислены дублирующие коды версий шаблонов}> |
В <{наименование параметра в структуре конфигурационного файла, описывающее версии}> обнаружен дублирующие коды версий: <{перечислены дублирующие коды версий шаблонов} |
Ошибка возникает при разборе импортируемого архива: в архиве обнаружены дублирующие коды версий |
400 |
Duplicate activation dates found in <{наименование параметра в структуре конфигурационного файла, описывающее версии}>: <{дублирующие даты}> |
В <{наименование параметра в структуре конфигурационного файла, описывающее версии}> обнаружены дублирующие даты активации: <{дублирующие даты}> |
Ошибка возникает при разборе импортируемого архива: в архиве обнаружены дублирующие даты активации |
400 |
Activation date in <{наименование параметра в структуре конфигурационного файла, описывающее дату активации версии}> must not be null for the version selection strategy <{код алгоритма выбора версии}> |
В <{наименование параметра в структуре конфигурационного файла, описывающее дату активации версии}> дата активации не должна быть null для алгоритма выбора версии <{код алгоритма выбора версии}> |
Ошибка возникает при импорте: в импортируемой версии шаблона, базирующейся на стратегии выбора активного шаблона на дату, дата активации указана как null |
400 |
Activation date in <{наименование параметра в структуре конфигурационного файла, описывающее дату активации версии}> must be null for the version selection strategy <{код алгоритма выбора версии}> |
В <{наименование параметра в структуре конфигурационного файла, описывающее дату активации версии}> дата активации должна быть null для алгоритма выбора версии <{код алгоритма выбора версии}> |
Ошибка возникает при импорте: в импортируемой версии шаблона, базирующегося на стратегии выбора версии шаблона НЕ по дате, дата активации указана (а не должна указываться) |
400 |
Duplicate codes of active and archived versions were found in <{наименование параметра в структуре конфигурационного файла, описывающее архивные версии}> and <{наименование параметра в структуре конфигурационного файла, описывающее активные версии}>: <{код версии шаблона}> |
В <{наименование параметра в структуре конфигурационного файла, описывающее архивные версии}> и <{наименование параметра в структуре конфигурационного файла, описывающее активные версии}> |
Ошибка возникает при импорте: в импортируемом шаблоне для активной и архивной версии заданы одинаковые коды |
400 |
The template parameter with the name <{наименование параметра в структуре конфигурационного файла описывающее имя ресурса версии}> was not found for the resource <{наименование параметра}> |
Для ресурса <{наименование параметра в структуре конфигурационного файла описывающее имя ресурса версии}> не найден параметр шаблона с именем <{наименование параметра}> |
Ошибка возникает при разборе импортируемого шаблона: не найден параметр в шаблоне для указанного ресурса |
400 |
The type of parameter <{наименование параметра}> for which the resource <{наименование параметра в структуре конфигурационного файла, описывающее имя ресурса версии}> is provided should be <{наименование класса типа параметра}> |
Тип параметра <{наименование параметра}>, для которого предоставлен ресурс <{наименование параметра в структуре конфигурационного файла, описывающее имя ресурса версии}> должен быть <{наименование класса типа параметра}> |
Ошибка возникает, когда в импортируемом шаблоне найден ресурс, для которого указан некорректный тип параметра |
400 |
Default format for <{наименование импортируемой версии шаблона}> is not supported by the template engine <{название движка, указанного в шаблоне}>, the list of available ones is: <{перечислены форматы, поддерживаемые заданным движком} |
В <{наименование импортируемой версии шаблона}> формат по умолчанию не поддерживается движком шаблона <{название движка, указанного в шаблоне}>, список доступных: <{пересилены форматы, поддерживаемые заданным движком}> |
Ошибка возникает, когда в импортируемом шаблоне указан формат по умолчанию, который не поддерживает движок |
400 |
Violation of restrictions in the configuration file: Duplicate resource names found in <{наименование параметра в структуре конфигурационного файла, описывающее версии}>: <{наименования дублирующих ресурсов}> |
Нарушение ограничений в файле конфигурации: В <{наименование параметра в структуре конфигурационного файла, описывающее версии}> обнаружены дублирующие наименования ресурсов: <{наименования дублирующих ресурсов}> |
Ошибка возникает, когда в импортируемом шаблоне для версии обнаружены дублирующие наименования ресурсов |
400 |
The archive contains unused files: {наименования неиспользуемых файлов в импортируемом архиве}. Delete unused files from the archive |
Архив содержит неиспользуемые файлы: {наименования неиспользуемых файлов в импортируемом архиве}. Удалите неиспользуемые файлы из архива |
Ошибка возникает при импорте архива шаблона: архив содержит неиспользуемые файлы. Удалите неиспользуемые файлы из архива |
400 |
Violation of restrictions in the configuration file: The date format is not supported, the expected format is: <{формат}>.<{полный текст ошибки}> |
Нарушение ограничений в файле конфигурации: Формат даты не поддерживается, ожидаемый формат:<{формат}>. <{полный текст ошибки}> |
Ошибка возникает при разборе импортируемого архива шаблона: задан не поддерживаемый формат даты |
400 |
Violation of restrictions in the configuration file: The passed code contains invalid characters. Pattern: {regexp паттерн} |
Нарушение ограничений в файле конфигурации: Переданный код содержит невалидные символы. Паттерн: {regexp паттерн кода} |
Ошибка возникает при импорте шаблона в момент нарушения заданных в файле конфигураций ограничений на поля. В сообщении указывается какой код содержит невалидные символы и какие символы ожидаются |
Внутренние ошибки#
Код ошибки |
Текст ошибки |
Текст ошибки (ru) |
Описание |
|---|---|---|---|
500 |
Error when reading archive contents |
Ошибка при чтении содержимого архива |
Ошибка возникает при разборе импортируемого шаблона в момент чтения содержимого архива |
500 |
Internal server error occurred with uid = <{уникальный идентификатор ошибки}>. Try to repeat the operation later or contact the service administrators to fix the problem |
Произошла внутренняя ошибка с uid = <{уникальный идентификатор ошибки}> на стороне сервера.Попробуйте повторить операцию позже или обратитесь к администраторам сервиса для устранения проблемы |
Произошла внутренняя ошибка с заданным уникальным идентификатором на стороне сервера. Попробуйте повторить операцию позже или обратитесь к администраторам сервиса для устранения проблемы |
500 |
The specified version status <{код статуса версии шаблона}> is not supported |
Статус версии <{код статуса версии шаблона}> не поддерживается |
Ошибка возникает при разборе импортируемого шаблона: переданный статус заданной версии не поддерживается |
500 |
Forbidden to add or change the archived version of the template |
Запрещено добавлять или изменять архивную версию шаблона |
Ошибка возникает при разборе импортируемого шаблона: архив содержит добавление или изменение версии в статусе архивная. Недопустимо вносить какие-либо изменения в версии шаблонов в статусе архивная |
500 |
The template engine was not passed |
Ошибка возникает при разборе импортируемого шаблона. Движок шаблона не определен. Используемые в работе движки: JASPERREPORTS = JasperReports FREEMARKER = FreeMarker XDOCREPORT_ODT_TEMPLATE = XDocReport from ODT template |
|
500 |
Data cannot be detected in the ODT template: template content is missing |
Ошибка возникает при разборе импортируемого шаблона: данные не могут быть обнаружены в шаблоне ODT, т. к. содержимое шаблона отсутствует |
|
500 |
Unable to open a data stream with a template |
Ошибка возникает при разборе импортируемого шаблона: не удается открыть поток данных шаблона (попытка распарсить параметры шаблона) |
|
500 |
An error occurred while reading the template |
Ошибка возникает при разборе импортируемого шаблона: невозможно прочитать шаблон |
|
500 |
The template contains empty expressions $“{}“ |
Ошибка возникает при разборе импортируемого шаблона: файл шаблона содержит пустые выражения, что некорректно |
|
500 |
Unable to read the template: invalid XML data structure |
Ошибка возникает при разборе импортируемого шаблона:некорректная структура данных в xml |
|
500 |
The corresponding closing character <{парный символ закрывающий}> for the opening character <{парный символ открывающий}> was not found |
Ошибка возникает при разборе импортируемого шаблона: соответствующий (парный) закрывающий символ для открывающего символа не найден |
|
500 |
The template engine <{название движка}> is not supported |
Ошибка возникает при разборе параметров импортируемого шаблона: указанный движок не поддерживается |
|
400 |
There is no corresponding <{название класса перечисления с расширениями}> instance for the extension <{заданное пользователем расширение файла ресурса}>. List of supported extensions: <{поддерживаемые расширения файлов ресурсов}> JPG = JPG TIFF = TIFF SVG = SVG GIF = GIF PNG = PNG BMP = BPM XML = XML JSON = JSON CSV = CSV XLS = XLS XLSX = XLSX |
Ошибка возникает, если указанное расширение файла ресурса не поддерживается. Поддерживаемые форматы в разрезе движков приведены в разделе «Использование программного продукта» настоящего документа |
Ошибки Template Provider#
Пользовательские ошибки#
Код ошибки |
Текст ошибки |
Текст ошибки (ru) |
Описание |
|---|---|---|---|
400 |
Resource <{имя ресурса проекта}> not found |
Ресурс <{имя ресурса проекта}> не найден |
Ошибка: при запросе шаблона указанный ресурс проекта не найден |
400 |
Template <{код импортируемого шаблона}> of resource <{1}> not found |
Шаблон <{код импортируемого шаблона}> ресурса <{имя ресурса проекта}> не найден |
Ошибка: при запросе в указанном ресурсе проекта не найден шаблон |
400 |
Template version with uid <{уникальный идентификатор версии, заданный в запросе}> of resource <{имя ресурса проекта}> not found |
Версия шаблона с uid <{уникальный идентификатор версии, заданный в запросе}> ресурса <{имя ресурса проекта}> не найдена |
Ошибка: при запросе в указанном ресурсе проекта не найдена версия |
Внутренние ошибки#
Код ошибки |
Текст ошибки |
Текст ошибки (ru) |
Описание |
|---|---|---|---|
500 |
Resource <{имя ресурса проекта}> not active< |
Ресурс <{имя ресурса проекта}> не активен |
Ошибка: при запросе шаблона указанный ресурс проекта не активен |
500 |
Internal server error occurred with uid = <{уникальный идентификатор ошибки}>. Try to repeat the operation later or contact the service administrators to fix the problem |
Произошла внутренняя ошибка с uid = <{уникальный идентификатор ошибки}> на стороне сервера. Попробуйте повторить операцию позже или обратитесь к администраторам сервиса для устранения проблемы |
Произошла внутренняя ошибка с заданным уникальным идентификатором на стороне сервера.Попробуйте повторить операцию позже или обратитесь к администраторам сервиса для устранения проблемы |
Ошибки Библиотеки генерации#
Пользовательские ошибки#
Текст ошибки |
Описание |
|---|---|
Resource name not specified. Set the <{имя параметра в конфигурации для Имени ресурса проекта}> parameter in the application configuration or environment variables |
Имя ресурса проекта не задано. Необходимо задать параметр в конфигурации библиотеки генерации |
An error occurred during document creation: An error occurred while writing the document by the engine <{наименование движка}> to the resulting stream |
Ошибка создания документа возникает при его записывании в resulting stream (результирующий поток) |
An error occurred during document creation: Invalid parameter: The parameter name <{наименование параметра}> is the same as the resource name. The names of resources and parameters for filling must not be the same |
Переданный для создания документа параметр невалиден. Ошибка возникает, когда в параметрах для создания документа передают совпадающие наименование параметра и имени ресурса совпадают. Они должны отличаться |
An error occurred during document creation: Invalid parameter: Several data sources found: <{наименование источника данных-1}>, <{наименование источника данных-2}>. Only one data source is supported |
Переданный для создания документа параметр невалиден. Ошибка создания документа: возникает, когда найдено несколько источников данных. Создание документа допустимо только из одного источника данных |
An error occurred during document creation: Invalid parameter: The parameter <{наименование параметра}> must contain a value of type <{тип параметра}> |
Переданный для создания документа параметр невалиден. Ошибка создания отчета: параметр должен быть указанного типа |
An error occurred during document creation: Unsupported image format |
Ошибка создания отчета. Неподдерживаемый формат рисунка при создании документа HTML, когда определяется формат переданного ресурса. Поддерживаемые форматы ресурсов — PNG, JPG, GIF, SVG, TIFF |
An error occurred during document creation: timeout during operation. Document creation by <{наименование движка}> engine |
Ошибка возникает, когда произошел таймаут во время выполнения операции: создание документа движком |
An error occurred during document creation: An error occurred during operation document creation by <{наименование движка}> engine: <{текст ошибки}> |
Ошибка возникла в момент выполнения операции создания документа движком |
An error occurred during document creation: Operation document creation by <{наименование движка}> engine aborted |
Операция создания документа движком прервана |
An error occurred during document creation: Cannot select template version by date. Template <{код шаблона}> has a version selection algorithm — <{алгоритм по коду версии}>. Selecting a template version by date is only possible for templates with the version selection algorithm <{алгоритм выбора версии шаблона по дате}> |
В параметрах создания документа передана дата для выбора версии шаблона. Но в шаблоне указан иной алгоритм выбора версии, не по дате, а по коду |
An error occurred during document creation: Template with code <{код шаблона}> has no active versions as of date <{дата}> |
Ошибка возникает при создании документа по дате: шаблон с заданным кодом не содержит активных версий на выбранную дату |
An error occurred during document creation: Version <{код версии шаблона}> of template with code <{код шаблона}> not found |
Ошибка возникает при создании документа: невозможно найти версию шаблона с указанным кодом |
An error occurred during document creation: No stream specified to which the generated document will be passed |
Ошибка возникает при создании документа: не задан поток (resulting stream), в который будет передан сформированный документ |
An error occurred during document creation: Format <{формат, в котором должен быть создан документ}> is not supported by engine <{наименование движка}> version <{код версии шаблона}> of template <{код шаблона}> |
В параметрах запроса на создание документа указан формат, который не поддерживается движком шаблона для выбранной версии шаблона |
An error occurred during document creation: Errors were found in the passed parameters for the document: Invalid type for parameter <{наименование параметра}>. Expected <{ожидаемый тип параметра}>, actual <{фактический тип параметра}> |
Были обнаружены ошибки в переданных на создание документа параметрах: параметры на генерацию документа некорректного типа |
An error occurred during document creation: The document date was not specified in the request to create a document based on the version of the template active on the specified date |
Не указана дата в запросе на создание документа по дате (для случаев, когда в импортированном шаблоне указана стратегия выбора версии по дате, на которую она была активна) |
An error occurred during document creation: Version code not specified in a request to generate a template document with the specified version |
Не указан код версии шаблона в запросе на создание документа (для случаев, когда в импортированном шаблоне указана стратегия выбора версии шаблона по коду) |
An error occurred during document creation: Unique version identifier not specified in document creation request |
Не указан уникальный идентификатор версии шаблона в запросе на создание документа (для случаев, когда в импортированном шаблоне указана стратегия выбора версии шаблона по UID) |
An error occurred during document creation: Project resource id not set |
Ошибка при создании документа: не задан ресурс проекта |
An error occurred during document creation: Template code not set in document creation request |
Код шаблона не указан в запросе на создание документа |
Template version with uid <{уникальный идентификатор версии, заданный в запросе}> of resource <{имя ресурса проекта}> not found. Версия шаблона с uid <{уникальный идентификатор версии, заданный в запросе}> ресурса <{имя ресурса проекта}> не найдена |
Ошибка: при запросе в указанном ресурсе проекта не найдена версия |
Внутренние ошибки#
Текст ошибки |
Описание |
|---|---|
An error occurred during document creation: <{Наименование движка}> print processor initialization error |
Ошибка создания документа при инициализации процессора печати движка |
An error occurred during document creation: Error exporting document by <{наименование движка}> print processor |
Ошибка возникает при экспорте созданного документа в формат процессора печати движка |
An error occurred during document creation: Unsupported image format - <{формат ресурса (рисунка)}>. Supported formats - jpg, png, gif, svg, tiff |
Ошибка создания отчета: возникает при создании документа HTML формата, когда ресурс добавляется в шаблон. При этом ресурс (рисунок) неподдерживаемого формата (отличен от форматов PNG, JPG, GIF, SVG или TIFF) |
An error occurred during document creation: Print processor <{наименование движка}> not supported |
Ошибка создания отчета: при заполнении отчета получен движок, для которого не поддерживается процессор печати движка |
An error occurred during document creation: An error occurred while compiling the template by the <{наименование движка}> engine |
Ошибка возникает при компиляции шаблона с помощью указанного движка |
An error occurred during document creation: Version with unique identifier <{уникальный идентификатор версии шаблона}> of template with code <{код шаблона}> not found |
В параметрах на создание документа передан уникальный идентификатор версии, который не найден в Реестре для указанного кода шаблона |
An error occurred during document creation: For version <{код версии шаблона}> of template <{код шаблона}>, the default format is not specified, you must pass the format in the request parameters |
Ошибка возникает при создании документа: для версии импортированного ранее шаблона формат по умолчанию не задан. Необходимо задать выходной формат в параметрах запроса на создание документа |
An error occurred during document creation: An invalid timeout was specified for the step of filling the template with data. Please enter a positive value |
В запросе на создание документа указан недопустимый тайм-аут для шага заполнения шаблона данными |
An error occurred during document creation: An error occurred while reading the image to filling the parameter <{наименование параметра}> of the template |
Ошибка возникает при создании документа: в момент чтения в шаблоне параметра в виде рисунка |
Failed to apply access restrictions to the temporary file storage directory to save the intermediate result of document creation. Current operating system does not support Posix File Attribute View |
Ошибка создания отчета. Не удалось применить ограничения доступа к каталогу временного хранилища файлов для сохранения промежуточного результата создания документа. Ошибка создания отчета. Текущая операционная система не поддерживает Posix File Attribute View |
Request type <{тип запроса}> to create a document is not supported |
Тип запроса для создания документа не поддерживается |
Timeout for create document request is not supported |
Время ожидания процесса создания документа не задается (поэтому не поддерживается) |
Template descriptor not set |
Не заполнено поле описания шаблона в запросе на создание документа |
Create document request type not specified |
В запросе на создание документа не указан его тип |
An error occurred on the Template Provider side when getting information about the document template: An error occurred while reading an error message from the Template Provider |
Ошибка возникает на стороне Template Provider в процессе получения информации о шаблоне документа: при чтении сообщения с ошибкой от Template Provider |
An error occurred on the Template Provider side when getting information about the document template: <{текст ошибки}> |
Ошибка возникает на стороне Template Provider в процессе получения информации о шаблоне документа |
An error occurred while creating a protected temporary directory |
Ошибка создания отчета: возникает при создании защищенной временной директории |
An error occurred while deleting a protected temporary directory <{полный путь до директории}> |
Ошибка создания отчета: возникает при удалении защищенной временной директории |
An error occurred while deleting a directory: The passed path is not a directory, or the directory does not exist <{полный путь до директории}> |
Ошибка создания отчета: возникает во время удаления директории — переданный путь не является директорией или директория не существует |
An error occurred while creating a protected temporary directory: Parent directory cannot be null |
Ошибка создания отчета: возникает при создании защищенной временной директории — родительская директория не может быть пустой |
An error occurred while creating a protected temporary directory: The passed path for parent directory is not a directory, or the directory does not exist <{полный путь до родительской директории}> |
Ошибка создания отчета: возникает при создании защищенной временной директории — переданный путь не является директорией или директория не существует |
An incorrect number of pages was specified that can be stored in memory when creating a document - <{количество страниц}>. Please enter a positive value |
Ошибка возникает при создании документа: было указано неверное количество страниц, которые могут храниться в памяти при создании документа |
The path to the directory where the temporary file of the created document is stored is not specified or does not exist |
Ошибка возникает при создании документа: путь до директории, где должен хранится созданный временный файл формируемого документа, не существует |
An error occurred during document creation: Error creating temporary file |
Ошибка при создании большого документа по шаблону: возникает в процессе создания временного файла для хранения промежуточного результата большого документа |
An error occurred while creating a file for storing the intermediate result of creating a large document by the <{наименование движка}> engine |
Ошибка возникает во время создания файла для хранения промежуточного результата при создании больших документов движком |
The large document creation is not supported by <{наименование движка}> engine |
Ошибка возникает в момент, когда пользователь пытается сгенерировать большой документ по шаблону, движок которого не поддерживает генерацию большого документа. (Создание большого документа производится путем сохранения промежуточного результата во временный файл. В памяти во время создания отчета будет находиться заданное в параметрах количество страниц.) |
An error occurred during document creation: Template cache size cannot be negative. Set a positive value in the settings |
Ошибка возникает, если размер кэша шаблона — отрицательное значение в настройках. Необходимо установить положительное значение |
An error occurred during document creation: The timeout for eviction of entries from the template cache cannot be negative. Set a positive value in the settings |
Ошибка возникает, если время ожидания для удаления записей из кэша шаблонов — отрицательное значение в настройках. Необходимо установить положительное значение |
Ошибки Сервиса генерации#
Пользовательские ошибки#
Код ошибки |
Текст ошибки |
Описание |
|---|---|---|
400 |
Invalid parameter: Several data sources found: <{наименование источника данных-1}>, <{наименование источника данных-2}>. Only one data source is supported |
Переданный для создания документа параметр невалиден. Ошибка создания документа: возникает, когда найдено несколько источников данных. Создание документа допустимо только из одного источника данных |
400 |
Invalid parameter: The parameter <{наименование параметра}> must contain a value of type <{тип параметра}> |
Переданный для создания документа параметр невалиден. Ошибка создания отчета: параметр должен быть указанного типа |
400 |
Error exporting document by <{наименование движка}> print processor |
Ошибка возникает при экспорте созданного документа в формат процессора печати движка |
400 |
Timeout during operation. Document creation by <{наименование движка}> engine |
Ошибка возникает, когда произошел таймаут во время выполнения операции: создание документа движком |
400 |
An error occurred during operation document creation by <{наименование движка}> engine:<{текст ошибки}> |
Ошибка возникла в момент выполнения операции создания документа движком |
400 |
Operation document creation by <{наименование движка}> engine aborted |
Операция создания документа движком прервана |
400 |
Cannot select template version by date. Template <{код шаблона}> has a version selection algorithm - <{алгоритм (один из: по коду версии или по UID}>. Selecting a template version by date is only possible for templates with the version selection algorithm <{алгоритм выбора версии шаблона по дате}> |
В параметрах создания документа передана дата для выбора версии шаблона. Но в шаблоне указан иной алгоритм выбора версии, не по дате |
400 |
An error occurred during document creation: Template with code <{код шаблона}> has no active versions as of date <{дата}> |
Ошибка возникает при создании документа по дате: шаблон с заданным кодом не содержит активных версий на выбранную дату |
400 |
An error occurred during document creation: Version <{код версии шаблона}> of template with code <{код шаблона}> not found |
Ошибка возникает при создании документа: невозможно найти версию шаблона с указанным кодом |
400 |
Format <{формат, в котором должен быть создан документ}> is not supported by engine <{наименование движка}> version <{код версии шаблона}> of template <{код шаблона}> |
В параметрах запроса на создание документа указан формат, который не поддерживается движком шаблона для выбранной версии шаблона |
400 |
Errors were found in the passed parameters for the document: Invalid type for parameter <{наименование параметра}>. Expected <{ожидаемый тип параметра}>, actual <{фактический тип параметра}> |
Были обнаружены ошибки в переданных на создание документа параметрах: параметры на генерацию документа некорректного типа |
400 |
The document date was not specified in the request to create a document based on the version of the template active on the specified date |
Не указана дата в запросе на создание документа по дате (для случаев, когда в импортированном шаблоне указана стратегия выбора версии по дате, на которую она была активна) |
400 |
Version code not specified in a request to generate a template document with the specified version |
Не указан код версии шаблона в запросе на создание документа (для случаев, когда в импортированном шаблоне указана стратегия выбора версии шаблона по коду) |
400 |
Unique version identifier not specified in document creation request |
Не указан уникальный идентификатор версии шаблона в запросе на создание документа |
400 |
Project resource id not set |
Ошибка при создании документа: не задан ресурс проекта |
400 |
Template code not set in document creation request |
Код шаблона не указан в запросе на создание документа |
400 |
Template version with uid <{уникальный идентификатор версии, заданный в запросе}> of resource <{имя ресурса проекта}> not found. _____________________ Версия шаблона с uid <{уникальный идентификатор версии, заданный в запросе}> ресурса <{имя ресурса проекта}> не найдена |
Ошибка: при запросе в указанном ресурсе проекта не найдена версия |
Внутренние ошибки#
Код ошибки |
Текст ошибки |
Описание |
|---|---|---|
400 |
<{Наименование движка}> print processor initialization error |
Ошибка создания документа при инициализации процессора печати движка |
400 |
Unsupported image format - <{формат ресурса (рисунка)}>. Supported formats - jpg, png, gif, svg, tiff |
Ошибка создания отчета: возникает при создании документа HTML формата, когда ресурс добавляется в шаблон. При этом ресурс (рисунок) неподдерживаемого формата (отличен от форматов PNG, JPG, GIF, SVG или TIFF) |
400 |
Print processor <{наименование движка}> not supported |
Ошибка создания отчета: при заполнении отчета получен движок, для которого не поддерживается процессор печати движка |
400 |
An error occurred while compiling the template by the <{наименование движка}> engine |
Ошибка возникает при компиляции шаблона с помощью указанного движка |
400 |
Version with unique identifier <{уникальный идентификатор версии шаблона}> of template with code <{код шаблона}> not found |
В параметрах на создание документа передан уникальный идентификатор версии, который не найден в Реестре для указанного кода шаблона |
400 |
No stream specified to which the generated document will be passed |
Ошибка возникает при создании документа: не задан поток (resulting stream), в который будет передан сформированный документ |
400 |
For version <{код версии шаблона}> of template <{код шаблона}>, the default format is not specified, you must pass the format in the request parameters |
Ошибка возникает при создании документа: для версии импортированного ранее шаблона формат по умолчанию не задан. Необходимо задать выходной формат в параметрах запроса на создание документа |
400 |
An invalid timeout was specified for the step of filling the template with data. Please enter a positive value |
В запросе на создание документа указан недопустимый тайм-аут для шага заполнения шаблона данными |
500 |
The path to the directory where the temporary file of the created document is stored is not specified or does not exist |
Ошибка возникает при создании документа: путь до директории, где должен хранится созданный временный файл формируемого документа, не существует |
500 |
An error occurred while creating a protected temporary directory |
Ошибка создания отчета: возникает при создании защищенной временной директории |
500 |
An error occurred while deleting a protected temporary directory <{полный путь до директории}> |
Ошибка создания отчета: возникает при удалении защищенной временной директории |
500 |
An error occurred while deleting a directory: The passed path is not a directory, or the directory does not exist <{полный путь до директории}> |
Ошибка создания отчета: возникает во время удаления директории — переданный путь не является директорией или директория не существует |
500 |
An error occurred while creating a protected temporary directory: Parent directory cannot be null |
Ошибка создания отчета: возникает при создании защищенной временной директории — родительская директория не может быть пустой |
500 |
An error occurred while creating a protected temporary directory: The passed path for parent directory is not a directory, or the directory does not exist <{полный путь до родительской директории}> |
Ошибка создания отчета: возникает при создании защищенной временной директории - переданный путь не является директорией или директория не существует |
500 |
An incorrect number of pages was specified that can be stored in memory when creating a document - <{количество страниц}>. Please enter a positive value |
Ошибка возникает при создании документа: было указано неверное количество страниц, которые могут храниться в памяти при создании документа |
500 |
Error creating temporary file |
Ошибка при создании большого документа по шаблону: возникает в процессе создания временного файла для хранения промежуточного результата большого документа |
500 |
An error occurred while creating a file for storing the intermediate result of creating a large document by the <{наименование движка}> engine |
Ошибка возникает во время создания файла для хранения промежуточного результата при создании больших документов движком |
400 |
The large document creation is not supported by <{наименование движка}> engine |
Ошибка возникает в момент, когда пользователь пытается сгенерировать большой документ по шаблону, движок которого не поддерживает генерацию большого документа. (Создание большого документа производится путем сохранения промежуточного результата во временный файл. В памяти во время создания отчета будет находиться заданное в параметрах количество страниц.) |
400 |
An error occurred while reading the image to filling the parameter <{наименование параметра}> of the template |
Ошибка возникает при создании документа: в момент чтения в шаблоне параметра в виде рисунка |
400 |
An error occurred while writing the document by the engine <{наименование движка}> to the resulting stream |
Ошибка создания документа возникает при его записывании в resulting stream (результирующий поток) |
400 |
Invalid parameter: The parameter name <{наименование параметра}> is the same as the resource name. The names of resources and parameters for filling must not be the same |
Переданный для создания документа параметр невалиден. Ошибка возникает, когда в параметрах для создания документа передают совпадающие наименование параметра и имени ресурса совпадают. Они должны отличаться |
500 |
An error occurred on the Template Provider side when getting information about the document template: An error occurred while reading an error message from the Template Provider |
Ошибка возникает на стороне Template Provider в процессе получения информации о шаблоне документа: при чтении сообщения с ошибкой от Template Provider |
500 |
An error occurred on the Template Provider side when getting information about the document template: <{текст ошибки}> |
Ошибка возникает на стороне Template Provider в процессе получения информации о шаблоне документа |
500 |
Template descriptor not set |
Ошибка возникает при создании документа: в момент создания Template descriptor (не зависит от входящих параметров) |
500 |
Create document request type not specified |
Ошибка возникает при создании документа: не определен тип запроса |
500 |
Timeout for create document request is not supported |
Ошибка возникает при создании документа: таймаут процесса создания документа не поддерживается |
500 |
Request type <{тип запроса}> to create a document is not supported |
Ошибка возникает во время создания документа: задан тип запроса, который не поддерживается |
500 |
Failed to apply access restrictions to the temporary file storage directory to save the intermediate result of document creation. Current operating system does not support Posix File Attribute View |
Ошибка создания отчета. Не удалось применить ограничения доступа к каталогу временного хранилища файлов для сохранения промежуточного результата создания документа. Текущая операционная система не поддерживает Posix File Attribute View |
500 |
Internal server error occurred with uid = <{уникальный идентификатор ошибки}>. Try to repeat the operation later or contact the service administrators to fix the problem. Произошла внутренняя ошибка с uid = <{уникальный идентификатор ошибки}> на стороне сервера. Попробуйте повторить операцию позже или обратитесь к администраторам сервиса для устранения проблемы |
Произошла внутренняя ошибка с заданным уникальным идентификатором на стороне сервера. Повторите операцию позже или обратитесь к администратору сервиса для устранения проблемы |
400 |
Unsupported image format |
Ошибка создания отчета. Неподдерживаемый формат рисунка при создании документа HTML, когда определяется формат переданного ресурса. Поддерживаемые форматы ресурсов — PNG, JPG, GIF, SVG, TIFF |
400 |
An error occurred during document creation: Template cache size cannot be negative. Set a positive value in the settings |
Ошибка возникает, если размер кэша шаблона — отрицательное значение в настройках. Необходимо установить положительное значение |
400 |
An error occurred during document creation: The timeout for eviction of entries from the template cache cannot be negative. Set a positive value in the settings |
Ошибка возникает, если время ожидания для удаления записей из кэша шаблонов — отрицательное значение в настройках. Необходимо установить положительное значение |