Добрый день, коллеги. Столкнулся с проблемой: необходимо макросом передать в 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, сохранение полученного результата на детали файлов, а затем отправку как вложения.

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

Добрый день!

Создал шаблон email, при отправке коммерческого предложения данный шаблон подтягивается в следующем виде:

При нажатии на одну из ссылок (например, Тест) клиенту автоматически открывается ответное письмо по следующему шаблону:

Вопрос 1 - Как в шаблон ответного письма можно вставить макрос с номером заказа, чтобы при анализе входящего письма оно привязалось к заказу?

Вопрос 2 - Как сделать, чтобы при нажатии ссылки сразу автоматически отправлялось письмо?

P.S. Вообще в принципе стоит цель создания в bpm sales функционала, подобному оценке удовлетворенности по шкале, который сейчас есть bpm service.

Нравится

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

Это обычная гиперссылка на URL «mailto:test@example.com?subject=sss&body=bbb», её обрабатывает выбранный на компьютере почтовый клиент. Формировать гиперссылки с макросами можно аналогично другим шаблонам со ссылкой (например, письмам с уведомлениями по инцидентам).

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

Оценка сделана без всяких писем, там дёргается веб-сервис, доступный извне без авторизации.

 

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

Александр, большое количество шаблонов перелопатил, но к сожалению, так и не понял, как формировать гиперссылку с макросом. Не могли бы вы написать пример?

В маркете есть БП, который для задач формирует письма-уведомления с гиперссылкой на их карточку. В стандартной версии нашёл подобный «Шаблон уведомления о новой визе счета (US)».

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

Понял, спасибо.

Это обычная гиперссылка на URL «mailto:test@example.com?subject=sss&body=bbb»

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

Или вообще, в принципе, при нажатии на ссылку клиентом происходили изменения полей в системе?

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

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

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

В существующем шаблоне письма, рассылаемого из бизнес-процесса при подтверждении продаже сотрудникам кампании в заголовке и теме письма есть ссылка на #Документ. OpportunityNumber#, вместо которого подставляется соответствующее значение из таблицы продаж. При этом в карточке шаблона поле "Запрос для макросов" пустое. Помогите, пожалуйста, вспомнить, откуда подставляется значение. Под дурачка попытка добавить в тело шаблона, например, #Документ.OpportunityTitle# ни к чему не привела и в письме так и отображается мнемокод вместо названия продажи. Просто забыл как делать. Спасибо!

Нравится

1 комментарий
Лучший ответ

Там в шаблоне есть вариант макорс вставить, а есть вариант выбрать колонку из parent объекта, который в свойствах шаблона был указан при создании. Вам второй вариант вроде нужен, а в процессе просто id записи передаётся.

Там в шаблоне есть вариант макорс вставить, а есть вариант выбрать колонку из parent объекта, который в свойствах шаблона был указан при создании. Вам второй вариант вроде нужен, а в процессе просто id записи передаётся.

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