Добрый день! Есть такая задача: Составить бизнес процесс состоящий из трех задач в одной из которых нужно реализовать проверку прикреплен ли к задаче контрагент и договор. Если нет то нужно выдать сообщение и не сохранить пока не будет выбран контрагент и договор. Подскажите как можно реализовать данную проверку??
Нравится
Для того, чтобы управлять обязательностью полей только в рамках бизнес- процесса, предлагаю модифицировать реализацию функции в scr_TaskEdit:
function wnd_TaskEditOnPrepare(Window) { Initialize(Window); wnd_BaseDBEditOnPrepare(Window); var StatusFlags = new Object(); var Dataset = BaseDBEdit.Dataset; /* MODULE WORKFLOW */ var WorkflowItemID = Dataset.Values('WorkflowItemID'); var WorkflowItemStateID = Dataset('WorkflowItemStateID'); if (!IsEmptyValue(WorkflowItemID)) { if (IsEmptyValue(WorkflowItemStateID) || WorkflowItemStateID == ws_Idle || WorkflowItemStateID == ws_InProcess) { Dataset.DataFields('OUR_FIELD').IsRequired = true; } else { Dataset.DataFields('OUR_FIELD').IsRequired = false; }; } else { Dataset.DataFields('OUR_FIELD').IsRequired = false; }; if (Dataset.State == dstInsert) { TaskEdit.IsNewTask = true; TaskEdit.CanCancel = IsEmptyValue(WorkflowItemID); } else { /* ENDMODULE WORKFLOW */
OUR_FIELD - название поля, обязательность которого регулируем (например, для контрагента AccountID).
А как можно реализовать не для всех задач бизнес процесса а только для одной?? Получается можно так же проверить по названию задачи?
Можно использовать такой вариант:
1) в сервисе wnd_TaskActionEdit добавляете компонент CheckBox с заголовком "Проверять заполненность поля Контрагент";
2) в сервисе wnd_TaskActionEditScript в функции LoadData и SaveData добавляете строки для обработки этого флажка (аналогично существующим), назовем его CheckAccount;
3) в сервисе wa_TaskActionScript в функции wa_TaskActionOnExecute в конце, перед этой строкой:
ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues);
добавляете свою:
Attributes.Add('CheckAccount', WFGetParamsMapItemValue(ActionItem, 'CheckAccount') );
4) И наконец в той функции, которую описал Андрей выше, обязательность поля устанавливаем так:
Dataset.DataFields('AccountID').IsRequired = (Window.Attributes('CheckAccount') == true);
Спасибо за помощь! немного модифицировал проверку предложенную Андреем. Добавил дополнительную проверку на название Action бизнес процессе.