Вопрос

Добавление обработчика макроса в шаблоне email-сообщения

Здравствуйте!

Есть статья на академии: https://academy.terrasoft.ru/documents/technic-sdk/7-12/dobavlenie-obrabotchika-makrosa-v-shablone-email-soobshcheniya

Сделал всё как там описано. После добавления макроса в шаблон, типа [#@Invoke.UsrTestStringGenerator#], приходит пустоё значении в письме. Обращение к классу UsrTestStringGenerator при разборе не происходит (добавлял логирование). Может кто сталкивался?

Нравится

15 комментариев

1) Посмотрите что у вас в таблице EmailTemplateMacros имеется запись с Name='UsrTestStringGenerator ' Возможно записей с Name='@Invoke' у вас не біло и вы не зарегестрировали (в ставили в EmailTemplateMacros) свой макрос!

1)  Вы опубликовали созданую вами схему? Попробуйте перекомпилировать конфигурацию (Конфигурация -> Компилировать все)

По пункту 1:

По пункту 2: Это железно.

 

А как вы отправляете письмо по шаблону?

Пример отправки письма из БП тут. Обратите внимание при отправке письма по шаблону надо указать параметр  [Запись для создания макросов] это id объекта относительно которого будут вычитаны поля макроса!

 

 

Это рассылка, из раздела:

отправляю в шаблоне так:  UsrTestStringGenerator: [#@Invoke.UsrTestStringGenerator#] 
Всё как в статье.

Олег Кречетов,

Из раздела пимьма? Как вы передаете Id записи для создания макроса? Что с остальными параметрами они проинициализированы значениями?

 

Id записи передаётся с клиентской части. Но в том то и смысл макроса, что значение возвращает подготовленный класс. Который в моём случае даже не вызывается. А судя по статье, так можно вставить в тело письма  любой расчетный параметр.

1) Остальные макросы получают значения, если их в тестовом письме нет то добавь и проверь

2) Попробуй пример отправки С БП (тот что я выше тебе кинул) есть разница?

3) d записи передаётся с клиентской части

 вот этого не понял при тестовой отправки может не привязыватся к объекту и соответственно не дергать генератор IMacrosInvokable...

Генератор -  IMacrosInvokable? Это просто интерфейс который реализует класс.

Олег Кречетов,

Спасибо за уточнение существенно облегчило решение вашей проблемы. Естественно имелся в виду генератом (InvokableMacrosHelperService) оторый по шаблону письма создаёт письмо. И который как я подозреваю, не вызывает MacrosInvokable  если с шаблоном не передавать вышеописанное Id объекта.

 

 

 

Григорий,

К сожалению, при облачной рассылке сервис InvokableMacrosHelperService не используется. Используется CESMacrosHelper. 

Попробуйте проверить работу других аналогичных макросов, доступных стандартно: срабатывают ли они, заходит ли выполнение в их классы.

Зверев Александр,

Проверил, всё работает и кастомные тоже, в случае если письмо создаётся в ручную. Проблема только при облачной рассылке.  

Олег Кречетов,

На проекте столкнулся с данной проблемой и мы с ТП решали её месяц-полтора... Вообщем: класс для отправки email с макросами и класс для отправки рассылок - разные. И в одном встроен функционал по обработке сложных макросов кастомными классами, в другом - нет. Самый легкий выход - view, использование колонок из view(стандартные "колоночные" макросы он понимает)

Варфоломеев Данила,

Классы - разные, я понял. отладил. Мне ТП тоже пока не отвечает. Возможно - вьюха - вариант :-) 

Показать все комментарии