Генератор документов
Описание модуля Генератор документов приведено в документации по D7.
Архитектурно REST-api большей частью соответствует PHP-api модуля. Сам набор REST-методов покрывает все возможности модуля.
На данный момент есть два scope для работы с генератором документов:
- Методы crm.documentgenerator.*. Результаты работы этих методов отображаются в интерфейсе CRM;
- Методы documentgenerator.*. Результат работы этих методов доступен только на уровне REST.
Из методов одного scope нельзя получить доступ к данным другого:
- Нельзя создать документ CRM с шаблоном для REST;
- Нельзя использовать данные CRM при работе с методами documentgenerator.*.
Поддерживаются следующие типы полей и их модификаторы:
- IMAGE - изображения;
- STAMP - печати и подписи;
- DATE - даты;
- NAME - имена.
Типы полей Деньги и Адрес реализованы внутри модуля crm, поэтому использовать их в REST этого модуля не получится. Если надо вывести такие данные - придётся передавать их в уже сформированном виде.
Есть возможность использовать массивы для вставки в таблицы и повторяющиеся блоки.
Отличие параметров методов разных scope
“Изнутри” методы идентичны. По факту методы crm.documentgenerator.* после пред-обработки параметров вызывают методы documentgenerator.*. Но есть ряд отличий:
- На вход методов crm.documentgenerator.* необходимо вместо имен провайдеров передавать ID типа сущности CRM (параметр
entityTypeId
); - На вход методов crm.documentgenerator.* необходимо вместо параметра value передавать параметр
entityId
- ID сущности CRM
Шаблоны
Все создаваемые этим api шаблоны и документы привязаны к модулю REST. Через scope documentgenerator
нельзя обращаться к шаблонам и документам других модулей. Поэтому moduleId
в данных о шаблоне всегда будет rest
. Даже если в add
или update
указать другой модуль, он не будет изменён.
Для работы REST доступны только два провайдера:
Bitrix\DocumentGenerator\DataProvider\Rest
- всегда должен быть указан в качестве провайдера для шаблонаBitrix\DocumentGenerator\DataProvider\HashDataProvider
- используется для передачи данных в таблицы / повторяющиеся блоки
Привязка шаблона к пользователю самими REST-методами никак не учитывается. Но её можно использовать на стороне приложения.
Нумераторы
Для работы с нумераторами есть методы documentgenerator.numerator.*, описанные тут.
Следует учесть, что через данный скоуп есть возможность получить доступ ко всем нумераторам для документов. В том числе к тем, которые работают в CRM. Но через REST обновить / удалить можно только тот нумератор, который был создан через REST.
Список регионов
Каждый шаблон привязан к определенной стране. Список стран фиксирован и на данный момент состоит из:
ru - Россия
by - Беларусь
kz - Казахстан
ua - Украина
br - Бразилия
mx - Мексика
de - Германия
uk - Великобритания
pl - Польша
Начиная с версии documentgenerator 18.6.1 появилась возможность добавлять свои регионы. Для управления ими появился отдельный раздел.
Итоги
Что сделать можно?
- Создать документы на основе шаблонов в формате .docx файлов;
- В шаблон можно вставить списки с произвольным количеством элементов через таблицы или повторяющиеся блоки;
- В шаблон можно вставить изображения, в том числе из списков;
- Вставить поля в виде html с частичным сохранением форматирования;
- Создать документы, отправить их и отследить просмотр без участия пользователя (через роботов).
Что сделать нельзя?
- Вставить множественное значение поля типа «файл»;
- Вставить таблицы и изображения из html;
- Вставить векторные изображения;
- Передача форматирование выполняется не полностью.