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

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

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

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

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

Шаблоны документов могут содержать теги, которые будут заменены входными данными из запроса. Тег задается в квадратных скобках. Пример: [задолженность]. Подробнее про создание шаблонов в формате 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:8087/word_report_json.

Описание

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

Сервис формирования печатной формы

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

[host]:[port]/print_form_pdf_json

Метод

POST

Параметры

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

                        {
    "template":
    {
        "uri": "local",
        "id": "first_report_template"
    },
    "input-data":
    {
        "ORGANIZATION": "АО «Пример»",
        "DATE": "01.01.2023",
        "EMP": "Иванов Иван Иванович"
    },
    "options":
    {
        "formatting": {
            "tables": {
                "enable-cells-auto-merge": true
            }
        }
    }
}

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

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

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

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

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

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

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

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

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

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

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

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

       {
   "template":
   {
       "uri": "local",
       "id": "first_report_template"
   },
   "input-data":
   {
       "ORGANIZATION": "АО «Пример»",
       "DATE": "01.01.2023",
       "EMP": "Иванов Иван Иванович"
   },
   "options":
   {
     "enable-binary-output": true,
       "formatting": {
           "tables": {
               "enable-cells-auto-merge": true
           }
       }
   }
}

Назначение

Сервис предназначен для формирования печатной формы документа в формате PDF, включающей колонтикулы с краткой информацией о документе и таблицу подписантов на последней странице.

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

curl -X POST \
'http://localhost:8087/word_report_json' \
-H 'Content-Type: application/json' \
-d '{
   "template":
   {
       "uri": "local",
       "id": "first_report_template"
   },
   "input-data":
   {
       "ORGANIZATION": "АО «Пример»",
       "DATE": "01.01.2023",
       "EMP": "Иванов Иван Иванович"
   },
   "options":
   {
       "formatting": {
           "tables": {
               "enable-cells-auto-merge": true
           }
       }
   }
}'

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

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

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

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

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

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

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

Завершение

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