Что умеет решение
Модуль «Генератор документов Pro» предназначен для автоматизации создания файлов на основе пользовательских шаблонов. Инструмент формирует документы формата .docx, подставляя в заранее определённые места текстовые данные, таблицы и изображения.
Для работы необходимо подготовить шаблонный документ .docx. В нём задаются имена переменных, которые будут заменяться данными при генерации. Имена полей указываются в фигурных скобках латинскими буквами, например: {COMP_NAME}. После размещения всех необходимых переменных в нужных местах файл сохраняется.
Рекомендация: при использовании операционной системы macOS для создания шаблонов предпочтительно применять версию MS Word для Windows.
Загруженный шаблон можно поместить в систему двумя способами. Первый вариант — загрузка файла в нужную папку через раздел «Диск» в портале. Второй способ — использование административной части Битрикс: раздел «Контент» — «Файлы и папки», где необходимо нажать кнопку «Загрузить файл» и указать путь к шаблону.
В любой точке бизнес-процесса добавьте активити «Генератор документов Pro». В интерфейсе системы оно может отображаться как «Документ Word из шаблона [mcart]».
Откройте настройки активити. Здесь укажите поля, данные из которых будут подставляться в переменные шаблона документа.
Заголовок — имя активити. При наличии нескольких генераторов в одной цепочке это позволяет присваивать результирующим файлам уникальные имена, заданные в настройках каждого элемента.
Флаг «Обрабатывать поля в формате Merge Field» следует оставить снятым.
Путь к шаблону — адрес загруженного файла с шаблоном. Допустимы варианты: /generator/template.docx или числовой идентификатор (например, 523). Если поле содержит буквы, модуль интерпретирует его как путь к файлу; если цифры — ищет файл по указанному ID.
Путь и имя сохраняемого файла определяют расположение и формат выходного документа .docx. Здесь можно указать полный путь с именем файла или только имя, задав путь отдельно в соответствующих полях. Пример: /generator/kp_{=System:Date}.docx — в этом случае имя файла будет содержать префикс kp, символ подчеркивания и текущую дату. Если указано только имя файла, например kp_{=System:Date}.docx, необходимо заполнить поля ниже.
ID диска — идентификатор диска, на который сохраняется результат. Инструкция по получению ID диска приведена ниже.
ID папки на диске — идентификатор папки для размещения файла результата. Инструкция по получению ID папки приведена ниже.
Для подстановки данных в шаблонный файл необходимо настроить правила замены переменных. В настройках действия укажите соответствие: слева — имя переменной в шаблоне, справа — имя поля источника данных, заключенное в фигурные скобки. Выбор поля осуществляется через выпадающий список, открываемый кнопкой с многоточием.
Если поле содержит список значений или отображается некорректно, добавьте к имени поля суффикс _printable. Например, используйте {=Document:PROPERTY_TIP_OPLATY_printable} вместо {=Document:PROPERTY_TIP_OPLATY}.
После настройки всех параметров нажмите кнопку «Сохранить» в окне генератора, а затем сохраните изменения в бизнес-процессе, используя кнопку внизу страницы.
Для просмотра идентификатора диска в административной части Битрикс перейдите в раздел «Настройки» — «Таблицы». Выберите таблицу b_disk_storage, найдите нужный диск по имени и узнайте его ID в соответствующей колонке.
В меню Диск выберите нужную папку. Рядом с её названием отобразится поле с идентификатором. Если поле отсутствует, включите его отображение в настройках.
Для вывода списка строк с переносом на новую строку используйте специальные XML-теги. Например, тег w:br.
Строка подстановки должна иметь следующий формат:
Пункт1 w:br Пункт2 w:br Пункт3
Добавление ссылки на сгенерированный файл
Часто требуется вывести ссылку на созданный документ. Для этого в разделе Дополнительные результаты используйте значение Ссылка для скачивания документа активити Документ Word из шаблона.
Ссылку можно отобразить в сообщениях Живой ленты двумя способами:
1. Через тег: [url={=A14775_64625_42428_11813:Path}] ссылка [/url]. Значение {=A14775_64625_42428_11813:Path} выбирается в дополнительных результатах как значение активити Ссылка для скачивания документов. В результате отображается кликабельное слово ссылка, по которому скачивается документ.
2. Через системную переменную: {=System:HostUrl}{=A14775_64625_42428_11813:Path}, где
Генератор документов Pro от Эм Си Арт позволяет формировать ссылки для скачивания файлов. Ссылка создается путем вставки значения активити «Ссылка для скачивания документов» в дополнительные результаты. Формируемый адрес содержит имя портала и путь к файлу с расширением .docx.
Для создания таблицы произвольного размера в выходном файле выполните следующие действия. Сначала создайте макет таблицы в шаблонном файле. В примере используется поле LIST, которое указывает генератору на обращение к строковым данным массива. После точки указывается название колонки. Например, поле list.id будет заполнять данные из массива list[id] построчно, что в данном случае соответствует порядковому номеру товара.
Затем сформируйте массив данных. Структура должна включать массивы для каждого поля, например [id], [fio], [city]. Количество значений в каждом столбце должно быть одинаковым, иначе таблица сформируется некорректно.
Далее выполните сериализацию массива с помощью функции serialize(ваш_массив). Если результат сериализации сохранен в переменной hostlist, настройка параметров Генератора должна выглядеть как LIST={=Variable:hostlist}. После настройки сохраните конфигурацию генератора.
Генератор документов Pro
Если поле документа представляет собой список, к правилу вывода необходимо добавить суффикс _printable. Если другие типы полей не отображаются, также попробуйте использовать этот суффикс.
Например: вместо {=Document:PROPERTY_TIP_OPLATY} укажите {=Document:PROPERTY_TIP_OPLATY_printable}.
Пример кода на PHP:
$rootA = $this->GetRootActivity();
$table_list=array (
"id" => array (1,2,3),
"fio" => array ("Иванов Иван Иванович", "Петров Петр Петрович", "Сидоров Сидр Сидорович"),
"city" => array ("Челябинск", "Владивосток", "Пермь")
);
$table_str=serialize($table_list);
$rootA->SetVariable("hostlist",$table_str);
Внедрение «Генератор документов Pro» можно поручить General iT — от установки до настройки и проверки совместимости с сайтом.