Доброго времени суток!
В карточке элемента "Задача" в БП есть галка "Открыть окно редактирования карточки".

Когда эта галка не стоит, то задача почему-то не создается (в базе не создается новых записей). Если галку поставить, то задачи создаются и выскакивают карточки задач. Но нужно, чтобы процесс отрабатывал в фоновом режиме. В чем может быть проблема? Почему задачи не создаются, если не ставить галку?
Нравится
"Беляков Дмитрий" написал:задача почему-то не создается (в базе не создается новых записей).
тоже сталкивалась с таким. решение не искали -- было проще обьяснить пользователям, что можно выбрать другого ответственного, задать дату и нажать "ок", чем начинать разбираться, почему не работает базовый функционал...
Поэтому присоединяюсь к автору темы: почему галочка (точнее, ее отсутствие) не работает, а? :smile:
хотя стоп, у меня тогда еще и задавался определенный ответственный в задаче -- я тогда подумала, что может, дело в том, что мы зашли под одним пользователем, задача создалась под другим -- вот и бп "глючит"...
П.С. Хотя "теоретически" в коде все прописано верно:
[javascript]
if (IsNewTask && !WFGetParamsMapItemValue(ActionItem, 'IsProcessImmediately')) {
CreateNewTask(DefaultValues); //создать задачу "в фоне"
} else {
ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues); //открыть окно
}
[/javascript]
добрый день, коллеги!
Дело в том, что в карточке Задачи поле ответсвенный являтся обязательным. В фоне в него, возможно ничего не передается?
Попробуйте сделать так:
- Задайте параметр OwnerID элемента БП, предшествующего задаче - это, должно быть логичным, т.к. задача создается по определенному критерию и он должен быть каким-то образом связан с текущими параметрами и элементами БП:

Параметр OwnerID должен предварительно быть заданным как глобальный в БП. - Затем, на форме элемента БП "Открытие окна", в блоке соответсвия парметров элемента параметрам диаграмме добавьте OwnerID
- Задайте параметр элемнта "Задача" в БП
- Задайте настройки параметр:
Проверьте результат. У меня все получилось.
Мне кажется дело в чем-то другом, OwnerID у меня передается в элемент процесса. Поставил в дебаггер в начало функции TaskActionOnExecute(WorkflowAction, ActionItem, ItemDataset, IsComplete, ResultLinkCodes), но если галку не ставить, то он не срабатывает, т.е. он вообще не заходит в эту функцию:
[javascript]
function wa_TaskActionOnExecute(WorkflowAction, ActionItem, ItemDataset,
IsComplete, ResultLinkCodes) {
debugger;
// TODO
// Select only required columns
var ItemID = ItemDataset.ValAsGUID('ID');
var TaskID = GUID_NULL;
var AccountID = null;
var ContactID = null;
var OwnerID = null;
var DocumentID = null;
/* MODULE OPPORTUNITIES */
var OpportunityID = null;
/* ENDMODULE OPPORTUNITIES */
. . .
if (IsNewTask && !WFGetParamsMapItemValue(ActionItem, 'IsProcessImmediately')) {
CreateNewTask(DefaultValues);
} else {
ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues);
}
IsComplete.Value = false;
}
[/javascript]
Так как мне вообще не нужно открывать карточку в процессе, убрал проверку этой галки в скрипте:
[javascript]
if (IsNewTask/* && !WFGetParamsMapItemValue(ActionItem, 'IsProcessImmediately')*/) {
CreateNewTask(DefaultValues);
} else {
ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues);
}
[/javascript]
Теперь работает в фоне номально, но ведь это не решение проблемы, а обход ее.
В любом случае, буду рад, если найдется нормальное решение.
Дмитрий, провел отладку. Заметил что: метод !WFGetParamsMapItemValue(ActionItem, 'IsProcessImmediately' возращает true если галочка "Открыть окно редактирования задачи" не установлена. Првел отладку.
Пришел к такому решению: в сервсие Workflow\Library\scr_WorkflowUtils изменил функцию WFGetParamsMapItemValue на:
[javascript]
function WFGetParamsMapItemValue(DiagramItem, ItemName, DefaultValue) { //debugger;
var ParamsMap = DiagramItem.ParametersMap;
var ParamsMapItem = ParamsMap.ItemsByItemParameterName(ItemName);
if (Assigned(ParamsMapItem)) {
return ParamsMapItem.Value;
}
var Param = DiagramItem.Parameters.ItemsByName(ItemName)
if (ItemName == 'IsProcessImmediately') {
return !(Param);
} else {
return !!(Param) ? Param.Value :
(typeof(DefaultValue) == 'undefined' ? null : DefaultValue);
}
}
[/javascript]
Изменения не помогли, где-то слетает раньше, еще до захода в функцию wa_TaskActionOnExecute, где проверяется наличие этой галки. Посмотрите пост №3, я ставил дебагер в начале функции, но если галку не ставить, то он в нее вообще не заходит (дебаггер не вываливается).
Дмитрий, у меня на 3.4.0 отрабатывает во всех случаях.
Открытие окна задачи происходит сразу же, на нажатие кнопки ОК в карточке продажи.
В случае есл не ставим галочку "Открывать карточку" - после закрытия карточки продажи на следующем шагезаходим в функцию.
всем доброго дня!
сталкивался с такой проблемой
решил ее следующим образом:
в wnd_TaskActionEditScript
в LoadData(DiagramItem) строку:
[javascript]
chkProcessImmediately.IsChecked = DiagramItem.ProcessImmediately;
[/javascript]
заменяем на:
[javascript]
chkProcessImmediately.IsChecked = WFGetParamsMapItemValue(DiagramItem, 'IsProcessImmediately');
[/javascript]
и в SaveData(DiagramItem) строку:
[javascript]
DiagramItem.ProcessImmediately = chkProcessImmediately.IsChecked;
[/javascript]
заменяем на:
[javascript]
WFSetParamsMapItemValue(DiagramItem, 'IsProcessImmediately', chkProcessImmediately.IsChecked);
[/javascript]
и все работает!
"Вегера Виталий Вячеславович" написал:и все работает!
Спасибо, Виталий, действительно все работает :twisted:
В очередный раз фиксим баги Террасофт, которые элементарным образом могут быть найдены - простой проверкой сделанной функциональности.