Галка "Открыть окно редактирования карточки" в задаче БП
Доброго времени суток!
В карточке элемента "Задача" в БП есть галка "Открыть окно редактирования карточки".
Когда эта галка не стоит, то задача почему-то не создается (в базе не создается новых записей). Если галку поставить, то задачи создаются и выскакивают карточки задач. Но нужно, чтобы процесс отрабатывал в фоновом режиме. В чем может быть проблема? Почему задачи не создаются, если не ставить галку?
Нравится
"Беляков Дмитрий" написал:задача почему-то не создается (в базе не создается новых записей).
тоже сталкивалась с таким. решение не искали -- было проще обьяснить пользователям, что можно выбрать другого ответственного, задать дату и нажать "ок", чем начинать разбираться, почему не работает базовый функционал...
Поэтому присоединяюсь к автору темы: почему галочка (точнее, ее отсутствие) не работает, а? :smile:
хотя стоп, у меня тогда еще и задавался определенный ответственный в задаче -- я тогда подумала, что может, дело в том, что мы зашли под одним пользователем, задача создалась под другим -- вот и бп "глючит"...
П.С. Хотя "теоретически" в коде все прописано верно:
if (IsNewTask && !WFGetParamsMapItemValue(ActionItem, 'IsProcessImmediately')) { CreateNewTask(DefaultValues); //создать задачу "в фоне" } else { ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues); //открыть окно }
добрый день, коллеги!
Дело в том, что в карточке Задачи поле ответсвенный являтся обязательным. В фоне в него, возможно ничего не передается?
Попробуйте сделать так:
- Задайте параметр OwnerID элемента БП, предшествующего задаче - это, должно быть логичным, т.к. задача создается по определенному критерию и он должен быть каким-то образом связан с текущими параметрами и элементами БП:
Параметр OwnerID должен предварительно быть заданным как глобальный в БП. - Затем, на форме элемента БП "Открытие окна", в блоке соответсвия парметров элемента параметрам диаграмме добавьте OwnerID
- Задайте параметр элемнта "Задача" в БП
- Задайте настройки параметр:
Проверьте результат. У меня все получилось.
Мне кажется дело в чем-то другом, OwnerID у меня передается в элемент процесса. Поставил в дебаггер в начало функции TaskActionOnExecute(WorkflowAction, ActionItem, ItemDataset, IsComplete, ResultLinkCodes), но если галку не ставить, то он не срабатывает, т.е. он вообще не заходит в эту функцию:
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; }
Так как мне вообще не нужно открывать карточку в процессе, убрал проверку этой галки в скрипте:
if (IsNewTask/* && !WFGetParamsMapItemValue(ActionItem, 'IsProcessImmediately')*/) { CreateNewTask(DefaultValues); } else { ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues); }
Теперь работает в фоне номально, но ведь это не решение проблемы, а обход ее.
В любом случае, буду рад, если найдется нормальное решение.
Дмитрий, провел отладку. Заметил что: метод !WFGetParamsMapItemValue(ActionItem, 'IsProcessImmediately' возращает true если галочка "Открыть окно редактирования задачи" не установлена. Првел отладку.
Пришел к такому решению: в сервсие Workflow\Library\scr_WorkflowUtils изменил функцию WFGetParamsMapItemValue на:
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); } }
Изменения не помогли, где-то слетает раньше, еще до захода в функцию wa_TaskActionOnExecute, где проверяется наличие этой галки. Посмотрите пост №3, я ставил дебагер в начале функции, но если галку не ставить, то он в нее вообще не заходит (дебаггер не вываливается).
Дмитрий, у меня на 3.4.0 отрабатывает во всех случаях.
Открытие окна задачи происходит сразу же, на нажатие кнопки ОК в карточке продажи.
В случае есл не ставим галочку "Открывать карточку" - после закрытия карточки продажи на следующем шагезаходим в функцию.
всем доброго дня!
сталкивался с такой проблемой
решил ее следующим образом:
в wnd_TaskActionEditScript
в LoadData(DiagramItem) строку:
chkProcessImmediately.IsChecked = DiagramItem.ProcessImmediately;
заменяем на:
chkProcessImmediately.IsChecked = WFGetParamsMapItemValue(DiagramItem, 'IsProcessImmediately');
и в SaveData(DiagramItem) строку:
DiagramItem.ProcessImmediately = chkProcessImmediately.IsChecked;
заменяем на:
WFSetParamsMapItemValue(DiagramItem, 'IsProcessImmediately', chkProcessImmediately.IsChecked);
и все работает!
"Вегера Виталий Вячеславович" написал:и все работает!
Спасибо, Виталий, действительно все работает :twisted:
В очередный раз фиксим баги Террасофт, которые элементарным образом могут быть найдены - простой проверкой сделанной функциональности.