Подскажите как доработать приведенный ниже пример, из темы https://community.terrasoft.ua/forum/topic/3864:

Например, чтобы задачу по БП мог выполнить ответсвенный, можете добавить следующую проверку (на кнопку ОК):
if (WorkflowItemID != null)
     {
     if (Connector.CurrentUser.ContactID != OwnerID)
          {
                ShowInformationDialog('Вы не можете изменить состояние задачи!');
          return;
    }
     }

Пример заработал с небольшими изменениями, но необходимо что б проверка ответственного происходила только в том случае, если были внесены изменения хотя бы в одно поле карточки "Задача"?

Нравится

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

Можно сделать поле объекта TaskEdit, на OnPrepare в него записывать false, а на DataChange - true. А при сохранении карточки проверять это поле. Если false - ничего не менялось, проверку не делаем.

Благодарю Александр!
Ваш совет опробовал, все работает. Но хотелось бы все таки другого результата:
В данной ситуации получается, если пользователь сделал изменения (н/п: пользователь не заметил что не он ответственный) и вернул все обратно, то система не дает сохранить задачу, т.к. произведены изменения и системе все равно что по факту изменений в данных не произошло.
Подскажите как избежать такую ситуацию?

В таком случае стоит на OnPrepare сохранить старые значения полей карточки в поля объекта, а в обработчике OK сравнить каждое поле объекта с карточкой. Для оптимизации полную проверку полей можно делать только в тех случаях, если на DataChange установили значение true.

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