Здравствуйте.
Был построен бизнес-процесс, где после завершённой задачи будет приходить электронное сообщение на конкретный адрес.
Цепочка была проверена работает. Однако, за 4 тестовых выполненных задачи пришло 130 писем.
Помогите разобраться с данным вопросом:
1. Как настроить уведомления, чтобы приходило 1 письмо, а не 130?
2. В теле письма нужно указать по какой именно выполненной задачи пришло данное сообщение.
Скриншоты БП прилагаются.
Буду очень признателен за помощь.

Нравится

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

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

"Демьяник Алексей Олегович" написал:

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

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


Отправил вам запрос на удалённое подключение

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

Начиная с версии bpm’online 7.6 работа с почтой ведется в коммуникационной панели.

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

Нравится

Поделиться

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

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

Стоит задача реализовать внесение фирменного шаблона в создаваемые письма.
Теоретически можно сделать, как предложено здесь:
https://community.terrasoft.ru/blogs/7765

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

Подскажите, кто-то решал уже задачу заполнения тела письма персонифицированным шаблоном?

Нравится

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

Говорят, в 7.6 будет мощный движок шаблонов писем, в том числе и персонифицированных.

Послушаем завтра :-)

Фариз Эльдарович, здравствуйте!

На данный момент шаблоны E-mail сообщений могут быть настроены только через справочник "Шаблоны e-mail сообщений".

Нововведения в версии 7.6 касательно e-mail будут относиться к продуктам Service и Merketing.

Спасибо

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

Фариз Эльдарович,

справочник "Шаблоны e-mail сообщений" используется только при рассылках (Например в Sales + Marketing).

Существует другой способ настройки персонализации через БП - через элементы "Чтение данных" и "Отправить e-mail" (Таким образом будет некий аналог макроса).

Спасибо!

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

В базовой версии приложения 7.х для поле «E-mail» стоит проверка того, чтобы после точки количество символов было от 2 до 4 (например, mailtest@yandex.ru или mailtest@gmail.com).

На данный момент можно изменить проверку, чтобы была, например, от 2 до 5 знаков, но, тогда хотелось бы отметить следующее, что в данное поле можно будет вводить не настоящие (не валидные) электронные адреса.

Если все таки необходимо изменить диапазон, то алгоритм реализации будет следующим:

  1. Перейти в раздел «Конфигурация»;
  2. Добавить «Замещающий клиентский модуль» (Рис. 1) и указать в поле «Родительский объект» - «EmailHelper» (Рис. 2);

  3. Рис. 1


    Рис. 2

  4. Далее необходимо в разделе «Конфигурация» открыть родительский объект «EmailHelper» и скопировать весь код;
  5. В замещенный объект вставить ранее скопированный код;
  6. Далее в строке:
  7. var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;

    изменить диапазон проверки с 2 до 4 на желаемый (выделено черным). Например, с 2 до 10 символов (Рис. 2).

  8. И сохраняем изменения объекта (Рис. 3). В результате должна возникать сообщение, что изменения успешно сохранены;

  9. Рис. 3

  10. Компилируем конфигурацию ("Скомпилировать измененное");
  11. Обновляем страницу приложения в браузере.

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

Нравится

Поделиться

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

utm метки в bpm'online отвечают принятому стандарту систем аналитики, позволяющему добавить в URL параметры пользовательской кампании.

Обязательные параметры при активации использования utm меток:

- Список доменов - URL ваших сайтов, отслеживаемых в Google Analytics.
- utm_source – рекламная система.
- utm_medium – тип трафика.
- utm_campaign – рекламная кампания.

Опциональные параметры:

- utm_term - ключевое слово, которое инициировало показ объявления.
- utm_content - тип объявления.

Добавление в URL параметров рассылки

В момент рассылки, если активировано использование utm меток для данной рассылки, система bpm'online сканирует все ссылки в шаблоне рассылаемого сообщения, и добавляет в каждую ссылку шаблона указанные utm метки. При переходе по такой ссылке, utm метки считываются системой аналитики, используемой для сайта, и учитываются в результатах статистики.
Подробнее можно посмотреть https://support.google.com/analytics/answer/1033867?hl=ru

