Сгенерировать документ с табличными данными
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Табличные данные для плейсхолдеров шаблона передаются в метод documentgenerator.document.add как массив строк в values. В fields нужно описать провайдер таблицы, чтобы генератор обработал массив как повторяющиеся строки.
Когда использовать
- Нужно заполнить одну таблицу строками одинаковой структуры
- Каждая строка таблицы содержит простой набор значений, например название, цену и изображение
- Нужно вывести номер строки внутри таблицы
Что передавать в запросе
- В
fields['Table']['PROVIDER']укажитеBitrix\\DocumentGenerator\\DataProvider\\ArrayDataProvider, чтобы генератор обработалvalues['Table']как список строк таблицы - В
fields['Table']['OPTIONS']укажите:ITEM_NAME— внутреннее имя элемента массиваITEM_PROVIDER—Bitrix\\DocumentGenerator\\DataProvider\\HashDataProvider
- В
values['Table']передайте список строк таблицы - Для плейсхолдеров таблицы, например
TableItemNameиTableItemPrice, передайте цепочку доступа к данным:Table.Item.Name,Table.Item.Price - Для изображений в таблице укажите
TYPE = IMAGEвfields - Для номера строки можно использовать
Table.INDEX
Пример
$data = [
'templateId' => 203,
'providerClassName' => 'Bitrix\\DocumentGenerator\\DataProvider\\Rest',
'value' => 'ORDER_1024',
'values' => [
'Table' => [
[
'Name' => 'Item name 1',
'Price' => '$111.23',
'Image' => 'https://myrestapp.example/upload/product-1.png'
],
[
'Name' => 'Item name 2',
'Price' => '$222.34',
'Image' => 'https://myrestapp.example/upload/product-2.png'
],
],
'TableItemName' => 'Table.Item.Name',
'TableItemImage' => 'Table.Item.Image',
'TableItemPrice' => 'Table.Item.Price',
'TableIndex' => 'Table.INDEX',
],
'fields' => [
'Table' => [
'PROVIDER' => 'Bitrix\\DocumentGenerator\\DataProvider\\ArrayDataProvider',
'OPTIONS' => [
'ITEM_NAME' => 'Item',
'ITEM_PROVIDER' => 'Bitrix\\DocumentGenerator\\DataProvider\\HashDataProvider',
],
],
'TableItemImage' => ['TYPE' => 'IMAGE'],
],
];
$url = $webHookUrl.'documentgenerator.document.add/';
Как это работает
В примере предполагается, что в шаблоне есть таблица с полями {TableItemName}, {TableItemImage}, {TableItemPrice}.
- Поле
Tableиспользуется как контейнер массива строк. Такого плейсхолдера может не быть в шаблоне, но он нужен, чтобы передать массив значений для таблицы - По
ITEM_NAME = Itemпровайдер читает каждый элемент строки как объектItem - По
ITEM_PROVIDER = HashDataProviderэлементы читаются как простой хеш - Поля вида
TableItem...ссылаются на значения через цепочкуTable.Item.<Ключ>, где<Ключ>— ключ внутреннего ассоциативного массива, напримерName,PriceилиImage
Table.INDEX возвращает номер текущей строки, начиная с 1.
Если указать в качестве значения поля обычную строку, то она вставится в таблицу как есть во все строки.
Продолжите изучение
- Сгенерировать документ с текстом
- Сгенерировать документ с модификаторами даты и имени
- Сгенерировать документ со сложными таблицами
- Сгенерировать документ с изображениями и печатями
- Частые кейсы и сценарии генератора документов: обзор кейсов
Скопировано