Публикация

Запуск бизнес-процесса из раздела "Контакты"

Чтобы запустить бизнес-процесс, например, «Продажа» по выбранному контакту в реестре записей раздела Контакты, я создал действие «Запустить процесс Продажа». На событие OnExecute прописал код:

function StartWFbyContact(WorkflowUSI, GridDataset) {
     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.
Это все! ;-)

Нравится

Поделиться

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

Здравствуйте, Виталий
Реализовала по Вашему примеру запуск процесса из раздела Контрагенты. Процесс запустился, но Параметр не присвоился, то есть поле Котнтрагент осталось пустым.
В первой задаче процесса параметр AccountID является Входящим/Исходящим (Исходящим по причине того, что если запускать процесс в разделе Процессы - в первой задаче процесса задается Контрагент, а Входящим он должен быть для запуска процесса как раз из раздела Контрагентов, насколько я понимаю).
Если в чем-то ошиблась или есть другие причины проблемы с параметром, подскажите, пожалуйста.

www.informicus.ru

Здравствуйте! Получение параметра:

var ParentDiagram = GetDiagramByItem(ScriptItem);
var AccountID = WFGetParamValue(ParentDiagram, 'AccountID');

Я так понимаю, эти строки мне надо в функции BeforeExecute задачи прописать? Вот что написала, но результата нет:

function ActionItem1OnBeforeExecute(ActionItem) {       
	var ParentDiagram = GetDiagramByItem(ActionItem);
	var AccountID = WFGetParamValue(ParentDiagram, 'AccountID');
	if (!IsEmptyValue(AccountID)){
		WFSetParamValue(ActionItem, 'AccountID', AccountID, 0);	
	}
}

www.informicus.ru

1) Проверьте передается ли значение ‘AccountID’ в диаграмму?
2) Проверьте «Связи параметров», создан ли параметр ‘AccountID’?
P.S. Удалите

function ActionItem1OnBeforeExecute(ActionItem)

1)Да, параметр в диаграмме не пустой, там есть значение при запуске первой задачи.
2)Да, параметр создан и привязан к параметру диаграммы с тем же именем AccountID.

www.informicus.ru

Удалила функцию. Но почему-то все равно не срабатывает передача параметра.
Мистика. С правами этоне может быть связано?

www.informicus.ru

Могу посмотреть через TeamViewer.
Skype: genekogo

Появилась догадка по поводу типа параметра. Он у меня строковый в диаграмме. Хочу сделать справочником, но в списке нет Контрагентов.

www.informicus.ru

Это правильно, что параметр 'AccountID' имеет тип 'Строка'.

А откуда процесс знает, какой параметр какому полю задачи нужно присвоить?

www.informicus.ru

Кажется, стало ясно, в чем причина.
У меня в начале бизнес процесса стоит элемент Script, а только за ним задача. Script создает Продажу (это сделано для того, что бы пользователю не нужно было лишний шаг в процессе проходить. То есть важно, что бы продажа сама по себе жила и в процессе не мелькала в качестве шагов). Но в Связи параметров нет Script, поэтому ему не удается передать параметр в начале процесса.
Так вот надо как-то с этим теперь справиться :exclaim:

www.informicus.ru

Получилось передавать параметр первой задаче процесса, идущей за Script при выполнении Script. Задача запускается с уже непустым параметро AccountID, но в карточке все равно поле пустое.
Хелп

www.informicus.ru

Все, проблема устранена.
В SriptItem при создании Продажи присвоила полю AccountID значение параметра AccountID процесса и стало работать.

www.informicus.ru

еще пример мистики :(
пытался реализовать аналогичный пример запуска БП

function amiWorkWithClientOnExecute(ActionMenuItem, Sender) {
 var GridDataset = BaseWorkspace.Grid.SelectedIDs;
 var SelectCount = GridDataset.Count;
     switch (SelectCount) {
....

и даже один раз сработало :)
но потом начал код приводить в порядок и в какой-то момент начал получать облом
[font=monospace]
Сообщение об ошибке: 'BaseWorkspace' is undefined
[/font]
не подскажите куда копать?

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