Установка сроков выполнения для задачи из бизнес-процеса
Добрый день!
Есть бизнес-процесс, который стартует в разделе "Проекты" по кнопке "Запустить процесс" следующим образом:
var Dataset = dlData.Dataset;
var ParamNames = new Array();
ParamNames[0] = 'OpportunityID';
var ParamValues = new Array();
ParamValues[0] = Dataset.Values('ID');
WFStartByID("{96A6BC55-B2F9-499C-A2E0-66FD2DF13B32}", ParamNames, ParamValues);
Запускается задача ( 1 шаг бизнес-процесса). Необходимо, чтобы в эту задачу ( только в эту) в качестве даты начала и даты завершения брались значения из специальных полей в проекте.
Подскажите, пожалуйста как можно это сделать ( пробовали передавать эти значения аналогично ParamNames[0] = 'OpportunityID' - не получилось)
Версия Террасофта 3.0.4.118 Х25
Нравится
Дарья, попробуйте передавать эти значения в параметры, как и OpportunityID (например, с названиями StartDate и DueDate), а при обработке события OnExecute элемента wa_TaskAction проверять название элемента и в зависимости от него устанавливать даты начала и завершения задач:
function wa_TaskActionOnExecute(WorkflowAction, ActionItem, ItemDataset, IsComplete, ResultLinkCodes) { ......... var DefaultValues = GetNewDictionary(); DefaultValues.Add('Title', ActionItem.Caption); DefaultValues.Add('WorkflowItemID', ItemID); if (ActionItem.Name == '<Название задачи - первого элемента БП>') { var Diagram = GetDiagramByItem(ActionItem); var ExecuteDate = WFGetParamValue(Diagram, 'StartDate'); var DueDate = WFGetParamValue(Diagram, 'DueDate'); DefaultValues.Add('StartDate', ExecuteDate); DefaultValues.Add('DueDate', DueDate); } else { var ExecuteDate = ItemDataset.ValAsDateTime('ExecuteDate'); var ExecuteAfterTimeTypeID = WFGetParamsMapItemValue(ActionItem, 'ExecuteAfterTimeTypeID'); var ExecuteAfterTimeValue = parseInt(WFGetParamsMapItemValue(ActionItem, 'ExecuteAfterTimeValue')); ExecuteDate = WFCalcExecuteTime(ExecuteDate, ExecuteAfterTimeTypeID, ExecuteAfterTimeValue); ExecuteDate = ExecuteDate.getVarDate(); DefaultValues.Add('StartDate', ExecuteDate); var ExecuteTimeTypeID = WFGetParamsMapItemValue(ActionItem, 'ExecuteTimeTypeID'); var ExecuteTimeValue = parseInt(WFGetParamsMapItemValue(ActionItem, 'ExecuteTimeValue')); var DueDate = WFCalcExecuteTime(ExecuteDate, ExecuteTimeTypeID, ExecuteTimeValue); DefaultValues.Add('DueDate', DueDate.getVarDate()); } .......... }
Спасибо.
Скажите, пожалуйста, надо ли подключать дополнительные скрипты?
Сейчас возникает ошибка
на строчке var Diagram = GetDiagramByItem(ActionItem);
"Предполагается наличие объекта"
Должен быть подключен скрипт scr_WorkflowUtils.
Возможно, в версии 3.0.4 ещё не было этой функции. В этом случае Вы можете её добавить самостоятельно в скрипт scr_WorkflowUtils. Её текст такой:
function GetDiagramByItem(DiagramItem) { return DiagramItem.ParentItems.ParentDiagram; }
Либо вместо вызова var Diagram = GetDiagramByItem(ActionItem); вставьте такую строчку:
var Diagram = ActionItem.ParentItems.ParentDiagram;