Обратите внимание! Если ссылки в шаблоне уже содержат utm метки, то настроенные для рассылки utm метки добавлены не будут!
Для корректной работы автоматического добавления utm меток, ссылки шаблона не должны содержать utm меток.

Нравится

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

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

BPMOnline 7.4.1.391

Актвносты -> E-mail

При нажатии отправить, сообщение доставляется успешно,
но процесс отправки длится ~ 60-80 сек.

sending

Можно както ускорить проце отправки?

Нравится

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

Здравствуйте, Тарас!
Для решения проблемы необходимо узнать больше деталей.
Где размещен bpm'online?
Какой почтовый сервер используется?
Есть ли приложения в письме?
Воспроизводится ли при тех же условиях на другом почтовом сервере? Попробуйте gmail или mail.ru, например.
Спасибо!

Здравствуйте, Андрей!

BPMOnline размещен на локальном компьютере.
Использовался почтовый сервер mail.ru.
Письма отправлялись с вложениями (2-3 файла) и без.

Изменения почтового сервера mail.ru на gmail і наоборот, привязка файлов к емейлу - не повлияло на скорость отправки.

Здравствуйте, Тарас.
Вопрос обсудили в телефонном режиме. Мы договорились, что Вы попробуете изменить параметры активности антивируса, так как его деятельность, как оказалось, значительным образом влияет на время отправки электронной корреспонденции через BPM'online.

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

Начну с предыстории.
Есть в нашей компании такая роль/должность - помощник руководителя. Это человек, который выполняет огромные объемы работы, работая в системе Террасофт 3.Х. Периодически помощнику назначаются задачи, сам помощник создает контрагентов, сделки.
Руководством была поставлена задача по контролю помощника, а именно "чтобы каждый день на почту в 16:00 приходило письмо, в котором будут таблицы с задачами, контрагентами и сделками, которые висят на помощнике (кроме задач в работе)". То есть те вопросы, который помощник не распределил по менеджерам или не решил.

Перейдем к технической реализации, это гораздо интереснее :smile:
Так как на реализацию задач по внутреннему проекту по определению не выделяется много времени, то я решил действовать быстро, надежно и наверняка (пусть и несколько некрасиво с точки зрения многоуровневой архитектуры), а именно работать с HTML таблицами и отправкой почты прямо из кода SQL. И да, это можно сделать.
Итак, для настройки возможности отправки email из sql-кода нам надо:

  1. Создать профиль и учетку для отправки писем для авторизации на сервере почты. Делается это в разделе "Management\Database Mail":
  2. Включить возможность отправки email скриптом:
    sp_CONFIGURE 'show advanced', 1
    GO
    RECONFIGURE
    GO
    sp_CONFIGURE 'Database Mail XPs', 1
    GO
    RECONFIGURE
    GO

После такой настройки мы уже можем отправлять email кодом вроде этого:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Svistunov',
    @recipients = 'svistunov@samarasoft.ru;galanin@samarasoft.ru;lazareva@samarasoft.ru',
    @body = @tableHTML,
    @body_format = 'HTML',
    @subject = 'Задачи Лазаревой';

Остается только сформировать переменную @tableHTML на основе SQL-запросов к БД Террасофт. Я сделал это так (для краткости в примере только задачи, контрагенты и сделки формируются аналогично):

DECLARE @tableTasks nvarchar(max);
SET @tableTasks =
    N'

Задачи

'
+
    N''
