Создан шаблон. В нем есть макрос Status# - "Статус обращения" при рассылке направляется получателю на английском языке - EN.

В шаблон был добавлен язык RU - но статус по прежнему направляется на языке EN. Выбрать RU по умолчанию нет возможности, возможности удалить EN и оставить RU также нет.

Приходиться каждый раз заходить в шестеренку и менять вручную. Как сделать RU  по умолчанию только для этого шаблона?

Прикрепленные файлы

Нравится

1 комментарий

Евгения, здравствуйте.

Насколько мне известно, [#Status#] берёт локализованное значение из справочника стадий, опираясь на язык общения контакта, потому не играет роли сам язык шаблона.

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

 

Дополнительно на команде разработки есть задача на доработку этого функционала.

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

Добрый день.
Возможно кто-то разбирался, как реализован вызов нужного метода по указанному названию класса макроса в шаблоне email сообщения?
Хотелось бы разобраться, так как бизнес-задача - создавать черновики email сообщений по шаблону с макросами без отправки, что приходится делать через код (low код тут не помогает), и никаких примеров я не нашла ни на академии, ни в сообществе.
Сейчас нашла пример в коде (схема EmailTemplateSender) и реализовала создание черновика по шаблону так же. Выглядит костыльно, хочу причесать.
Буду благодарна за помощь, спасибо!

Нравится

1 комментарий

Надежда, добрый день!

Не совсем понимаю о каком вызове нужного метода по указанному названию класса макроса в шаблоне email сообщения вы говорите.

Речь о подстановке макроса при его выборе в меню отправки сообщений обращения?

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

Добрый день, коллеги. Столкнулся с проблемой: необходимо макросом передать в email комментарий от ответственного, который вводится на автогенерируемой странице. В БП есть параметр "Комментарий/Comment". Желательно как-то зацепить его с помощью макроса в шаблоне. В текущей реализации, шаблон не цепляет данное поле:

Нравится

1 комментарий

Добрый день.

Используйте в элементе [Отправить письмо] опцию 'Произвольное письмо', которая позволяет в качестве макроса выбрать значение из параметров процесса.

Если у Вас так и настроено, но макрос не отрабатывает, проверьте передается ли значение в параметр бизнес-процесса из поля автогенерируемой страницы.

Если же комментарий будет записываться в какое-то поле в таблицу [Обращение], тогда можно настроить шаблон и использовать его в элементе [Отправить письмо], но опять таки нужно убедиться, что комментарий записывается в поле обращения.

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

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

Нравится

3 комментария

Добрый день!
Как проявляет себя проблема?
Возможно Вы пытались получить значения, которых нет в самой таблице представления. Найти какие поля есть и доступны в таблице представления можно через СУБД.

Криволапова Александра,

Добрый, не отображаются значения полей в итоговом письме, при использовании блока отправить email и передачи в него Id записи из представления.

 

Глеб Макаров,

Проверьте, пожалуйста, есть ли в БД в таблице представления те колонки, которые Вы с помощью макросов помещаете в шаблон.

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

Добрый день.
Есть предложение добавить новый стандартный макрос "Адрес стенда", который содержит доменное имя экземпляра creatio.
Это необходимо для формирования динамических ссылок на записи разделов.
Существующая функциональность "Ссылка на объект" записывает в тело шаблона статическую ссылку с доменным именем тестового стенда, и при переносе на Продакшн не перегенерирует её.

Так же есть просьба расширить возможность создания пользовательских макросов на все линейки creatio, а не ограничиваться только Service

1 комментарий

Игорь, зарегистрировал пожелание.

Также идея иметь возможность использовать макросы в продуктах, отличных от service уже заведена.

Ещё принята идея по добавлению  возможности добавить в шаблон письма системную настройку (в том числе и настройку SiteUrl, где хранится адрес сайта). 

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

Подскажите, пожалуйста, где можно почитать про создание макроса шаблона email, который смотрит на представление?

Нравится

3 комментария

Артём, а в чём принципиальное отличие между таблицей и представлением в этом случае? Cоздаётся view в базе, объект в конфигурации с такими же колонками и включенным признаком «Представление в базе данных», и далее с ним работают как с обычной таблицей.

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

Хорошо, тогда где почитать про макрос по таблице? Как работает, примеры и тп.

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

Есть процесс в котором идет обработка писем и автоматическая рассылка. Если отправлять письма через элемент отправить Email, то все отлично форматирует. пустые данные просто пропускает. Но отправленные письма должны прикрепляться к обращению. Поэтому при отправке письма используются скрипты, а не элемент БП Отправить Email. Остается вопрос как в письме убрать желтизну от макросов на те данные, которых еще нет в обращении

Нравится

3 комментария

Алексей, а какие именно скрипты используете для отправки и замены макросов? Откуда вообще взялся жёлтый цвет, он был в сохранённом в справочнике шаблоне письма?

Александр, желтым цветом система сама выделяет поля макросов, которые не найдены значения. Вот скрипт отправки письма

var contactEmail = Get<string>("ContactMail");
var senderEmail = Get<string>("SenderEmail");
var caseId = Get<Guid>("CaseId");
var templateId = Get<Guid>("TemplateEmail");
var userConnection = UserConnection.AppConnection.SystemUserConnection;
var emailTemplateMacrosManager = new EmailWithMacrosManager(userConnection);
if (UserConnection.GetIsFeatureEnabled("EmailMessageMultiLanguageV2")) {
	_log.Debug("EmailMessageMultiLanguageV2=true");
	emailTemplateMacrosManager.SendEmailFromTo(caseId, templateId, senderEmail, contactEmail);
} else {
	var emailTemplateStore = new EmailTemplateStore(userConnection);
	var emailTemplateLanguageHelper = new EmailTemplateLanguageHelper(caseId, userConnection);
	var languageId = emailTemplateLanguageHelper.GetLanguageId(templateId);
	var templateEntity = emailTemplateStore.GetTemplate(templateId, languageId);
	emailTemplateMacrosManager.SendEmailFromTo(caseId, templateEntity.PrimaryColumnValue, senderEmail, contactEmail);
}
return true;

 

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

 

Сама логика с жёлтым цветом реализована в MacrosHelperV2:

private const string MacrosHighlightsTemplate = "<span class=\"unhandled-macro\" style=\"background-color:#fff94f;\">[#{0}#]</span>";
...
/// <summary>
/// Returns the DOM markup to highlight value.
/// </summary>
/// <param name="value">Text that needs to be highlighted.</param>
/// <returns>DOM markup.</returns>
private string GetHighlights(string value) {
	string highlight = string.Format(MacrosHighlightsTemplate, value);
	return highlight;
}
...
/// <summary>
/// Highlights macroses in template text.
/// </summary>
/// <param name="template">Template text.</param>
/// <param name="macrosInfo">Macroses list.</param>
/// <returns>Template text with highlights.</returns>
protected virtual string ReplaceMacros(string template, List<MacrosInfo> macrosInfo) {
	string result = template;
	foreach (MacrosInfo item in macrosInfo) {
		string macrosDisplayValue = string.Format(MacrosTemplate, item.Alias);
		string highlights = GetHighlights(item.Alias);
		result = result.Replace(macrosDisplayValue, highlights);
	}
	return result;
}

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

У Вас используются функции из схем EmailWithMacrosManager (SendEmailFromTo и GetTemplateBody), BaseEmailWithMacrosManager (GetTemplateBody), GlobalMacrosHelper(GetTextTemplate) и MacrosHelperV2 (GetTextTemplate, GetHighlightedTemplate, ReplaceMacros и GetHighlights).

 

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

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

Есть необходимость передавать параметр из рассылки в шаблон письма. @Invoke макросы в рассылках почему-то не работают, возможно из-за того, что нет связи с разделом, там шаблоны хранятся в таблице BulkEmail и наверное работают иначе.

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

 

Находил старую тему, но там решение проблемы не описано.

https://community.terrasoft.ru/questions/dobavlenie-obrabotcika-makrosa-v-sablone-email-soobsenia

Нравится

3 комментария

@Invoke макросы в рассылках почему-то не работают,

Павел, в теме по ссылке написано почему, это разные механизмы. Такие макросы для обычных писем, а не рассылок.

 

Для рассылок используются макросы со значениями  поля из таблиц.

Также, возможно, то, что Вы хотите получить, реализуемо при помощи динамического контента, то есть блоков рассылки, отображаемых в зависимости от результата фильтра.

 

 

Я уже понял, что другой механизм, поэтому и не работает Invoke, но все же вопрос остается открытым, как получить значение поля из рассылки, а не из контакта рассылки? Стандартных макросов недостаточно. Зашить в шаблон это значение не предлагать, т.к. оно настраивается именно на странице с рассылкой.

Из поля в рассылке (объект «Email») можно тоже по связям от участника рассылки:

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

Доброго времени суток!

Возникла необходимость создать некоторые макросы для Email, воспользовался https://academy.terrasoft.ru/documents/technic-sdk/7-14/dobavlenie-obrabotchika-makrosa-v-shablone-email-soobshcheniya но возникло несколько вопросов.

В клиентской сборке не обнаружил IMacrosInvokable, в статье не было указанно что этот функционал доступен в определенной ветке продукта. Нашел в тройном билде и скопипастил (IUsrMacrosInvokable) себе, также добавил  в EmailTemplateMacros @Invoke.

Но макросы не заработали. Подскажите что я пропустил? или это можно было сделать как то по другому. Заранее благодарю!

Нравится

2 комментария

В статье слева указано, что она относится к разделу кастомизации продукта «service». Сам по себе IMacrosInvokable не содержит никакой логики, судя по первой букве названия, это интерфейс. Нужно искать схемы, с ним работающие, например, InvokeMethodMacrosWorker.

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

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

Благодарю за подсказку.

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

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

Подскажите, пожалуйста, как вставлять в е-майл рассылку (или шаблон) табличные данные.

В частности как отправить контакту список его заказов за последние 30 дней или список обращений, на которые от него не получен ответ?

На сколько я понимаю в 7.13 есть возможность вставки только одной колонки, но никак не табличных данных. 

Нравится

1 комментарий

Стандартно такой возможности нет и в маркете ничего подходящего не вижу.

Как вариант, можно попробовать программно формировать содержимое списка в специально созданном текстовом поле объекта, а потом выводить в шаблон его.

Либо сделать формирование печатной формы в Word или Excel, сохранение полученного результата на детали файлов, а затем отправку как вложения.

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