Как добавить свои реквизиты и новые параметры в шаблоны писем и SMS в 1С:УНФ

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет IT и автоматизация бизнеса
← На главную

При работе в 1С:Управление нашей фирмой (УНФ) пользователи часто сталкиваются с необходимостью кастомизации почтовых рассылок и уведомлений. Стандартный набор параметров в шаблонах писем (таких как «Номер», «Дата», «Сумма документа») ограничен, и когда требуется вывести специфический реквизит, например, дополнительное свойство заказа или данные о складе, типовой интерфейс не предлагает очевидных кнопок для добавления. Рассмотрим подробно, как решить эту задачу с помощью технических инструментов платформы.

Анализ механизма формирования параметров

Для начала разберем, откуда программа берет список полей, которые мы видим при создании шаблона в меню CRM — Шаблоны писем, SMS. В конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), список доступных подстановок не строится динамически по всем метаданным объекта. Вместо этого используется специальный механизм на основе Схемы компоновки данных (СКД).

Проанализируем структуру объекта, на примере документа ЗаказПокупателя. Внутри этого объекта в конфигураторе существует предопределенный макет, который отвечает за поставку данных в почтовые шаблоны. Если мы просто добавим новый реквизит в документ, он не появится в списке параметров автоматически. Нам необходимо явно «сообщить» системе, что это поле должно быть доступно для выбора.

Пошаговая инструкция по добавлению параметров через макет СКД

Рассмотрим основной технический способ решения проблемы, который заключается в редактировании макета данных. Выполним следующие шаги:

  1. Откроем конфигуратор и найдем интересующий нас объект (например, документ ЗаказПокупателя).
  2. Перейдем на вкладку Макеты.
  3. Найдем макет с именем СКД_ДанныеШаблонаСообщений. Это стандартное имя для большинства документов в современных версиях УНФ.
  4. Откроем этот макет. Перед нами появится стандартный конструктор схемы компоновки данных.
  5. Перейдем на закладку Набор данных. Здесь мы увидим запрос или объект, который выбирает поля из базы данных.
  6. В списке доступных полей найдем наш новый или типовой реквизит, который ранее отсутствовал в шаблоне, и добавим его в выбранные поля или в список полей набора данных.
  7. Важный момент: обратите внимание на псевдонимы полей. Именно «Заголовок» поля в СКД будет отображаться пользователю в режиме «1С:Предприятие». Например, если реквизит называется Контрагент, а вы хотите, чтобы в шаблоне он назывался Покупатель, установите соответствующий заголовок в колонке «Поле» или «Путь».
  8. Сохраним изменения и обновим конфигурацию базы данных.

После выполнения этих действий при создании или редактировании шаблона письма по данному документу в списке параметров появится ваш новый пункт.

Использование расширений для внесения изменений

Проанализируем ситуацию с точки зрения поддержки программного продукта. Изменение макетов напрямую в основной конфигурации крайне нежелательно, так как это затруднит последующие обновления программы. Правильным подходом будет использование Расширений конфигурации.

Разберем алгоритм действий при использовании расширения:

  1. Создадим новое расширение (или используем существующее).
  2. Добавим в расширение документ (например, ЗаказПокупателя).
  3. Перенесем макет СКД_ДанныеШаблонаСообщений в расширение.
  4. Выполним правки в СКД внутри расширения (добавим нужные поля в запрос).

Такой метод гарантирует, что при обновлении типовой конфигурации ваши настройки параметров шаблонов сохранятся и не будут затерты.

Продвинутая настройка: Вычисляемые поля и форматирование

Поскольку макет формирования данных — это полноценная СКД, мы можем использовать ее мощные инструменты для подготовки текста. Рассмотрим пример, когда нам нужно вывести не просто дату, а дату в специфическом формате, или объединить несколько строк в одну.

Выясним, как добавить сложное поле. На закладке Вычисляемые поля в СКД мы можем прописать выражение на языке 1С. Например, для формирования вежливого обращения можно использовать конструкцию:


ВЫБОР 
    КОГДА Контрагент.Пол = ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.Женский) 
    ТОГДА "Уважаемая, " + Контрагент.Имя
    ИНАЧЕ "Уважаемый, " + Контрагент.Имя 
КОНЕЦ

Также мы можем управлять форматом чисел. Чтобы сумма в письме не содержала неразрывных пробелов или имела строго два знака после запятой, в настройках поля набора данных (колонка Оформление) зададим параметр Формат. Например: ЧДЦ=2; ЧГ=0.

Работа с дополнительными реквизитами

Рассмотрим альтернативный способ, который не требует программирования и изменения конфигурации. В 1С:УНФ реализован механизм Дополнительных реквизитов и сведений. Если вы добавляете реквизит через пользовательский интерфейс (Настройки — Общие настройки), система зачастую умеет подтягивать их в шаблоны автоматически.

Однако, если «Доп. реквизит» не отображается в списке параметров шаблона, проверьте следующие настройки:

Вывод данных из табличных частей

Одной из самых сложных задач является вывод списка товаров из Заказа покупателя прямо в текст письма. Стандартные параметры обычно работают только с «шапкой» документа. Чтобы вывести таблицу товаров, проанализируем возможности СКД в макете шаблона.

В современных версиях БСП для этого используются вложенные наборы данных или объединение строк в одну переменную через функцию СоединитьСтроки() в вычисляемых полях СКД. Если же конфигурация позволяет использовать итераторы в тексте самого шаблона, то в СКД достаточно добавить выборку из табличной части Запасы. В тексте письма это может выглядеть примерно так (в зависимости от версии БСП):

[СтрокаТовара.Номенклатура] — [СтрокаТовара.Количество] [СтрокаТовара.ЕдиницаИзмерения]

Программное вмешательство через события

Если возможностей СКД недостаточно (например, данные нужно получить из внешнего API или произвести сложнейший расчет в момент отправки), следует использовать переопределяемые модули. В 1С:УНФ за это отвечает модуль УправлениеШаблонамиСообщенийПереопределяемый. При исследовании и программной доработке подсистем пригодится справочник по методам БСП.

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


Процедура ПриФормированииСпискаПараметров(ИмяШаблона, СписокПараметров) Экспорт
    Если ИмяШаблона = "ЗаказПокупателя" Тогда
        НоваяСтрока = СписокПараметров.Добавить();
        НоваяСтрока.Имя = "ТекущаяПогодаНаСкладе";
        НоваяСтрока.Заголовок = "Погода на складе (внешние данные)";
    КонецЕсли;
КонецПроцедуры

Таким образом, мы проанализировали все уровни настройки параметров шаблонов: от простого пользовательского добавления реквизитов до глубокой модификации макетов СКД и программного кода. Использование макета СКД_ДанныеШаблонаСообщений является наиболее универсальным и рекомендуемым способом для разработчика 1С.

← На главную