Для элемента БП Задача есть настройка "Открывать карточку редактирования":
Но она всего лишь меняет свойства WorkflowAction ProcessImmediately (переключает выполнять ли этот элемент сразу или приостанавливать БП до нажатия "Выполнить шаг"). А мне хотелось, чтобы была возможность создавать задачу, не открывая ее карточку и не прерывая процесс.
Вот, что я сделал (+ бонус добавление напоминания для ответственного по галочке на время начала задачи):
добавил два CheckBox'a в wnd_TaskActionEdit
- chbAutoCreate
- chbAddReminding
в скрипт wnd_TaskActionEditScript
- в функцию function LoadData(DiagramItem) в конце добавил:
в wa_TaskAction добавил два параметра:
- AutoCreate
- AddReminding
в скрипт wa_TaskActionScript в function wa_TaskActionOnExecute добавил:
- после DefaultValues.Add('StartDate', ExecuteDate);
f (WFGetParamsMapItemValue(ActionItem,'AddReminding')){
DefaultValues.Add('RemindToOwnerDate', ExecuteDate);// вместо ExecuteDate можно подставить любую другую дату/логику }
- переделал условие перед CreateNewTask(DefaultValues)
Кстати, чтобы добавить автоматическое заполнение (из параметров) каких-то кастомных полей для создаваемой задачи, как это происходит с контрагент\контакт\продажа\договор (на примере моего поля LeadsID) надо в скрипт wa_TaskActionScript:
"Владимир Соколов" написал:В 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();