|
Ограничение прав на уровне записей и метод регистра Остатки() |
☑ |
0
ХомаБрут
05.12.12
✎
23:34
|
Конфигурация УТ 10.3.19.4
Общий модуль "УправлениеВзаиморасчетами"
RLS включено
Имеем фрагмент кода:
ТекущийДолг = РегистрыНакопления.ВзаиморасчетыСКонтрагентами.Остатки(,
СтруктураОтбора,"ДоговорКонтрагента","СуммаВзаиморасчетов").Итог("СуммаВзаиморасчетов");
Проблема : при выполнении метода возникает ошибка
"Недостаточно прав на исполнение операции над базой данных..."
Решил так: заменил на запрос с использованием "РАЗРЕШЕННЫЕ"
Вопросы:
1) это я что-то плохо в RLS настроил или разработчики просмотрели?
2) а можно ли вообще использовать метод "Остатки()" + RLS ?
|
|
1
shuhard
05.12.12
✎
23:37
|
(0) такой код выносится в привилегированные модули
|
|
2
zak555
05.12.12
✎
23:38
|
поставь галку привилегированный
|
|
3
ХомаБрут
05.12.12
✎
23:41
|
спасибо. ща попробую )
P.S.
так это ж типовая православная торговля. интересен ход мыслей разработчиков.
|
|
4
pumbaEO
06.12.12
✎
00:13
|
(3) ход мыслей бывает меняется.
|
|
5
ХомаБрут
06.12.12
✎
03:10
|
чисто из любопытства...
второй параметр метода "Остатки()" это СтруктураОтбора
формируется она так:
СтруктураОтбора = Новый Структура(); // для отбора остатков СтруктураОтбора.Вставить("ДоговорКонтрагента", Договор);
СтруктураОтбора.Вставить("Контрагент", Договор.Владелец);
При этом известно, что у пользователя есть права на уровне роли (можно читать справочники контрагентов, договоров и организаций) и есть права на данного контрагента на уровне RLS.
У пользователя нет прав на чтение ДРУГОЙ организации, итоги по которой живут в регистре.
Таким образом отбор ограничивает чтение ДОГОВОРОМ, а чтение спотыкается об другую ОРГАНИЗАЦИЮ. ИМХО-нелогично.
|
|
6
pumbaEO
06.12.12
✎
11:04
|
(5) Логично все, Остатки() делает такой же запрос, только без ключевого слова "Разрешенные".
|
|