Это обычная гиперссылка на URL «mailto:test@example.com?subject=sss&body=bbb», её обрабатывает выбранный на компьютере почтовый клиент. Формировать гиперссылки с макросами можно аналогично другим шаблонам со ссылкой (например, письмам с уведомлениями по инцидентам).
Подозреваю, автоматическую отправку не сделать никак, этого бы не допустили из соображений безопасности, а то бы все так спам отправляли.
Александр, большое количество шаблонов перелопатил, но к сожалению, так и не понял, как формировать гиперссылку с макросом. Не могли бы вы написать пример?
В маркете есть БП, который для задач формирует письма-уведомления с гиперссылкой на их карточку. В стандартной версии нашёл подобный «Шаблон уведомления о новой визе счета (US)».
Если нужно делать ссылку, доступную пользователям без регистрации, при нажатии на которую срабатывает какая-то логика, это делается при помощи анонимного веб-сервиса.
По вопросу макросов со ссылкой на запись в системе разобрался, как они сделаны для шаблона уведомления о новой визе счёта в этой теме. Нужно учитывать, что эта ссылка доступна только залогиненным в системе.
В существующем шаблоне письма, рассылаемого из бизнес-процесса при подтверждении продаже сотрудникам кампании в заголовке и теме письма есть ссылка на #Документ. OpportunityNumber#, вместо которого подставляется соответствующее значение из таблицы продаж. При этом в карточке шаблона поле "Запрос для макросов" пустое. Помогите, пожалуйста, вспомнить, откуда подставляется значение. Под дурачка попытка добавить в тело шаблона, например, #Документ.OpportunityTitle# ни к чему не привела и в письме так и отображается мнемокод вместо названия продажи. Просто забыл как делать. Спасибо!
Там в шаблоне есть вариант макорс вставить, а есть вариант выбрать колонку из parent объекта, который в свойствах шаблона был указан при создании. Вам второй вариант вроде нужен, а в процессе просто id записи передаётся.
Там в шаблоне есть вариант макорс вставить, а есть вариант выбрать колонку из parent объекта, который в свойствах шаблона был указан при создании. Вам второй вариант вроде нужен, а в процессе просто id записи передаётся.
При попытке отправить е-мейл сообщение через контрагента (ярлык конвертик) — не подтягиваются последние созданные шаблоны.
Были созданы новые шаблоны е-мейл сообщений. Они успешно ушли в рассылку. Теперь нужно дослать эти же шаблоны отдельным контрагентам, но при создании письма из раздела [Контрагент] эти шаблоны отсутствуют.
Ответ
При создании письма из раздела [Контрагенты] указанные шаблоны отсутствуют, так как в шаблонах указан источник макросов "Контакт":
Это означает, что данный шаблон можно отправить только со страницы контакта, там данные шаблоны будут присутствовать в списке.
В качестве решения можем рекомендовать очистить поле [Источник макросов] в данных шаблонах. Тогда шаблоны будут отображаться в списке при написании письма из любого раздела.
Важно понимать, что значения макросов подтянутся в письмо только в том случае, если на странице, с которой создается письмо по шаблону, присутствуют колонки с точно таким названием, как указано в макросе.
Не совсем понятен вопрос, Вы хотите вычитать значение параметра процесса в рамках исходного кода кастомного макроса?
Значительно проще не привязываться к созданию собственного макроса, а выполнять все необходимые действия в рамках процесса.
Возможные реализации:
1. Формировать по ходу процесса тело письма, и вставлять с помощью формулы в это тело параметр, условно:
BodyText = String.Format("Parameter value {0} in my body",[#MyParameter#])
2. Либо же Вы можете с помощью элемента чтение данных получить тело шаблона (объект = Шаблон email сообщения), записать значение в параметр процесса и аналогично первому пункту записать необходимое значение в тело (например, с помощью Replace).
3. Если подстановка значений выполняется из одного объекта, можно просто создать в шаблонах собственный с указанием объекта источника данных, а в процессе просто указать в элементе Отправить email id нужной записи.
4. Самый простой способ - отправлять письмо в режиме произвольное письмо, и подставлять в тело нужный параметр - http://prntscr.com/ipagjy
Если же вопрос больше как реализовать сложную логику в кастомном макросе - можно ознакомиться с реализацией базового, например, SymptomsGenerator пакета CaseService.
Вы можете формировать тело письма, содержащее таблицы, в формате html по процессу, подставляя необходимые параметры процесса. После чего сформированное тело передавать в параметр [Тело письма] элемента Отправить email (в расширенных свойствах элемента).
Есть возможность заполнять макрос с помощью элемента процесса "Обработать шаблон письма с макросами", указав запись, из которой брать значения, uid объекта записи и id шаблона. Подробнее по работе данного элемента можно посмотреть в самом действии в конфигурации. Других вариантов обрабатывать кастомный макрос в БП нет, необходимо реализовать обработку в рамках задания-сценария.
Вообще, не очень хорошо брать код из другого продукта за другую цену. Для объектов это даже проверяется автоматически механизмом лицензий, но для страниц, действий и прочих скриптов — чисто на честность.
Идея дать возможность использовать макросы в продуктах, отличных от service уже заведена.
При рассылке не всегда отрабатывает установка макросных полей в шаблон Outlook. Может быть можно вставить какую-то проверку, чтобы в случае существования #XXXXX# повторно менять тело письма?
В работе активно используем шаблоны писем из раздела "Контакты". Возникла необходимость вставлять в подпись письма контактные данные и должность пользователя системы, который отправляет письмо. Как оказалось, эти данные в шаблоне письма не доступны. Советы, которые я видел на форуме, сводятся к подтягиванию нужных данных в запрос шаблона, что в моем случае не возможно, так как нужны данные как раз о текущем пользователе, а не авторе либо ответственном. Мои изыскания привели меня к следующему решению.
Суть заключается в создании дополнительного системного пользовательского запроса, который по 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; } }
Добрый день. Сделал запрос для макросов. Создал шаблон. Создаю составной макрос, но в зависимости от указанных мною условий ничего не подтягивается. #[Наша компания;Ваша компания:Телеком;Фирма: «ТМ.ВЕЛТЕК»]#
Наша компания - это колонка польз.запроса для макросов шаблона.
В Outlook'е при действии отправить e-mail по шаблону выводит тоже самое.
Помогите, пож-ста.
В версии TS CRM 3.0.2.245 (под Firebird) при создании шаблона e-mail сообщения, есть возможность использовать только четыре системных макроса CurrentContact, CurrentUser, Quotes, SysDate.
Есть ли возможность добавить к ним другие макросы, как в более поздних версиях системы. Например: Контакт.Обращение, Контакт.Должность и т.д.
Либо может есть другой вариант решения вопроса создания шаблонов?
(Переход на текущую версию на данный момент просьба не предлагать)
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 (в нашем случае нужно установить "Контакты")