Фабрика документов

Модификаторы: ФИО, падежи, адреса и списки

Справочник поддерживаемого синтаксиса через ~: дата, ФИО, телефон, адрес и множественные значения. Примеры и ограничения совместимости.

Содержание руководства

В DOCX и XLSX поддерживается запись некоторых Bitrix-модификаторов через ~ внутри одинарных скобок. Она позволяет оформить ФИО, дату, телефон, адрес или элемент списка. Это совместимость с перечисленными ниже конструкциями; поддержка всего синтаксиса стандартного генератора Битрикс24 не заявляется.

Как записать модификатор

Сначала найдите поле в каталоге данных. После его кода поставьте ~, затем модификатор. Несколько параметров разделяются запятыми:

{company.name~letterCase=upper}
{contact.email~default=не указан}

Для компании «ООО Ромашка» первое выражение даст «ООО РОМАШКА». При пустом e-mail второе выведет «не указан». Не меняйте код поля и регистр параметров из примера. Модификатор меняет вывод; он не заполняет реквизиты в CRM.

Фамилия, имя, отчество и инициалы

Для связанного контакта можно задать состав ФИО:

{ContactFormattedName~Format=#LAST_NAME# #NAME_SHORT# #SECOND_NAME_SHORT#}

Для Иванова Ивана Ивановича ожидается «Иванов И. И.». Доступны части #LAST_NAME#, #NAME#, #SECOND_NAME#, #NAME_SHORT# и #SECOND_NAME_SHORT#. Контакт должен быть связан с исходной карточкой, а соответствующие части имени заполнены.

Падеж задаётся параметром Case:

Значение Падеж
-1 Именительный
0 Родительный
1 Дательный
2 Винительный
3 Творительный
4 Предложный
{ContactFormattedName~Format=#LAST_NAME# #NAME# #SECOND_NAME#,Case=1}

В примере ожидается «Иванову Ивану Ивановичу». Склонение обязательно проверьте вручную в готовом документе, особенно для редких фамилий и нестандартно заполненного ФИО.

Дата: маска отличается от фильтра date

Внутри цикла задач для даты текущей строки можно использовать:

{item.created_date~d.m.Y}

Для 14 сентября 2026 года получится 14.09.2026. Маска d.m.Y относится к записи через ~. В фильтре после | та же дата оформляется другим выражением:

{{ item.created_date | date("dd.MM.yyyy") }}

Не переносите маску dd.MM.yyyy в пример с ~ и наоборот. item существует внутри своего цикла; вне цикла выберите полный путь даты из каталога. Оба способа оформляют переданное значение, без смены часового пояса.

Телефон

{contact.phone~format=E.164}

Если в contact.phone передан номер +79991234567, результатом будет +79991234567. Поддерживаются варианты E.164, International и National. Проверьте вывод на фактическом номере: телефон неподходящего формата может остаться без изменений.

Адрес и разделители

{company.legal_address~Format=5,Separator=1}

Для текстового адреса «Москва, Тестовая улица, 1» сохраняется одна строка. Separator=2 или Separator=3 заменяет разделители «запятая-пробел» переносами. У структурированного адреса строка собирается из заполненных частей.

Шаблон не извлекает адрес из произвольного комментария. Проверьте поле клиента и источник реквизитов. В Word оцените переносы, а в Excel также высоту строки и отображение многострочного текста.

Множественное значение

Пусть условное поле deal.tags передано списком "Монтаж", "Доставка". Замените этот путь своим множественным полем из каталога:

Задача Выражение Результат примера
Взять первый элемент {deal.tags~index=0} Монтаж
Также взять первый {deal.tags~mfirst=y} Монтаж
Объединить значения {deal.tags~all=y} Монтаж, Доставка

Эти параметры работают, когда поле передано массивом. Если приложение уже передало готовую строку, параметры выбора элемента не разделят её обратно на значения. Для повторяемых строк используйте цикл по списку в Word или Excel.

Деньги, регистр и короткий текст

Задача Выражение
Сумма с рублём {Opportunity~money=y}
Сумма без символа валюты {Opportunity~moneyNoCurrency=y}
Верхний регистр {company.name~letterCase=upper}
Нижний регистр {company.name~letterCase=lower}
Начальные заглавные {company.name~letterCase=title}
Запасной текст {contact.email~default=не указан}
Обрезка до 12 символов {Title~truncate=12}

Для запасного значения также поддерживается empty. Денежные модификаторы используют рубли. Для незаполненной суммы предпочтительнее фильтр money, сохраняющий пустоту. Обрезка названия «Поставка оборудования» до 12 символов даст «Поставка об…».

Длительность задаётся через фильтр

duration не относится к модификаторам через ~. Для зарегистрированных трудозатрат задачи используйте двойные скобки:

{{ item.time_spent_in_logs | duration("HH:mm:ss") }}

Для 9300 секунд получится 02:35:00. Правила пустого значения, допустимых секунд и вывода числом находятся в справочнике форматирования.

Перед применением откройте «Тестовая генерация» в карточке шаблона и проверьте примеры на своих условных данных. Затем сформируйте документ из контрольной карточки CRM. Сравните имя, падеж, дату, адрес и множественные поля в готовом файле. Все разделы руководства.