Имя: Пароль:
1C
1С v8
Ограничение прав на уровне записей и метод регистра Остатки()
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) Логично все, Остатки() делает такой же запрос, только без ключевого слова "Разрешенные".
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой