Шаблоны документов
Шаблоны документов в Delta CRM автоматизируют создание юридически и коммерчески значимых документов: договоров, актов, презентаций и других файлов.
Система:
- подставляет значения полей сделки или объекта недвижимости;
- обрабатывает условия и циклы;
- формирует итоговый файл в формате PDF или Word.
Где найти и как создать шаблон
- Перейдите в рабочую область «Система» в левом верхнем углу.
- В боковом меню откройте «Настройки» → «Шаблоны документов».
- Нажмите кнопку «Добавить».
- Заполните форму создания шаблона.
Ключевые поля формы
| Поле | Описание |
|---|---|
| Раздел | Определяет контекст данных, доступных в шаблоне. Сделка — используется для договоров, актов и приложений и других документов в сделках. Доступны данные сделки, контактов и объекта недвижимости. Объект недвижимости — используется для презентаций, листовок и карточек объекта. Доступны характеристики и фотографии объекта. |
| Наименование шаблона | Понятное название шаблона, например «Договор купли-продажи» или «Презентация квартиры». |
| HTML | Тело шаблона с переменными, условиями и циклами. |
| Имя файла | Имя итогового файла. Для уникализации можно использовать переменные. |
| Тип файла | Формат итогового документа: PDF или Word. |
| Ширина/Высота (мм) | Размер страницы. По умолчанию используется формат A4: 210 × 297 мм. |
| Размеры полей (мм) | Отступы сверху, справа, снизу и слева для корректной печати. |
Синтаксис и логика
Система обрабатывает шаблон в строгом порядке:- Циклы foreach
- Условия if
- Подстановка переменных {{...}}.
Циклы: {{foreach}}
Позволяют выводить повторяющиеся блоки (например, список продавцов, позиций в акте).
Синтаксис:
{{foreach(переменная[, разделитель])}}
...шаблон строки...
{{endforeach}}
Пример: список продавцов
{{foreach(sellers)}}
<tr>
<td>{{this::NAME}}</td>
<td>{{this::LAST_NAME}}</td>
<td>{{this::PHONE}}</td>
</tr>
{{endforeach}}
Нюансы
Внутри цикла ключевое слово this заменяется на путь к текущей итерации, например sellers::0 или sellers::1.Второй параметр — разделитель, который вставляется между итерациями. Например, запятая или перенос строки.
В цикле можно использовать условия и другие вложенные циклы.
Условия {{if}}
Условия позволяют показывать или скрывать блоки в зависимости от значений полей.Синтаксис
{{if(условие)}}
...контент при истине...
{{endif}}
Варианты условий:
Проверка на непустое значение:
{{if(object::address_full)}} — блок отобразится, если поле заполнено.Сравнение:
{{if(deal::sum > 1000000)}} — блок отобразится, если сумма сделки больше 1 млн. Допустимые операторы: ==, !=, >, <, >=, <=.Пример: вывод строки только при наличии телефона
{{if(object::phone == 'Y')}}
<p>Телефон: есть</p>
{{endif}}
Переменные {{...}}
Переменные подставляют значения из данных CRM. Путь к полю задаётся с помощью разделителя ::.
Примеры:
{{deal::sum}} — Сумма сделки.
{{sellers::0::NAME}} — Имя первого продавца.
{{object::price_format}} — Отформатированная цена с валютой и разделителями.
Нюансы
- Если поле не найдено или пусто, подставляется пустая строка.
- Для чисел и дат часто используются заранее подготовленные форматированные поля, например sum_format и date.
Практические сценарии
Договор с несколькими продавцами
Используйте цикл {{foreach(sellers)}} для генерации строк таблицы или абзацев с ФИО и паспортными данными продавцов.Презентация объекта
В шаблоне раздела «Объект недвижимости»:- выводите галерею фотографий через цикл по массиву photos;
- выводите характеристики объекта;
- используйте условия для отдельных блоков.
Например, блок «Лоджия» можно показывать только в том случае, если поле balcony заполнено.
Условные пункты договора
Скрывайте или показывайте пункты о рассрочке или залоге с помощью условия:{{if(deal::payment_type == 'installment')}}
<p>Оплата производится в рассрочку.</p>
{{endif}}
Таблицы переменных
Раздел «Сделка»
| Переменная / путь | Описание | Пример значения |
|---|---|---|
deal::sum |
Сумма сделки, число | 5000000 |
deal::sum_format |
Отформатированная сумма сделки | 5 000 000 ₽ |
deal::date |
Дата сделки в отформатированном виде | 15.10.2024 |
sellers |
Массив продавцов для использования в цикле | [{NAME: "Иван", LAST_NAME: "Петров"}, ...] |
sellers::0::NAME |
Имя первого продавца | Иван |
sellers::0::LAST_NAME |
Фамилия первого продавца | Петров |
buyers |
Массив покупателей для использования в цикле | [{NAME: "Анна", LAST_NAME: "Сидорова"}, ...] |
object::area-value |
Общая площадь объекта, кв. м | 65.3 |
object::params |
Сформированная строка характеристик объекта | общая площадь – 65.3 кв.м, жилая площадь – 40.1 кв.м, площадь кухни – 12.5 кв.м, 1 лоджия, 5/16 этажного панельного дома, перекрытия – ж/б, телефон – нет |
deal::sellers_format |
Формулировка «Продавец» или «Продавцы» | Продавцы или Продавец |
deal::sellers_called |
Формулировка «именуемый», «именуемая» или «именуемые» | именуемые |
deal::buyers_format |
Формулировка «Покупатель» или «Покупатели» | Покупатель |
deal::buyers_called |
Формулировка «именуемый» или «именуемая» | именуемый |
Раздел «Объект недвижимости»
| Переменная / путь | Описание | Пример значения |
|---|---|---|
object::price_value |
Цена объекта, число | 12000000 |
object::price_format |
Цена объекта с валютой и разделителями | 12 000 000 ₽ |
object::price-currency |
Валюта цены | RUB |
object::address_full |
Полный адрес объекта | г. Москва, ул. Ленина, д. 10, кв. 5 |
object::area-value |
Общая площадь, кв. м | 85.4 |
object::living-space-value |
Жилая площадь, кв. м | 55.2 |
object::kitchen-space-value |
Площадь кухни, кв. м | 14.0 |
object::floor |
Этаж и общее количество этажей | 5/16 |
object::building-type |
Тип здания, код | 3 (панельный) |
object::metro-name |
Название ближайшей станции метро | Парк Победы |
object::line_name |
Название линии метро | Арбатско-Покровская |
object::line_color |
Цвет линии метро в формате HEX | #0095DB |
object::photo |
HTML с изображениями галереи | |
object::image_plan |
План помещения в виде HTML-элемента |
|
objects |
Массив всех объектов, если шаблон используется для нескольких объектов | [{id: 123, price_value: 12000000, ...}, ...] |
object::_index |
Индекс текущего объекта в цикле, начиная с 0 | 0 |
Важные нюансы и ошибки
Порядок обработки
Всегда учитывайте порядок обработки:1 - foreach.
2 - if.
3 - Переменные.
Пути к полям
Используйте только ключи, указанные в таблицах переменных. Если путь указан неправильно, система подставит пустую строку без сообщения об ошибке.HTML в шаблоне
Для PDF используйте простую вёрстку:- таблицы;
- div с фиксированной шириной;
- базовые CSS-свойства.
Изображения
В шаблонах объектов фотографии уже закодированы в формате Base64 и готовы к вставке:<img src="data:image/jpeg;base64,...">
Не подставляйте URL-адреса изображений — они не будут отображаться в PDF.
Отладка
Для проверки подстановки переменных временно добавьте в шаблон строки вида:DEBUG: {{deal::sum}}
После этого сгенерируйте документ и проверьте результат.