Шаблоны документов

Шаблоны документов в Delta CRM автоматизируют создание юридически и коммерчески значимых документов: договоров, актов, презентаций и других файлов.

Система:

  • подставляет значения полей сделки или объекта недвижимости;
  • обрабатывает условия и циклы;
  • формирует итоговый файл в формате PDF или Word.

Где найти и как создать шаблон

  • Перейдите в рабочую область «Система» в левом верхнем углу.
  • В боковом меню откройте «Настройки» → «Шаблоны документов».
  • Нажмите кнопку «Добавить».
  • Заполните форму создания шаблона.

Ключевые поля формы

Поле Описание
Раздел Определяет контекст данных, доступных в шаблоне.
Сделка — используется для договоров, актов и приложений и других документов в сделках. Доступны данные сделки, контактов и объекта недвижимости.
Объект недвижимости — используется для презентаций, листовок и карточек объекта. Доступны характеристики и фотографии объекта.
Наименование шаблона Понятное название шаблона, например «Договор купли-продажи» или «Презентация квартиры».
HTML Тело шаблона с переменными, условиями и циклами.
Имя файла Имя итогового файла. Для уникализации можно использовать переменные.
Тип файла Формат итогового документа: PDF или Word.
Ширина/Высота (мм) Размер страницы. По умолчанию используется формат A4: 210 × 297 мм.
Размеры полей (мм) Отступы сверху, справа, снизу и слева для корректной печати.

Синтаксис и логика

Система обрабатывает шаблон в строгом порядке:
  1. Циклы foreach
  2. Условия if
  3. Подстановка переменных {{...}}.

Циклы: {{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-свойства.
Избегайте сложных CSS-селекторов и медиазапросов.

Изображения

В шаблонах объектов фотографии уже закодированы в формате Base64 и готовы к вставке:
<img src="data:image/jpeg;base64,...">
Не подставляйте URL-адреса изображений — они не будут отображаться в PDF.

Отладка

Для проверки подстановки переменных временно добавьте в шаблон строки вида:
DEBUG: {{deal::sum}}
После этого сгенерируйте документ и проверьте результат.
В этом разделе

Мы свяжемся с вами