+
    N'ЗадачаКонтрагент' +
    N'Сделка' +
    CAST (
                (SELECT td = ISNULL(t.Title, ' '),'',
                        td = ISNULL(a.Name, ' '),'',
                        td = ISNULL(o.Title, ' '),''
                        FROM tbl_Task t
                        LEFT JOIN tbl_Account a ON (t.AccountID=a.ID)
                        LEFT JOIN tbl_Opportunity o ON (t.OpportunityID=o.ID)
                        LEFT JOIN tbl_TaskStatus s ON (t.StatusID=s.ID)
                        WHERE t.OwnerID IN
                        (SELECT c.ID FROM tbl_Contact c WHERE c.Name LIKE '%Лазарева%')
                        AND s.STATUS='В работе'
                FOR XML PATH('tr'), TYPE
                )
                AS NVARCHAR(MAX)
        ) +
    N'' ;

--@tableAccounts
--@tableOpportunities

DECLARE @tableHTML nvarchar(max);
SET @tableHTML =
    N'

Задачи, Контрагенты и Сделки, где ответственный - Лазарева

'
+
    ISNULL(@tableTasks, '

Задач нет

'
) +
    ISNULL(@tableAccounts, '

Контрагентов нет

'
) +
    ISNULL(@tableOpportunities, '

Сделок нет

'
) +
    N'

Информация сформирована автоматически

'
;

Собственно это все. Остается только создать job, в нем всего один step, а в нем весь необходимый код. Прописываете в job'е расписание и каждый день можете лицезреть в почте вот такое письмо:

Нравится

Поделиться

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

Добрый день! Появилась такая задача: добавить новое поле, тип справочник в карточку "Задача", данные подтягиваются из справочника ответственных, нужно что бы при закрытии карточки отправлялся e-mail не только ответственному и автору, а ещё и человеку из нового поля.Поле добавил, а вот проблема с отправкой. Вроде бы нужно сделать по аналогии с тем что есть(отправкой ответственному например), но зашёл в ступор, не могу найти отправную точку... Буду рад любой возможной помощи. Заранее спасибо!

Нравится

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

Здравствуйте, Николай!
Нужно смотреть в 'scr_TaskEdit', метод 'ProcessSendMailMessageForTask()' проверяет параметр 'NeedSendMail' страницы и вызывает метод 'ProcessSendTaskEmailByContactFieldName()', описанный в 'scr_TaskUtils'.

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

...и что делать, если вы его уже удалили.

В интерфейсе системы BPMonline 5.X есть иконка с конвертом, которая, согласно инструкции:

Цитата:
отображает количество непрочитанных e-mail сообщений текущего
пользователя. Нажмите на кнопку, чтобы перейти к просмотру сообщений.

Суть её работы довольно проста: при нажатии открывается первое рабочее место, в разных продуктах называемое по-разному (на рисунке — "Продажи"), а в нём раздел "Активности" с фильтром по типу "e-mail".

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

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

Даже если опомниться и создать заново место или раздел в месте, это не поможет, ведь Id записей теперь другие.

Отсюда простой вывод: не стоит удалять первое рабочее место. Если надо, его можно переименовать. Также раздел активностей в нём обязателен.

Если всё уже поломано, исправить ситуацию возможно. Открываем бизнес-процесс страницы MainPage, в обработчике события "Страница загружена" скрипте "Обработать Завершение Загрузки Страницы" (PageLoadCompleteScriptTask) в строке 124 находим следующий код:

string script = string.Format("{0}.on('settingstoolclick', function() {{\nthis.callPageMethod('ThrowEvent', {{signalName: 'SettingsChanged'}});\n}}, {0});", Page.MultiLevelTabs.ClientID);
script += string.Format("{0}.on('helptoolclick', function() {{\nthis.callPageMethod('ThrowEvent', {{signalName: 'HelpCalled'}});\n}}, {0});", Page.MultiLevelTabs.ClientID);
script += string.Format("{0}.on('click', function(el) {{\nlocation.replace('ViewPage.aspx?Id=5e5f9a9e-aa7d-407d-9e1e-1c24c3f9b59a&ActiveTabId=PageContainer_5ca0dabc8c894e1a9bb536407e1c4ef2_055063c98180e011afbc00155d04320c_830581929880e011afbc00155d04320c&action=selectemailfolder')}}, this)", Page.UnreadEmailCountButton.ClientID);

