Чтобы запустить бизнес-процесс, например, «Продажа» по выбранному контакту в реестре записей раздела Контакты, я создал действие «Запустить процесс Продажа». На событие OnExecute прописал код:
var ParamNames = new Array();
var ParamValues = new Array();
var FieldValue = GridDataset.CommaText;
ParamNames.push('ContactID');
ParamValues.push(FieldValue);
var Params = WFArrayToParams(ParamNames, ParamValues);
var WorkflowEngine = GetAttribute(Connector, 'WorkflowEngine');
var Now = new Date().getVarDate();
WorkflowEngine.StartWorkflow(WorkflowUSI, Now, Params);
}
function amiWorkWithClientOnExecute(ActionMenuItem, Sender) {
var GridDataset = BaseWorkspace.Grid.SelectedIDs;
var SelectCount = GridDataset.Count;
switch (SelectCount) {
case 1:
var WorkflowUSI = "Workflow\\Workflow Diagrams\\wd_WorkWithClient";
StartWFbyContact(WorkflowUSI, GridDataset);
return
case SelectCount 1:
Message("Контакт не выбран");
return
case SelectCount > 1:
Message("Выбрано более одного контакта");
return
}
}
И подключил скрипт scr_WorkflowUtils.
Это все! ;-)
Здравствуйте, Виталий
Реализовала по Вашему примеру запуск процесса из раздела Контрагенты. Процесс запустился, но Параметр не присвоился, то есть поле Котнтрагент осталось пустым.
В первой задаче процесса параметр AccountID является Входящим/Исходящим (Исходящим по причине того, что если запускать процесс в разделе Процессы - в первой задаче процесса задается Контрагент, а Входящим он должен быть для запуска процесса как раз из раздела Контрагентов, насколько я понимаю).
Если в чем-то ошиблась или есть другие причины проблемы с параметром, подскажите, пожалуйста.
Я так понимаю, эти строки мне надо в функции BeforeExecute задачи прописать? Вот что написала, но результата нет:
function ActionItem1OnBeforeExecute(ActionItem) { var ParentDiagram = GetDiagramByItem(ActionItem); var AccountID = WFGetParamValue(ParentDiagram, 'AccountID'); if (!IsEmptyValue(AccountID)){ WFSetParamValue(ActionItem, 'AccountID', AccountID, 0); } }
1)Да, параметр в диаграмме не пустой, там есть значение при запуске первой задачи.
2)Да, параметр создан и привязан к параметру диаграммы с тем же именем AccountID.
Удалила функцию. Но почему-то все равно не срабатывает передача параметра.
Мистика. С правами этоне может быть связано?
Появилась догадка по поводу типа параметра. Он у меня строковый в диаграмме. Хочу сделать справочником, но в списке нет Контрагентов.
А откуда процесс знает, какой параметр какому полю задачи нужно присвоить?
Кажется, стало ясно, в чем причина.
У меня в начале бизнес процесса стоит элемент Script, а только за ним задача. Script создает Продажу (это сделано для того, что бы пользователю не нужно было лишний шаг в процессе проходить. То есть важно, что бы продажа сама по себе жила и в процессе не мелькала в качестве шагов). Но в Связи параметров нет Script, поэтому ему не удается передать параметр в начале процесса.
Так вот надо как-то с этим теперь справиться :exclaim:
Получилось передавать параметр первой задаче процесса, идущей за Script при выполнении Script. Задача запускается с уже непустым параметро AccountID, но в карточке все равно поле пустое.
Хелп
Все, проблема устранена.
В SriptItem при создании Продажи присвоила полю AccountID значение параметра AccountID процесса и стало работать.
еще пример мистики :(
пытался реализовать аналогичный пример запуска БП
function amiWorkWithClientOnExecute(ActionMenuItem, Sender) { var GridDataset = BaseWorkspace.Grid.SelectedIDs; var SelectCount = GridDataset.Count; switch (SelectCount) { ....
и даже один раз сработало :)
но потом начал код приводить в порядок и в какой-то момент начал получать облом
[font=monospace]
Сообщение об ошибке: 'BaseWorkspace' is undefined
[/font]
не подскажите куда копать?