Добрый день!Есть БП который состоит из двух задач. Как можно сделать так что при запуске процесса не отображалась окно задачи а сразу она сохранялась. Если поставить чтобы карточка задачи не отображалась в Action то задачи не создается и надо переходить в окно процесса и нажимать выполнить шаг что не очень удобно. Возможно кто нибудь сталкивался с такой проблемой???
Нравится
Попробую описать краткий алгоритм.
1) Добавляем в окно редактирования элемента "Задача" (wnd_TaskActionEdit) объект CheckBox для "тихого" режима создания задачи (например, chkCreateTaskInSilentMode).
2) Создаём булевый параметр с названием CreateTaskInSilentMode в элементе "Задача" (wa_TaskAction).
3) В функцию LoadData скрипта wnd_TaskActionEditScript добавляем строчку для чтения значения параметра из элемента процесса:
[javascript]
chkCreateTaskInSilentMode.IsChecked = WFGetParamsMapItemValue(DiagramItem, 'CreateTaskInSilentMode');
[/javascript]
4) В функцию SaveData этого же скрипта добавляем строчку для сохранения значения CheckBox'a в параметр элемента БП:
[javascript]
WFSetParamsMapItemValue(DiagramItem, 'CreateTaskInSilentMode', chkCreateTaskInSilentMode.IsChecked);
[/javascript]
5) В скрипте wa_TaskActionScript создаём функцию создания задачи по элементу БП:
[javascript]
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();
}
[/javascript]
Здесь tpiNormal и tsNotBegun - константы, соответствующие ID приоритета "Нормальный" и состояния "Не начата".
6) При обработке события OnExecute этого же скрипта вместо вызова ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues) проверяем значение параметра и в зависимости от него открываем или не открываем окно редактирования:
[javascript]
................
var CreateTaskInSilentMode = ActionItem.Parameters.ItemsByName('CreateTaskInSilentMode').Value;
if (!CreateTaskInSilentMode) {
ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues);
} else {
CreateTask(DefaultValues);
}
................
[/javascript]
Примерно так.
Спасибо Олег за помощь. Единственное ошибка возникает в скрипте в строке [javascript]
SetDefaultValues(TaskObject);
[/javascript]
Попробуйте подключить к скрипту wa_TaskActionScript скрипт scr_BaseDBEditUtils.
Спасибо Олег все заработало! Единственное условие немного поправил чтобы окно можно было открыть уже у созданной задачи.
[javascript]
if ((CreateTaskInSilentMode)&&(TaskID == GUID_NULL)) {
CreateTask(DefaultValues,ActionItem,ItemID);
} else {
ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues);
}
[/javascript]