Не передаются параметры в БП

Здравствуйте все.
У меня случилась такая проблема: есть бизнес-процесс, который создает новую продажу, а после этого после вопроса создает задачи. В этом бизнес-процессе есть параметры: AccountID, OwnerID, OpportunityID, ObjectID. Три первых параметра замечательно передаются в задачи.
Проблемы с двумя последними параметрами - они просто напросто не передаются.

1. Есть предположение, что OpportunityID не передается из-за того, что в момент создания продажи еще нет ее ID и передавать нечего. Так ли это? Я пробовала и указать в какой параметр сохранять значение , и наоборот делала (те без привязки к параметру). Но это не влияет на ситуацию :cry:. После этого была написана функция в скрипте для моего процесса

function Action4OnAfterExecute(ActionItem) {
WFSetParamValue(ActionItem.ParentItems.ParentDiagram, 'OpportunityID',
                ActionItem.Parameters('OpportunityID').Value);

}

Но параметр все также не передается.
Как сохранить ID новой созданной продажи в параметр OpportunityID?

2. ObjectID тоже не передается. Но тут видимо проблема в том, что привязка к Объекту дорабатывалась уже в нашей версии как пользовательское поле. И следует изменять скрипты wa_OpportunityActionScript, wa_TaskActionScript. Изменения я вносила по образу и подобию передающихся параметров AccountID, OwnerID, ContactID. Но при этом скрипт "проходит незамеченным" , и параметр все так же не передается. В чем же загвоздка?

Версия ТС 3.3.2.242

Нравится

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

Виктория, пыталась воспроизвести описанную Вами ситуацию с передачей параметров. Для этого создала БП (рис 1). В параметрах диаграммы присутствует один параметр OpportunityID (рис 2).
В результате, в задачу передаются значения полей "Контрагент", "Контакт", "Ответственный" и "Продажа" (рис3).
Попробуйте загрузить сервисы из коробочной версии (предварительно выгрузите Ваши, чтоб не потерять внесенные изменения) и проверить корректность передачи параметров.

Я загрузила сервисы (они не отличались от моих, за исключением прописанных строчек кода для нового пользовательского поля Object).
Для чистоты эксперемента убрала из моего процесса подтверждение на создание задач.
Но результат остался тот же: задачи создаются с правильным "Контрагентом", "Контактом", "Ответственным", а вот Продажа - пусто!
В чем же проблема?

С Передачей параметра OpportunityID разобралась.
В Вашем исходном варианте сервисов поправила функцию wa_OpportunityActionOnExecute, дописав туда отсутствующую строку WFSetParamValue(ActionItem, 'OpportunityID', OpportunityID);
Теперь попробую с моим пользовательским полем разобраться.

Что удивительно, после исправления скрипта - нет необходимости даже указывать в диаграмме специальное соответствие параметру Продажа, он передается автоматически. Это хорошо.

Плохо то, что с полем Object (которое в Продаже называется objectID, а в Задаче object_taskID) ничего не получается сделать. Может конечно, дело в какой-то банальности. Но я не вижу в чем моя ошибка.

Виктория здравствуйте,
Делал подобную реализацию, прошу ознакомиться с прикрепленным файлом, отличие в том что реализовывал для действия Задача.
Задача:
Пусть у нас есть пользовательское поле MyField, оно прикреплено к таблице tbl_Task, мы хотим что бы данное поле передавалось с Задачи1 во все остальные задачи нашего БП, для этого следует сделать следующие доработки в wa_TaskActionScript

Буду пробовать , о результатах напишу отдельно

Все проверила уже несколько раз, в моем процессе результата добиться не вышло.
Решила провести эксперемент так , как указано в инструкции и переделала свой процесс так, чтобы можно было передавать параметр ObjectID из задачи 1 в задачу 2.
К сожалению результат тот же.
Ранее параметр не передавался из продажи в задачу 1, а после изменения процесса он все также не передается из задачи 1 в задачу 2.
Я установила связи параметров в диаграмме, так чтобы параметр сохранялся после закрытия карточки задача1.

Вставляемые и изменяемые строки в wa_TaskActionScript в моем случае выглядят так
1) WFConnectParams(ActionItem, 'ObjectID', 'ObjectID', wptString, wpmitInOut);
2) var ObjectID = null;
var TaskDataset = WFGetLikedItemDatasetEx('ds_Task', ItemID,
new Array('ID', 'AccountID', 'ContactID', 'OpportunityID',
'StatusIsFinish', 'ResultID', 'OwnerID','object_taskID'), true);
3) ObjectID = TaskDataset.ValAsGUID('object_taskID');
WFSetParamValue(ActionItem, 'ObjectID', ObjectID);
4) WFParamsToDictionary(WorkflowAction, DefaultValues,
'TypeID', 'OwnerID', 'AccountID', 'ContactID'
/* MODULE OPPORTUNITIES */, 'OpportunityID', 'ObjectID'
/* ENDMODULE OPPORTUNITIES */
/* MODULE INCIDENTS*/, 'IncidentID'
/* ENDMODULE INCIDENTS */,
'ContractID');

Параметр называется ObjectID, поле в задаче - object_taskID.

Может быть есть еще какая-то хитрость?

Виктория, попробуйте в событии OnBeforeExecute первой задачи прописать код:

    var OpportunityID =  WFGetParamValue(ActionItem.ParentItems.ParentDiagram, 'OpportunityID');
    var Dataset = Services.GetNewItemByUSI('ds_Opportunity');
    ApplyDatasetFilter(Dataset, 'ID', OpportunityID, true);
    Dataset.Open();
    var ObjectID = Dataset.Values('object_taskID');
    ActionItem.Parameters.ItemsByName('ObjectID').Value = ObjectID;
    Dataset.Close();
Показать все комментарии