03.07.2010, 19:22 | #1 |
Участник
|
Проверка права при сохранении записи
Уважаемые коллеги, подскажите вариант(ы) решения следующей задачи:
есть объект (например, заказ, т.е. запись в SalesTable) c которым может работать только определенная группа пользователей. Каждый раз, когда кто-то сохраняет запись (в любой таблице, в которой есть поле SalesId), надо проверить что этот кто-то может работать с этим заказом. Таблиц много и перекрывать validateWrite() на каждой из них не совсем красивый вариант. Возможно есть способ перекрыть общий метод validateField(или его аналог) в одном месте и проверить проверить тип (расширенный тип данных) изменяемого поля? |
|
03.07.2010, 19:37 | #2 |
Участник
|
Цитата:
просто не давайте право записи всем, а дайте право записи только нужным товарищам. и программировать ничего не нужно. |
|
04.07.2010, 21:55 | #3 |
Участник
|
А где в стандартной Аксе много мест использования SalesId?
В основном, все операции с заказом собраны в самом заказе. Всякие денежные вещи в стандартной Аксе выполняются в целом по клиенту или по накладным (сопоставления, письма напоминания и т.п.), ну в российской локализации еще и по договорам. По заказам в голову приходят только периодическое операции разноски (включая регистрацию отборочной накладной), выбор заказа в WMS, некоторые операции в модуле Проекты. Вообще, можно подробнее описать правило: Цитата:
надо проверить что этот кто-то может работать с этим заказом.
|
|
04.07.2010, 23:35 | #4 |
Участник
|
Я бы настроил RLS на SalesTable и тогда те, кто не должен иметь права работать с этим заказом, его и не увидят. Если конечно у Вас те, кто не может работать, не должны и видеть.
|
|
07.07.2010, 00:17 | #5 |
Участник
|
У RLS всего один недостаток, есть возможность вписать SalesId ручками. И насколько я знаю сохранить такую запись система даст (у меня по крайней мере так). Да запись пропадет из обзора, но как говорится, целостность данных будет нарушена.
Задача на самом деле шире, нужен механизм позволяющий ограничивать доступ к записям любой таблицы (с заказов просто начали, на очереди, клиенты, поставщики...) RLS ограничивает только просмотр. В принципе осталось решить только проверку на запись. Суть моего вопроса - есть ли единая точка входа (какой-либо класс или иной обработчик), который вызывается при проверке на запись любой таблицы? |
|
07.07.2010, 01:37 | #6 |
Axapta
|
|
|