Здравствуйте!
Есть статья на академии: https://academy.terrasoft.ru/documents/technic-sdk/7-12/dobavlenie-obrabotchika-makrosa-v-shablone-email-soobshcheniya
Сделал всё как там описано. После добавления макроса в шаблон, типа [#@Invoke.UsrTestStringGenerator#], приходит пустоё значении в письме. Обращение к классу UsrTestStringGenerator при разборе не происходит (добавлял логирование). Может кто сталкивался?
Нравится
1) Посмотрите что у вас в таблице EmailTemplateMacros имеется запись с Name='UsrTestStringGenerator ' Возможно записей с Name='@Invoke' у вас не біло и вы не зарегестрировали (в ставили в EmailTemplateMacros) свой макрос!
1) Вы опубликовали созданую вами схему? Попробуйте перекомпилировать конфигурацию (Конфигурация -> Компилировать все)
А как вы отправляете письмо по шаблону?
Пример отправки письма из БП тут. Обратите внимание при отправке письма по шаблону надо указать параметр [Запись для создания макросов] это id объекта относительно которого будут вычитаны поля макроса!
отправляю в шаблоне так: UsrTestStringGenerator: [#@Invoke.UsrTestStringGenerator#]
Всё как в статье.
Олег Кречетов,
Из раздела пимьма? Как вы передаете Id записи для создания макроса? Что с остальными параметрами они проинициализированы значениями?
Id записи передаётся с клиентской части. Но в том то и смысл макроса, что значение возвращает подготовленный класс. Который в моём случае даже не вызывается. А судя по статье, так можно вставить в тело письма любой расчетный параметр.
1) Остальные макросы получают значения, если их в тестовом письме нет то добавь и проверь
2) Попробуй пример отправки С БП (тот что я выше тебе кинул) есть разница?
3) d записи передаётся с клиентской части
вот этого не понял при тестовой отправки может не привязыватся к объекту и соответственно не дергать генератор IMacrosInvokable...
Генератор - IMacrosInvokable? Это просто интерфейс который реализует класс.
Олег Кречетов,
Спасибо за уточнение существенно облегчило решение вашей проблемы. Естественно имелся в виду генератом (InvokableMacrosHelperService) оторый по шаблону письма создаёт письмо. И который как я подозреваю, не вызывает MacrosInvokable если с шаблоном не передавать вышеописанное Id объекта.
Григорий,
К сожалению, при облачной рассылке сервис InvokableMacrosHelperService не используется. Используется CESMacrosHelper.
Попробуйте проверить работу других аналогичных макросов, доступных стандартно: срабатывают ли они, заходит ли выполнение в их классы.
Зверев Александр,
Проверил, всё работает и кастомные тоже, в случае если письмо создаётся в ручную. Проблема только при облачной рассылке.
Олег Кречетов,
На проекте столкнулся с данной проблемой и мы с ТП решали её месяц-полтора... Вообщем: класс для отправки email с макросами и класс для отправки рассылок - разные. И в одном встроен функционал по обработке сложных макросов кастомными классами, в другом - нет. Самый легкий выход - view, использование колонок из view(стандартные "колоночные" макросы он понимает)
Варфоломеев Данила,
Классы - разные, я понял. отладил. Мне ТП тоже пока не отвечает. Возможно - вьюха - вариант :-)