Версия 3.4.1

Для элемента БП Задача есть настройка "Открывать карточку редактирования":

Но она всего лишь меняет свойства WorkflowAction ProcessImmediately (переключает выполнять ли этот элемент сразу или приостанавливать БП до нажатия "Выполнить шаг"). А мне хотелось, чтобы была возможность создавать задачу, не открывая ее карточку и не прерывая процесс.
Вот, что я сделал (+ бонус добавление напоминания для ответственного по галочке на время начала задачи):

добавил два CheckBox'a в wnd_TaskActionEdit
- chbAutoCreate
- chbAddReminding

в скрипт wnd_TaskActionEditScript
- в функцию function LoadData(DiagramItem) в конце добавил:

chbAutoCreate.IsChecked = WFGetParamsMapItemValue(DiagramItem, 'AutoCreate');
chbAddReminding.IsChecked = WFGetParamsMapItemValue(DiagramItem, 'AddReminding');

- в функцию function SaveData(DiagramItem) в конце добавил:
WFSetParamsMapItemValue(DiagramItem, 'AutoCreate', chbAutoCreate.IsChecked);
WFSetParamsMapItemValue(DiagramItem, 'AddReminding', chbAddReminding.IsChecked);

в wa_TaskAction добавил два параметра:
- AutoCreate
- AddReminding

в скрипт wa_TaskActionScript в function wa_TaskActionOnExecute добавил:
- после DefaultValues.Add('StartDate', ExecuteDate);

f (WFGetParamsMapItemValue(ActionItem, 'AddReminding')) {
        DefaultValues.Add('RemindToOwnerDate', ExecuteDate); // вместо ExecuteDate можно подставить любую другую дату/логику
}

- переделал условие перед CreateNewTask(DefaultValues)
        if ((IsNewTask && !WFGetParamsMapItemValue(ActionItem, 'IsProcessImmediately') ||
                (IsNewTask && WFGetParamsMapItemValue(ActionItem, 'AutoCreate')))) {

Нравится

Поделиться

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

Кстати, чтобы добавить автоматическое заполнение (из параметров) каких-то кастомных полей для создаваемой задачи, как это происходит с контрагент\контакт\продажа\договор (на примере моего поля LeadsID) надо в скрипт wa_TaskActionScript:

- в function wa_TaskActionOnInitialize добавить

WFConnectParams(ActionItem, 'LeadsID', 'LeadsID', wptString, wpmitInOut);

- в function wa_TaskActionOnExecute в параметры вызова следующей функции добавить название вашего поля:

WFParamsToDictionary(WorkflowAction, DefaultValues,
	'TypeID', 'OwnerID', 'AccountID', 'ContactID'
		/* MODULE OPPORTUNITIES */, 'OpportunityID'
		/* ENDMODULE OPPORTUNITIES */ 
		/* MODULE INCIDENTS*/, 'IncidentID' 
		/* ENDMODULE INCIDENTS */,
		'ContractID'
		, 'LeadsID'        // вот это
		);

опечатка-с

if ((IsNewTask && !WFGetParamsMapItemValue(ActionItem, 'IsProcessImmediately')) ||
		(IsNewTask && AutoCreate)) {

"Андросов Дмитрий" написал:переделал условие перед CreateNewTask(DefaultValues)

В 3.3.2 этого нет. А как выполнить такую же функциональность?

"Андросов Дмитрий" написал:переделал условие перед CreateNewTask(DefaultValues)

В 3.3.2 этого нет. А как выполнить такую же функциональность?

"Владимир Соколов" написал:В 3.3.2 этого нет. А как выполнить такую же функциональность?

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

в приложении - ветка wa_TaskAction из базовой 3.4.1. Нет факт что без допиливания сработает
wa_taskaction.rar

Спасибо за наводку.
В 3.3 создал функцию, и с ней реализовал ту же самую логику

function CreateTask(DefaultValues, ActionItem, ParentDiagramScript, WindowScript){
//Функция создаёт задачу без открытия карточки
var ParentDiagram = GetDiagramByItem(ActionItem);
var TaskObject = {};
TaskObject.DefaultValues = DefaultValues;
TaskObject.Dataset = GetSingleItemByCode('ds_Task', 'WFCreateTask');
TaskObject.Dataset.Append();
SetDefaultValues(TaskObject);
var TaskID = Connector.GenGUID();
TaskObject.Dataset.Values('ID') = TaskID;
var OwnerID = TaskObject.Dataset.Values('OwnerID');
TaskObject.Dataset.Post();

TaskObject.Dataset.Close();
return TaskID
}

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