Добрый день!Есть БП который состоит из двух задач. Как можно сделать так что при запуске процесса не отображалась окно задачи а сразу она сохранялась. Если поставить чтобы карточка задачи не отображалась в Action то задачи не создается и надо переходить в окно процесса и нажимать выполнить шаг что не очень удобно. Возможно кто нибудь сталкивался с такой проблемой???
Нравится
Попробую описать краткий алгоритм.
1) Добавляем в окно редактирования элемента "Задача" (wnd_TaskActionEdit) объект CheckBox для "тихого" режима создания задачи (например, chkCreateTaskInSilentMode).
2) Создаём булевый параметр с названием CreateTaskInSilentMode в элементе "Задача" (wa_TaskAction).
3) В функцию LoadData скрипта wnd_TaskActionEditScript добавляем строчку для чтения значения параметра из элемента процесса:
chkCreateTaskInSilentMode.IsChecked = WFGetParamsMapItemValue(DiagramItem, 'CreateTaskInSilentMode');
4) В функцию SaveData этого же скрипта добавляем строчку для сохранения значения CheckBox'a в параметр элемента БП:
WFSetParamsMapItemValue(DiagramItem, 'CreateTaskInSilentMode', chkCreateTaskInSilentMode.IsChecked);
5) В скрипте wa_TaskActionScript создаём функцию создания задачи по элементу БП:
function CreateTask(DefaultValues){ var ExistsTaskID = GetDatasetIDByFieldValue('ds_Task', 'WorkflowItemID', DefaultValues('WorkflowItemID')) if (!IsEmptyGUID(ExistsTaskID)){ return; } var TaskObject = {}; TaskObject.DefaultValues = DefaultValues; TaskObject.Dataset = GetSingleItemByCode('ds_Task', 'WFCreateTask'); TaskObject.Dataset.Append(); TaskObject.Dataset.DisableEvents(); SetDefaultValues(TaskObject); var TaskID = Connector.GenGUID(); TaskObject.Dataset.Values('ID') = TaskID; if (IsEmptyValue(TaskObject.Dataset.Values('PriorityID'))){ TaskObject.Dataset.Values('PriorityID') = tpiNormal; } if (IsEmptyValue(TaskObject.Dataset.Values('StatusID'))){ TaskObject.Dataset.Values('StatusID') = tsNotBegun; } TaskObject.Dataset.EnableEvents(); TaskObject.Dataset.Post(); TaskObject.Dataset.Close(); }
Здесь tpiNormal и tsNotBegun - константы, соответствующие ID приоритета "Нормальный" и состояния "Не начата".
6) При обработке события OnExecute этого же скрипта вместо вызова ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues) проверяем значение параметра и в зависимости от него открываем или не открываем окно редактирования:
................ var CreateTaskInSilentMode = ActionItem.Parameters.ItemsByName('CreateTaskInSilentMode').Value; if (!CreateTaskInSilentMode) { ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues); } else { CreateTask(DefaultValues); } ................
Примерно так.
Спасибо Олег за помощь. Единственное ошибка возникает в скрипте в строке
SetDefaultValues(TaskObject);
Попробуйте подключить к скрипту wa_TaskActionScript скрипт scr_BaseDBEditUtils.
Спасибо Олег все заработало! Единственное условие немного поправил чтобы окно можно было открыть уже у созданной задачи.
if ((CreateTaskInSilentMode)&&(TaskID == GUID_NULL)) { CreateTask(DefaultValues,ActionItem,ItemID); } else { ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues); }