реакция на приход письма

Добрый день
есть необходимость стартовать процесс при получении письма
как стартануть из скрипта, где взять нужные данные - понятно
как сделать действие при письме - не поянтно
в одной из тем предлагалось прописать нужные действия в функции ds_MailMessagePluginOnDatasetAfterPost(Dataset) в скрипте ds_MailMessagePluginScript
в качестве теста пробовал прописать messagebox, но реакции никакой, хотя скрипт для окон подключен, письма поступают
что-то упустил? или сейчас это делается по другому?
версия - 3.3.2.184

Нравится

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

Здравствуйте,
Попробуйте обрабатывать события ds_MailMessage в место ds_MailMessagePluginScript

Яворский Алексей

тот же результат, может в этих скриптах нельзя прописывать действия связанные с открытием окон, только некие "фононый" действия?

Алексей,

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

Запустить бизнес-процесс можно в сервисе ds_MailMessage по приходу письма (заполнению датасета OnDataAfterPost).

Необходимо: открыть сервис ds_MailMessage, на событие OnDatasetAfterPost прописать функцию вызова бизнес-процесса WFStartByID

Пример вызова функции:

	var ParamNames = new Array();
	var ParamValues = new Array();
	ParamNames.push('AccountID');
	ParamValues.push(ContactsWorkspace.WorkflowAccountID);
	ParamNames.push('ContactID');
	ParamValues.push(ContactsWorkspace.WorkflowContactID);
	ContactsWorkspace.WorkflowContactID = null;
	ContactsWorkspace.WorkflowAccountID = null;
	WFStartByID(WorkflowID, ParamNames, ParamValues);

Где WorkflowID - Идентификатор бизнес-процесса, который можно получить из tbl_Service.

Можно вызывать ее без параметров, только по WorkflowID, можно передавать любые необходимые параметры - идентификатор контрагента, контакта и т.д.
Обратите внимание, что ParamNames, ParamValues - массивы, и в них можно передать несколько переменных.

спасибо
так и планировал запускать бп, просто хотелось подтвердить возможность неким простым действием

на сколько понял - все же лучше прописывать в ds_MailMessage, а не в ds_MailMessagePluginScript, и, естественно, навешать ограничений на пользователя и прочие моменты, дабы при каждом письме бп не стартовал

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

Алексей,
Как именно Вы применили скрипт вызова? В частности, что у вас в WorkflowID?

последняя попытка выглядит так
var WorkflowID = '{21F54C0D-C177-4ACE-B89B-0679DAEA38B4}';
var ParamNames = new Array();
var ParamValues = new Array();
WFStartByID(WorkflowID, ParamNames, ParamValues);

прописывал в начале вызов деббагера - не вызывается

Дело в том, что датасет наполняется по интеграции, а не просто по приходу письма.

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

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