10.09.2013, 14:24 | #1 |
Участник
|
AX 4.0 sp1 вопрос про RLS
Подскажите, пожалуйста, как ограничить пользователю доступ к операциям ГК по определенной аналитике.
Есть аналитика "Отдел", пользователь должен иметь доступ только к операциям отдела №1. Я в правах настроил rls на таблицы LedgerTrans и LedgerBalancesDimTrans по отделу №1. Проблема заключается в том, что при построении пользователем стандартных запросов типа "ОСВ по ГК" или "Главная книга" без указания аналитики "Отдел" (поле не заполнено) в отчет выгружаются данные и по другим отделам, к которым у пользователя доступа быть не должно. Как правильно настроить права? Последний раз редактировалось DAX13; 10.09.2013 в 14:31. |
|
10.09.2013, 15:27 | #3 |
Участник
|
В том то и дело, что доступ к таблицам ограничен. Для проверки я добавил пользователю доступ к АОТ, чтобы проверить что в этих таблицах нет "чужих" операций.
Проблема, на мой взгляд, заключается именно в отчетах. Класс LedgerBalanceSum не обращает внимания на RLS. |
|
10.09.2013, 18:57 | #4 |
Участник
|
LedgerBalanceSum тут не причем, в нем изначально все выбиралось при помощи Query.
По DAX4 зависит не только от SP, но и от дальнейших обновлений. Дело в том, что до определенного обновления выборка в генераторе финансовой отчетности шла при помощи select, после какого-то обновления выборка начала производиться с помощью Query. Естественно, select по умолчанию игнорирует RLS. Если у Вас версия до уазанной переработки, то RLS в генераторе отчетности можно заставить работать только добавляя во всех выборках классов LedgerRRG перед выборкой установку учета RLS в курсоре. Посмотрите, есть ли у вас в AOT классы LedgerRRGOp_RU и его наследники. Если их нет, то Ваше приложение использует генератор, который игнорирует RLS. Если классы есть, то копать нужно в другом направлении. Например, есть известная фича, что даже при наличии RLS в одной группе, если в другой группе пользователь имеет права на таблицу большие, чем в той, в которой установлен RLS, то RLS игнорируется. |
|
10.09.2013, 21:38 | #5 |
Участник
|
В 2009 перекрывал на таблице метод aosValidateRead. В нем возвращает нулевое значение в зависимости от группы куда входит пользователь. Не лучшее решение , но работает быстро.
|
|
11.09.2013, 11:34 | #6 |
Участник
|
Цитата:
Посмотрите, есть ли у вас в AOT классы LedgerRRGOp_RU и его наследники.
Цитата:
LedgerBalanceSum тут не причем, в нем изначально все выбиралось при помощи Query.
Последний раз редактировалось DAX13; 11.09.2013 в 11:36. |
|
11.09.2013, 17:33 | #7 |
Участник
|
Я не очень внимательно прочитал сообщение. В сообщении идет речь про встроенные отчеты по ГК , а ответ дал по генератору финансовой отчетности.
По теме: на view тоже можно установить доступ на уровне записи и он вроде бы работает. При установке доступа нужно выбрать пункт "Показать все таблицы" вместо "Показать основные таблицы" и установить доступ на таблицу "Главная книга \ Сальдо ГК - аналитики". Попробовал, вроде бы работает. |
|
|
За это сообщение автора поблагодарили: DAX13 (1). |
12.09.2013, 15:02 | #8 |
Участник
|
Цитата:
При установке доступа нужно выбрать пункт "Показать все таблицы" вместо "Показать основные таблицы" и установить доступ на таблицу "Главная книга \ Сальдо ГК - аналитики".
Цитата:
Попробовал, вроде бы работает.
|
|
12.09.2013, 17:18 | #9 |
Участник
|
Разобрался. Ответ нашел в ветке Настройка RLS для представлений (Views)
Странно, что, стандартное ограничение прав пользователя по аналитике, необходимо выполнять таким кривым способом. |
|
14.09.2013, 13:04 | #10 |
Участник
|
Да, на view, потому что именно его я выбрал в форме настройки (скрин приведен). Правда, после последнего сообщения заинтересовался почему у меня это получилось (суды по ссылке, view там фигурировать не должно).
Оказывается, у нас в методе allowSecuritySetup класса SysDictTable комментирована проверка this.isView(). Ну а на вьюхе LedgerBalancesDim ключ LedgerTables поставил уже перед экспериментом. |
|
|
За это сообщение автора поблагодарили: DAX13 (1). |
|
|