Добрый день!

Создал шаблон 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 записи передаётся.

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

Вопрос

При попытке отправить е-мейл сообщение через контрагента (ярлык конвертик) — не подтягиваются последние созданные шаблоны. 

Были созданы новые шаблоны е-мейл сообщений. Они успешно ушли в рассылку. Теперь нужно дослать эти же шаблоны отдельным контрагентам, но при создании письма из раздела [Контрагент] эти шаблоны отсутствуют. 

Ответ

При создании письма из раздела [Контрагенты] указанные шаблоны отсутствуют, так как в шаблонах указан источник макросов "Контакт":

Изображение удалено.

Это означает, что данный шаблон можно отправить только со страницы контакта, там данные шаблоны будут присутствовать в списке.



В качестве решения можем рекомендовать очистить поле [Источник макросов] в данных шаблонах. Тогда шаблоны будут отображаться в списке при написании письма из любого раздела.

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

Нравится

Поделиться

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

Добрый день.

Возникла необходимость добавления пользовательского макроса в шаблон email и заполнять его значением параметра БП.



Прошу подсказать кейс реализации подобной задачи.

Нравится

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

Игорь, добрый день!

Принцип реализации есть на SDK - https://academy.terrasoft.ru/documents/technic-sdk/7-11/dobavlenie-obra….

Спасибо! Второй день ищу информацию на академии.

А как быть с заполнением макросов из БП при использовании элемента "Отправить email"?

Коновалов Игорь, здравствуйте!



Не совсем понятен вопрос, Вы хотите вычитать значение параметра процесса в рамках исходного кода кастомного макроса?

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

Возможные реализации: 

