Зв`язок
Вітаю! Я, Віталій, Ваш особистий надійний програміст.
1С Підприємство 8.2-8.3, 1С-Бітрікс: Управління сайтом, Бітрікс24

Генератор документів Pro

"Усовершенствуйте процесс создания и автоматизации документов в рамках Битрикс24 с помощью модуля 'Генератор документов Pro'. Создавайте шаблоны документов, добавляйте персонализированные поля и экспортируйте готовые документы в различные форматы. Увеличьте эффективность вашего бизнеса прямо сейчас!"
Бітрікс Генератор документів Pro
Генератор документів Pro (mcart.gendoc) - Модуль Бітрікс

Модуль призначений для швидкого вирішення шаблонних питань, пов'язаних із підготовкою файлів.

Генератор документів формує файли з розширенням .docx на основі створеного користувачем шаблону, підставляючи поля текстові, табличні дані і зображення.

Опис роботи (приклад).

Попередньо слід створити документ із розширенням .docx, який буде шаблоном для генерації файлів. У ньому потрібно задати імена полів для підстановки.

Імена полів задаються у фігурних дужках латинськими літерами, наприклад: {COMP_NAME}. Розташуйте поля з іменами змінних у потрібних місцях файлу-шаблону, збережіть.

Рада! При роботі з MacOS бажано для створення шаблонів використовувати MS Word для Windows. Заповнений шаблон завантажити в систему. Зробити це можна двома способами – завантажити на Диск у порталі або в папку в адміністративній частині. Розглянемо обидва способи завантаження:

1. Зайдіть в меню Диск, виберіть потрібну папку для шаблону та завантажте туди ваш файл-шаблон.

2. В адміністративній частині Бітрікс зайдіть у розділ Контент — Файли та папки. Натисніть Завантажити файл — вкажіть шлях до шаблону.

У будь-якому місці ланцюжку бізнес процесу додайте активити «Генератор документів» (у системі він може позначатися як Документ word із шаблону [mcart]):

Відкрийте налаштування активіті. У налаштуваннях дії Генератора прописуються поля, з яких братимуться дані для підстановки змінні поля шаблона.

Розглянемо докладніше поля налаштувань Генератора:

  • Заголовок - ім'я даного активіті. Це особливо зручно, якщо їх дещо в ланцюжку бізнес-процесу. У цьому випадку створені файли з результатом будуть мати різні імена, задані вами в налаштуваннях кожного активіті;
  • галочку «Обробляти поля у форматі Merge Field» проставляти НЕ потрібно;
  • Шлях до шаблону документа — шлях до завантаженого файлу із шаблоном. Наприклад: /generator/template.docx або 523, де 523 - ID файлу на диску. Якщо в полі прописані літери - модуль розпізнає шлях, якщо цифри знаходить файл з таким ID;
  • Шлях до файлу, що зберігається, і ім'я — шлях і назва для збереженого файлу з вихідними даними та розширенням .docx. Ви можете прописати тут повний шлях до файлу та формат його назви, а можете вказати тільки назву, вказавши шлях до файлу нижче. Приклад заповнення: /generator/kp_{=System:Date}.docx (в даному випадку ім'я файлу міститиме літери kp, знак підкреслення та поточну дату. Якщо ви вказуєте тільки формат назви вихідного файлу, наприклад: kp_{=System:Date} .docx, то заповніть нижченаведені поля:
  • ID диска — ID диска, на який потрібно зберегти файл результату. Як переглянути ID диска, вказано нижче.
  • ID папки на диску — ID папки, до якої потрібно помістити файл результату. Як переглянути ID папки, вказано нижче.
  • Далі потрібно додати правила для заміни змінних у шаблонному файлі на дані. Для встановлення в змінні шаблонного файлу в налаштуваннях дії потрібно прописати правила із зазначенням імені змінної та імені поля, з якого будуть братися дані. У лівій частині прописується ім'я змінної у шаблоні, а правій частині — ім'я поля, звідки потрібно взяти дані. Ім'я поля вказується у фігурних дужках. Поле даних можна вибрати зі списку, натиснувши кнопку з трьома крапками біля поля.

Увага! Якщо поле документа є списком, то до правила варто додати _printable. Якщо не виводяться інші типи полів, також спробуйте використовувати приставку _printable.

Наприклад: замість {=Document:PROPERTY_TIP_OPLATY} вкажіть {=Document:PROPERTY_TIP_OPLATY_printable}.

Після заповнення всіх полів Генератора, натисніть кнопку «Зберегти. Потім збережіть зміни, внесені до бізнес-процесу (кнопка внизу).

Як подивитися ID диска.

ID диска ви можете подивитися наступним чином: в адміністративній частині Бітрікс зайдіть у Налаштування - Таблиці - виберіть у списку таблицю b_disk_storage, знайдіть потрібний вам диск за його назвою і подивіться у відповідній графі ID.

Як подивитися ID папки.

Зайдіть до меню Диск, виберіть потрібну папку. Поруч із назвою ви побачите поле з її ID. Якщо такого поля немає, зайдіть у налаштування та додайте відображення цього поля.

Як вивести список рядків з переходом на новий рядок.

Відповідь: Потрібно користуватися спеціальними xml тегами.

Наприклад, скористатися таким тегом .

Тобто підставка рядок повинен мати вигляд:

Пункт1Пункт2Пункт3

Як додати посилання на згенерований файл

Дуже часто виникає необхідність виводити посилання на сформований документ.

Для цього можна скористатися значенням Посилання для скачування документа активити Документ Word із шаблону в Додаткові результати.

Посилання можна вивести в Повідомлення Живої стрічки, прописавши наступні значення:

1. Висновок через тег: посилання, де {=A14775_64625_42428_11813:Path}-вибирається через вставку значення у додаткових результатах значення[
[P] Виводиться клікабельне слово «посилання», при натисканні на яке завантажується згенерований документ.
[P]2. Виведення через системну змінну: {=System:HostUrl}{=A14775_64625_42428_11813:Path}, де

{=A14775_64625_42428_11813:Path}-вибирається через вставку значення у додаткових результатах значення активіті «Посилання для скачування документів»

Виводиться посилання виду:

https://назва порталу/disk/downloadFile/...81%29. docx

Як згенерувати у вихідному файлі таблицю довільного розміру

1. Скласти макет майбутньої таблиці у шаблонному файлі. У цьому прикладі LIST - це поле, яке потрібно буде вказати в налаштуваннях генератора для звернення до рядкових даних масиву, після точки вказується назва колонки. Так, у полі list.id будуть розміщені дані з масиву list[id] рядково. У цьому прикладі — це порядковий номер товару у таблице.

2. Сформувати масив. Він повинен мати такий вигляд:
[P][id] => Array

Далі рядково перераховуються всі поля масиву у форматі:

[fio] => Array

... [/ P]
[P][city] => Array

Кількість значень у стовпцях має бути однаковим, інакше таблиця буде сформована некоректно.

3. Серіалізувати масив:

serialize(ваш_масив);

Припустимо, масив був серіалізований в змінну hostlist. У такому разі налаштування параметрів Генератора буде виглядати так:

LIST={=Variable:hostlist}

Збережіть налаштування генератора.

Увага! Якщо поле документа є списком, до правила варто додати _printable. Якщо інші типи полів не виводяться, також спробуйте використовувати приставку _printable.

Наприклад: замість {=Document:PROPERTY_TIP_OPLATY} вкажіть {=Document:PROPERTY_TIP_OPLATY_printable}

Приклад PHP-коду:

$rootA = $this->GetRootActivity();

$table_list=array (

"id" => array (1,2,3), [/ P]
[p] "fio" => array ("Іванов Іван Іванович", "Петров Петро Петрович", "Сидоров Сидр Сидорович"),

" city " => array ( " Челябінськ " , " Владивосток " , " Перм " )

);

$table_str=serialize($table_list);

$rootA->SetVariable("hostlist",$table_str);

Наш модуль вже успішно використовують на наших проектах

file_download Завантажити Модуль Маркет
file_download Завантажити Модуль Маркет