Добрый день
есть необходимость стартовать процесс при получении письма
как стартануть из скрипта, где взять нужные данные - понятно
как сделать действие при письме - не поянтно
в одной из тем предлагалось прописать нужные действия в функции ds_MailMessagePluginOnDatasetAfterPost(Dataset) в скрипте ds_MailMessagePluginScript
в качестве теста пробовал прописать messagebox, но реакции никакой, хотя скрипт для окон подключен, письма поступают
что-то упустил? или сейчас это делается по другому?
версия - 3.3.2.184
Нравится
Здравствуйте,
Попробуйте обрабатывать события 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.