Галка "Открыть окно редактирования карточки" в задаче БП

Доброго времени суток!

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

Когда эта галка не стоит, то задача почему-то не создается (в базе не создается новых записей). Если галку поставить, то задачи создаются и выскакивают карточки задач. Но нужно, чтобы процесс отрабатывал в фоновом режиме. В чем может быть проблема? Почему задачи не создаются, если не ставить галку?

Нравится

9 комментариев

"Беляков Дмитрий" написал:задача почему-то не создается (в базе не создается новых записей).

тоже сталкивалась с таким. решение не искали -- было проще обьяснить пользователям, что можно выбрать другого ответственного, задать дату и нажать "ок", чем начинать разбираться, почему не работает базовый функционал...
Поэтому присоединяюсь к автору темы: почему галочка (точнее, ее отсутствие) не работает, а? :smile:
хотя стоп, у меня тогда еще и задавался определенный ответственный в задаче -- я тогда подумала, что может, дело в том, что мы зашли под одним пользователем, задача создалась под другим -- вот и бп "глючит"...

П.С. Хотя "теоретически" в коде все прописано верно:

if (IsNewTask && !WFGetParamsMapItemValue(ActionItem, 'IsProcessImmediately')) {
		CreateNewTask(DefaultValues); //создать задачу "в фоне"
	} else {              	
		ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues);  //открыть окно	
	}

добрый день, коллеги!
Дело в том, что в карточке Задачи поле ответсвенный являтся обязательным. В фоне в него, возможно ничего не передается?

Попробуйте сделать так:

  1. Задайте параметр OwnerID элемента БП, предшествующего задаче - это, должно быть логичным, т.к. задача создается по определенному критерию и он должен быть каким-то образом связан с текущими параметрами и элементами БП:




    Параметр OwnerID должен предварительно быть заданным как глобальный в БП.
  2. Затем, на форме элемента БП "Открытие окна", в блоке соответсвия парметров элемента параметрам диаграмме добавьте OwnerID


  3. Задайте параметр элемнта "Задача" в БП

  4. Задайте настройки параметр:

Проверьте результат. У меня все получилось.

Мне кажется дело в чем-то другом, 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:
В очередный раз фиксим баги Террасофт, которые элементарным образом могут быть найдены - простой проверкой сделанной функциональности.

Показать все комментарии