Тут конструкция 5ca0dabc8c894e1a9bb536407e1c4ef2_055063c98180e011afbc00155d04320c_830581929880e011afbc00155d04320c — идентификаторы записей в таблицах
  • SysModuleFolder — рабочие места
  • SysModule — разделы
  • SysModuleInSysModuleFolder — рабочие места в разделах (развязка)

SELECT * FROM SysModule
SELECT * FROM SysModuleFolder
SELECT * FROM SysModuleInSysModuleFolder

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

Заменяем в коде два идентификатора, публикуем страницу и получаем работающую кнопку.

Нравится

Поделиться

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

Спасибо Саше за статью, пригодилось!

PageContainer_5ca0dabc8c894e1a9bb536407e1c4ef2_055063c98180e011afbc00155d04320c_830581929880e011afbc00155d04320c&action=selectemailfolder

А яку роль виконує [selectemailfolder] в кінці конструкції?

В коде ActivitiesModulePage:

		public virtual bool ScriptTask2Execute(ProcessExecutingContext context) {
			var action = Page.Request.QueryString["action"];
if (!String.IsNullOrEmpty(action) && action.ToLower().Equals("selectemailfolder")) {
	(Page.BaseFolder.FindPageControlByName("TreeGrid") as TreeGrid).SelectNode("181f9d34-5dee-e011-a86b-00155d04c01d");
	(Page.BaseFolder.FindPageControlByName("DataSource") as DataSource).SetActiveRow(new Guid("181F9D34-5DEE-E011-A86B-00155D04C01D"));
	FolderId = new Guid("181F9D34-5DEE-E011-A86B-00155D04C01D");
	Page.ThrowEvent("FolderActiveRowChanged");	
}

Розбираю код:
5c8a4dec940949a69f4c75f624129142_055063c98180e011afbc00155d04320c_4facc3ee337049eab7b517de822e30c2

5C8A4DEC-9409-49A6-9F4C-75F624129142 - Письменные обращения

055063C9-8180-E011-AFBC-00155D04320C - Активности

4FACC3EE-3370-49EA-B7B5-17DE822E30C2 - пов'язує між собоюі
5C8A4DEC-9409-49A6-9F4C-75F624129142 - Письменные обращения
EC8425F0-A89F-4BE7-9792-75DDC41B6671 - Активности

Подивився, що
055063C9-8180-E011-AFBC-00155D04320C - Активности
має зв'язок з
D9327740-B874-4D02-93FD-D58DCD4B9345 - Сервис
74635219-5C62-4547-B869-C49FD83EED99 - Работа с запросами

ЗАПИТАННЯ:
а чому для розділів [Сервис] та [Работа с запросами] зафіксовано активність
055063C9-8180-E011-AFBC-00155D04320C

а для розділу [Письменные обращения]
зафіксовано активність
EC8425F0-A89F-4BE7-9792-75DDC41B6671

Це так і має бути, чи має місце якась плутанина ?

Посмотрите на даты создания того и другого раздела «Активности». Может, обе были изначально, а может быть, что кто-то создал одну из записей позже.

ідентичні

Сравните другие поля. Если всё совпадает, то может быть, что вторую запись создали случайно. Можете для теста всюду указать первую, проверить, не будет ли проблем.
В других базах вижу только 055063C9-8180-E011-AFBC-00155D04320C.

Замінив прив'язку в
4FACC3EE-3370-49EA-B7B5-17DE822E30C2
EC8425F0-A89F-4BE7-9792-75DDC41B6671 => 055063C9-8180-E011-AFBC-00155D04320C

Нічого не поламалось

В темі приведено код обробника для [Page.UnreadEmailCountButton].

Я так розумію, що раз мені треба попасти на звернення, то потрібно створити код обробника натиснення кнопки, яку я створив: [Page.NewServiceRequestLinkedButton].

Для цього потрібно

1) в ідентифікаторі провести заміну:
055063C9-8180-E011-AFBC-00155D04320C (Активности)
=>
58B3DD29-54E0-4B2E-97B1-DF8DF09EF2EC (Обращения)

