Например, чтобы задачу по БП мог выполнить ответсвенный, можете добавить следующую проверку (на кнопку ОК):
if (WorkflowItemID != null)
{
if (Connector.CurrentUser.ContactID != OwnerID)
{
ShowInformationDialog('Вы не можете изменить состояние задачи!');
return;
}
}
Пример заработал с небольшими изменениями, но необходимо что б проверка ответственного происходила только в том случае, если были внесены изменения хотя бы в одно поле карточки "Задача"?
Можно сделать поле объекта TaskEdit, на OnPrepare в него записывать false, а на DataChange - true. А при сохранении карточки проверять это поле. Если false - ничего не менялось, проверку не делаем.
Благодарю Александр!
Ваш совет опробовал, все работает. Но хотелось бы все таки другого результата:
В данной ситуации получается, если пользователь сделал изменения (н/п: пользователь не заметил что не он ответственный) и вернул все обратно, то система не дает сохранить задачу, т.к. произведены изменения и системе все равно что по факту изменений в данных не произошло.
Подскажите как избежать такую ситуацию?
В таком случае стоит на OnPrepare сохранить старые значения полей карточки в поля объекта, а в обработчике OK сравнить каждое поле объекта с карточкой. Для оптимизации полную проверку полей можно делать только в тех случаях, если на DataChange установили значение true.