1. Формировать по ходу процесса тело письма, и вставлять с помощью формулы в это тело параметр, условно: 

 BodyText = String.Format("Parameter value {0} in my body",[#MyParameter#])

2. Либо же Вы можете с помощью элемента чтение данных получить тело шаблона (объект = Шаблон email сообщения), записать значение в параметр процесса и аналогично первому пункту записать необходимое значение в тело (например, с помощью Replace).

3. Если подстановка значений выполняется из одного объекта, можно просто создать в шаблонах собственный с указанием объекта источника данных, а в процессе просто указать в элементе Отправить email id нужной записи.

4. Самый простой способ - отправлять письмо в режиме произвольное письмо, и подставлять в тело нужный параметр - http://prntscr.com/ipagjy

Если же вопрос больше как реализовать сложную логику в кастомном макросе - можно ознакомиться с реализацией базового, например, SymptomsGenerator пакета CaseService.

Спасибо, за варианты.

Но передо мной стоит задача в шаблон письма вывести по условию 3 таблицы из деталей р.Продажи. Шаблон самого письма строго типизирован.

Игорь, здравствуйте!

Вы можете формировать тело письма, содержащее таблицы, в формате html  по процессу, подставляя необходимые параметры процесса. После чего сформированное тело передавать в параметр [Тело письма] элемента Отправить email (в расширенных свойствах элемента).

Логвин Андрей Витальевич,

Да, тоже думал об этом. Но шаблон письма строго типизирован, и должен храниться в справочнике "Шаблоны email"

Есть ли возможность работать с пользовательскими макросами шаблона email в БП?




 

Коновалов Игорь,

Есть возможность заполнять макрос с помощью элемента процесса "Обработать шаблон письма с макросами", указав запись, из которой брать значения, uid объекта записи и id шаблона. Подробнее по работе данного элемента можно посмотреть в самом действии в конфигурации. Других вариантов обрабатывать кастомный макрос в БП нет, необходимо реализовать обработку в рамках задания-сценария.

 

 

Логвин Андрей Витальевич пишет:

Есть возможность заполнять макрос с помощью элемента процесса "Обработать шаблон письма с макросами",

а где вы нашли такой User task? 

Владимир, а где Вы искали? Создаёте новое действие в БП и выбираете с этим названием.

Зверев Александр пишет:

Владимир, а где Вы искали? Создаёте новое действие в БП и выбираете с этим названием.

Уже нашёл. Он есть в Service, но его нет в остальных продуктах.

Придётся копи-пастить 

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

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

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

Добрый день!

При рассылке не всегда отрабатывает установка макросных полей в шаблон Outlook. Может быть можно вставить какую-то проверку, чтобы в случае существования #XXXXX# повторно менять тело письма?

Нравится

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

Мне кажется лучше поставить отладчик в функцию где макросы заменяются на данные и понять почему в некоторых случаях не находит соответствия...

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

В работе активно используем шаблоны писем из раздела "Контакты". Возникла необходимость вставлять в подпись письма контактные данные и должность пользователя системы, который отправляет письмо. Как оказалось, эти данные в шаблоне письма не доступны. Советы, которые я видел на форуме, сводятся к подтягиванию нужных данных в запрос шаблона, что в моем случае не возможно, так как нужны данные как раз о текущем пользователе, а не авторе либо ответственном. Мои изыскания привели меня к следующему решению.

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

Чтобы это заработало, мне пришлось:
1. Создать пользовательский запрос на основе таблицы “Контакты” с необходимыми полями и узнать его ID. ID я узнал через MS SQL Server Management Studio .
2. Добавить в "Системные настройки" параметр «CurrentUserDetailQuery» и присвоить ему значение ID

3. Доработать функцию GetMacrosParserByUserQuery в модуле scr_MacrosUtils

function GetMacrosParserByUserQuery(UserQuery, RecordID) {
        var Parser = new Object();
        Parser.Macroses = new Array();
        Parser.Variables = GetNewDictionary();
        LoadSysVariables(Parser.Variables);
        //Дополнительная информация о пользователе
        var CurrentUserDetailQuery=System.GetSystemSettingValue('CurrentUserDetailQuery', 0);
        var ContactDetailQuery = CreateUserQueryObject(CurrentUserDetailQuery)
        LoadVariablesFromUserQuery(Parser.Variables, ContactDetailQuery, Connector.CurrentUser.ContactID);     
       
        //Дополнительная информация о пользователе
        if (UserQuery) {
                LoadVariablesFromUserQuery(Parser.Variables, UserQuery, RecordID);
        }
        return Parser;
}

и функцию GetMacrosesInfo в модуле scr_MSOutlookLibrary
function GetMacrosesInfo(Obj, TemplateID) {
        var Info = new Object();
        Info.SysMacrosList = new Array();
        Info.SysMacrosList.push(["Текущая дата", '#' + "Текущая дата" + '#']);
        Info.SysMacrosList.push(["Текущий пользователь", '#' + "Текущий пользователь" + '#']);
        Info.SysMacrosList.push(["Текущий контакт", '#' + "Текущий контакт" + '#']);
        Info.SysMacrosList.push(["Цитировать", '#' + "Цитировать" + '#']);
        //Дополнительная информация о пользователе
        var CurrentUserDetailQuery=System.GetSystemSettingValue('CurrentUserDetailQuery', 0);  
        var UserQuery = CreateUserQueryObject(CurrentUserDetailQuery);
        if (UserQuery.Error) {
                return;
        }
        var Column;
        for (var Key in UserQuery.Columns) {
                Column = UserQuery.Columns[Key];
                Info.SysMacrosList.push([Column.Caption, '#' + Column.Caption + '#']);
        }
    //Дополнительная информация о пользователе
        Info.QueryMacrosList = new Array();
        try {
                if (IsEmptyGUID(TemplateID)) {
                        return;
                }
                var Dataset = GetSingleItemByCode('ds_MailTemplate');
                ApplyDatasetIDFilter(Dataset, TemplateID, true);
                Dataset.Open();
                try {
                        if (IsDatasetEmpty(Dataset)) {
                                return;
                        }
                        var QueryID = Dataset.Values('QueryID');
                        if (IsEmptyGUID(QueryID)) {
                                return;
                        }
                        Obj.QueryID = QueryID;
                        var UserQuery = CreateUserQueryObject(QueryID);
                        if (UserQuery.Error) {
                                return;
                        }
                        var Column;
                        for (var Key in UserQuery.Columns) {
                                Column = UserQuery.Columns[Key];
                                Info.QueryMacrosList.push([Column.Caption, '#' + Column.Caption + '#']);
                        }
                } finally {
                        Dataset.Close();
                        ApplyDatasetIDFilter(Dataset, null, false);
                }
        } finally {
                return Info;
        }
}

Версия программы 3.4.

Нравится

Поделиться

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

Добрый день. Сделал запрос для макросов. Создал шаблон. Создаю составной макрос, но в зависимости от указанных мною условий ничего не подтягивается.
#[Наша компания;Ваша компания:Телеком;Фирма: «ТМ.ВЕЛТЕК»]#
Наша компания - это колонка польз.запроса для макросов шаблона.
В Outlook'е при действии отправить e-mail по шаблону выводит тоже самое.
Помогите, пож-ста.

Нравится

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

Добрый день!

Ознакомьтесь со статьей по ссылке http://www.community.terrasoft.ua/forum/topic/4753

Убедитесь также, что формат письма - html.

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

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

В версии TS CRM 3.0.2.245 (под Firebird) при создании шаблона e-mail сообщения, есть возможность использовать только четыре системных макроса CurrentContact, CurrentUser, Quotes, SysDate.

Есть ли возможность добавить к ним другие макросы, как в более поздних версиях системы. Например: Контакт.Обращение, Контакт.Должность и т.д.

Либо может есть другой вариант решения вопроса создания шаблонов?

(Переход на текущую версию на данный момент просьба не предлагать)

Нравится

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

1. Объект MailUtils, который отсылает письма (см. scr_MailUtils) имеет свойство MacrosEngine (TSObjectLibrary.MacrosEngine) - см. scr_MailUtils
2. Этот объект обрабатывает 3 стандартных макроса
#SysDate#'
#CurrentUser#
#CurrentContact#
3. Кроме того, объект имеет свойства Dataset: IDataset и DatasetAlias: WideString
когда MacrosEngine имеет эти свойства - при парсинге макросов он заменяет макросы типа #Контакты.Имя# на текущее значение датасета.
Причем DatasetAlias должен был равен "Контакты" и заголовок датасета должен быть "Контакты". "Имя" - это заголовок нужного поля.
Вся эта схема реализована в модуле рассылки - там используется датасет ds_ContactCommunicationInMassMail.
Поэтому для добавления макросов, например при рассылке, нужно:

1. Датасету ds_ContactCommunicationInMassMail дать заголовок "Контакты".
2. Добавить в него нужное поле.
3. Создать шаблон в который вставить маросы #Контакты.Заголовок поля#

Прим.
Outlook иногда коверкает текст письма, заменяя символы на что-то вроде #8080#8811#8214#8120 - это невозможно отследить - так что нужно внимательно создавать шаблоны, чтобы макросы могли быть прочитаны системой.

Описанная функциональность будет работать только в разделе рассылка. Обращение к полям реализуется через заголовок поля, а не код.
Для реализации требуемой функциональности в остальных разделах необходимо изменить свойства (1, 2) объекта MacrosEngine (scr_MailUtils) - свойство объекта MailUtils.

1) Dataset (по умолчанию используется ds_contactCommunicationInMassMail )
2) DatasetAlias :WideString (в нашем случае нужно установить "Контакты")

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