Бизнес-процессы
Разработка

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

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

Нравится

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

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

OUR_FIELD - название поля, обязательность которого регулируем (например, для контрагента AccountID).

А как можно реализовать не для всех задач бизнес процесса а только для одной?? Получается можно так же проверить по названию задачи?

Можно использовать такой вариант:
1) в сервисе wnd_TaskActionEdit добавляете компонент CheckBox с заголовком "Проверять заполненность поля Контрагент";
2) в сервисе wnd_TaskActionEditScript в функции LoadData и SaveData добавляете строки для обработки этого флажка (аналогично существующим), назовем его CheckAccount;
3) в сервисе wa_TaskActionScript в функции wa_TaskActionOnExecute в конце, перед этой строкой:
[javascript]
ShowEditWindowEx('wnd_TaskEdit', Attributes, DefaultValues);
[/javascript]
добавляете свою:
[javascript]
Attributes.Add('CheckAccount',
WFGetParamsMapItemValue(ActionItem, 'CheckAccount') );
[/javascript]
4) И наконец в той функции, которую описал Андрей выше, обязательность поля устанавливаем так:
[javascript]
Dataset.DataFields('AccountID').IsRequired = (Window.Attributes('CheckAccount') == true);
[/javascript]

Спасибо за помощь! немного модифицировал проверку предложенную Андреем. Добавил дополнительную проверку на название Action бизнес процессе.

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