2) замінити запис прив'язки
4FACC3EE-3370-49EA-B7B5-17DE822E30C2
=>
0DB7A74E-D18C-4CA3-A68E-56FD7FC761C9

3) добавити код обробника натиснення кнопки з новим кодом операції - [selectNewServiceRequestLinkedfolder].

script += string.Format("{0}.on('click', function(el) {{\nlocation.replace('ViewPage.aspx?Id=5e5f9a9e-aa7d-407d-9e1e-1c24c3f9b59a&ActiveTabId=PageContainer_5c8a4dec940949a69f4c75f624129142_58b3dd2954e04b2e97b1df8df09ef2ec_0db7a74ed18c4ca3a68e56fd7fc761c9&action=selectNewServiceRequestLinkedfolder')}}, this)", Page.NewServiceRequestLinkedButton.ClientID);

4) в [IncidentsModulePageEventsProcess] вклинитися в обробку повідомлення [PageLoadComplete]

var action = Page.Request.QueryString["action"];
if (!String.IsNullOrEmpty(action) && action.ToLower().Equals("selectNewServiceRequestLinkedfolder")) {
	(Page.BaseFolder.FindPageControlByName("TreeGrid") as TreeGrid).SelectNode("AD9E0A8F-A97C-42EB-8D23-0264F3A51171");
	(Page.BaseFolder.FindPageControlByName("DataSource") as DataSource).SetActiveRow(new Guid("AD9E0A8F-A97C-42EB-8D23-0264F3A51171"));
	FolderId = new Guid("AD9E0A8F-A97C-42EB-8D23-0264F3A51171");
	Page.ThrowEvent("FolderActiveRowChanged");	
}
// AD9E0A8F-A97C-42EB-8D23-0264F3A51171 - потрібний фільтр

Для остальных напомню, что начало обсуждения и зачем нужна эта кнопка — тут.:wink:

Все працює.

Ще одне запитаня: а що це за ідентифікатор 5e5f9a9e-aa7d-407d-9e1e-1c24c3f9b59a ?

SysSchemaId MainPage.

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

Не знаю, почему, но в конфигурации 3.4.1.101 XRM, отсутствует часть кода в wa_SendEmailScipt, в результате чего нельзя было подставить и отпарсить датасет в шаблоне письма элемента wa_SendEmail (что предполагается и функционалом окна элемента и другими места кода)

Исправил:

в wa_SendEmailScipt в функцию function wa_SendEmailOnExecute
вместо

var FilterParamName = WFGetParamValue(ActionItem, 'MacrosDatasetFilterValue'); 
var FilterParamValue = WFGetParamValue(ActionItem.ParentItems.ParentDiagram, FilterParamName);

написал
var FilterParamName = WFGetParamValue(ActionItem, 'MacrosDatasetFilterName');  
var FilterParamValue = WFGetParamValue(Diagram, WFGetParamValue(ActionItem, 'MacrosDatasetFilterValue'))
var DatasetUSI = WFGetParamValue(ActionItem, 'MacrosDatasetUSI');
var DatasetAlias = WFGetParamValue(ActionItem, 'MacrosDatasetAlias');
var Dataset = Services.GetNewItemByUSI(DatasetUSI);
ApplyDatasetFilter(Dataset, FilterParamName, FilterParamValue, true);
Dataset.Open();

и ближе к концу функции в вызов SendEmailByTemplate(...) добавил два параметра Dataset и DatasetAlias:
SendEmailByTemplate(TemplateID, {IDs: [FilterParamValue], SkipQueryAddresses: true, Address: AddressList, Subject: Subject, Silent: !ShowMessage, AutoSend: !ShowMailMessage, Dataset: Dataset, DatasetAlias: DatasetAlias});

Нравится

Поделиться

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