Проверка в бизнес процессе?

Добрый день! Есть такая задача: Составить бизнес процесс состоящий из трех задач в одной из которых нужно реализовать проверку прикреплен ли к задаче контрагент и договор. Если нет то нужно выдать сообщение и не сохранить пока не будет выбран контрагент и договор. Подскажите как можно реализовать данную проверку??

Нравится

4 комментария

Для того, чтобы управлять обязательностью полей только в рамках бизнес- процесса, предлагаю модифицировать реализацию функции в 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 бизнес процессе.

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