Мой первый отчет

Общее описание

В данном подразделе будет рассмотрен процесс создания простого отчета с помощью сервера отчетов. Для работы необходимо удостовериться, что установка сервера отчетов прошла успешно.

Первый шаблон

Для формирования отчета необходимо создать шаблон документа в формате DOCX или XLSX с помощью MS Word/Excel, LibreOffice Writer/Calc, Google Docs и т.п.

Шаблоны документов могут содержать теги, которые будут заменены входными данными из запроса. Тег задается в квадратных скобках. Пример: [задолженность]. Подробнее про создание шаблонов в формате DOCX и XLSX можно прочитать в разделе Сервис формирования отчетов из документа-шаблона.

Для первого отчета создадим простой шаблон в формате DOCX, который содержит несколько тегов: first_report_template.docx. Примеры более сложных шаблонов можно найти в архиве примеров.

Созданный шаблон размещаем на сервере в директории templates, расположенной в директории приложения сервиса.

Примечание

Шаблоны страниц в формате PDF хранятся в директории templates/pdf, расположенной в директории приложения сервиса.

Первый запрос

Далее формируем HTTP-запрос.

Запрос для первого отчета в формате JSON будет выглядеть следующим образом: first_report.json. Документ-шаблон, созданный ранее, указан в атрибуте id элемента template. Примеры более сложных запросов можно найти в архиве примеров.

Примечание. Также для запросов в формате DOCX или XLSX может быть использован формат XML.

Для получения файла отчета используем Сервис формирования отчетов из документа-шаблона.

Для получения первого отчета на основе созданного шаблона DOCX используем URI http://localhost:8886/word_report_json.

Описание

Наименование сервиса

Сервис формирования отчетов из документа-шаблона

Путь к сервису

[host]:[port]/word_report_json

Метод

POST

Параметры

Тело запроса должно содержать JSON объект:

{
 "template": {
  "uri": "local",
  "id": "examples/docx/first_report_template"
 },
 "input-data": {
  "ORGANIZATION": "АО «Пример»",
  "DATE": "01.01.2023",
  "EMP": "Иванов Иван Иванович"
 }
 }
}

Объект template имеет атрибуты (поля):

  • uri - строка. Задает расположение файла документа-шаблона в зависимости от того, как трактуется параметр id. Поддерживаемое значение: local.

  • id - строка. Идентификатор шаблона. Путь к файлу документа-шаблона относительно директории сервиса templates. Также используется для записи файла отчета в отладочном режиме и для идентификации запроса в логе.

input-data - входные данные для подстановки в шаблон.

Объект input-data может содержать:

  • теги простых строковых данных;

  • теги описателей таблиц;

  • теги описателей списков;

  • теги изображений;

  • теги блоков.

options - опции запроса.

Подробнее про структуру JSON можно прочитать в разделе Сервис формирования отчетов из документа-шаблона. В ответ сервис отдаёт файл документа отчета в формате DOCX, закодированный в BASE64. В случае, если необходимо получить результат без кодирования в BASE64, в опциях запроса необходимо указать флаг enable-binary-output, равный true.

{
«template»: {

«uri»: «local», «id»: «examples/docx/first_report_template»

}, «input-data»: {

«ORGANIZATION»: «АО «Пример»», «DATE»: «01.01.2023», «EMP»: «Иванов Иван Иванович»

}, «options»: {

«enable-binary-output»: true

}

}

Пример запроса

curl -X POST \
'http://localhost:8886/word_report_json' \
-H 'Content-Type: application/json' \
-d '{
   "template":
   {
       "uri": "local",
       "id": "examples/docx/first_report_template"
   },
   "input-data":
   {
       "ORGANIZATION": "АО «Пример»",
       "DATE": "01.01.2023",
       "EMP": "Иванов Иван Иванович"
   }
}'

Пример запроса для сохранения результата в файл без кодирования в base64

curl -X POST \
'http://localhost:8886/word_report_json' \
-H 'Content-Type: application/json' \
-d '{
   "template":
   {
       "uri": "local",
       "id": "examples/docx/first_report_template"
   },
   "input-data":
   {
       "ORGANIZATION": "АО «Пример»",
       "DATE": "01.01.2023",
       "EMP": "Иванов Иван Иванович"
   },
   "options":
   {
       "output-mode": "binary"
   }
}'
-o first_report.docx

Получение первого ответа

Формат возвращаемого ответа

{
   error: {
       code:
       message:
   }
   result: "[base64 encoded docx/pdf file]"
}

Пример ответа

{
   "error": null,
   "result": "UEsDBBQACAAIAPdKo...JwAAAAA="
}

Завершение

В итоге получаем файл документа первого отчета в формате DOCX, закодированный в base64, или сообщение об ошибке.