AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.03.2010, 17:58   #1  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Поможет ли RLS?
Добрый день всем.

Возникла задача ограничить доступ определенной группы пользователей к определенным складам при создании Заказа на продажу.
Т.е. сделать так, чтобы определенные склады нельзя было выбрать в lookup форме при создании нового заказа.
Однако, в Отчеты-Запросы-В наличии на складах нужно эти склады видеть.
Старый 24.03.2010, 18:03   #2  
Zodiak is offline
Zodiak
Участник
 
61 / 22 (1) +++
Регистрация: 16.01.2004
Адрес: СПб
если выпадающих списков, которые надо фильтровать, не много (1-2-3), то проще перекрыть соответствующие lookup'ы и наложить фильтр там
За это сообщение автора поблагодарили: Prophetic (1).
Старый 24.03.2010, 19:10   #3  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Поможет отфильтровать список складов в такой постановке задачи. Но, возможно, что где-то такое решение вылезет боком.

В ряде версий и СП невидимое в лукапе из-за RLS значение можно ввести вручную, если вы его знаете, и система не ругается.
__________________
С уважением,
glibs®
За это сообщение автора поблагодарили: Prophetic (1).
Старый 24.03.2010, 22:46   #4  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от glibs Посмотреть сообщение
Поможет отфильтровать список складов в такой постановке задачи. Но, возможно, что где-то такое решение вылезет боком..
И пользователи этой группы запрещенных складов ни в одном лукапе не увидят во всей системе...

Цитата:
Сообщение от glibs Посмотреть сообщение
...
В ряде версий и СП невидимое в лукапе из-за RLS значение можно ввести вручную, если вы его знаете, и система не ругается.
Пусть A - таблица-источник, по которой делается лукап, на неё натроен RLS, т.е. записи видим не все.
Пусть Б - таблица-приемник, куда вбивается значение из лукапа, на неё RLS не настроен.
Вполне предсказуемо, что в таблицу Б мы можем ручками вбить запрещенное значение (только такое поведение я и встречал). С другой стороны, система должна запрещать вручную вбивать значение, отсутствующее в лукапе. Т.е. для надежности - впервую очередь RLS должен быть настроен на таблицу Б (но таких таблиц, где м.б. ссылка на А в системе м.б. много...).
Glibs, а в каких версиях система не дает ручками вбить в таблицу Б?
В 3-ке и 4-ке дает...

Ест

Последний раз редактировалось DSPIC; 24.03.2010 в 22:58.
За это сообщение автора поблагодарили: Prophetic (1).
Старый 25.03.2010, 00:19   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Если не ошибаюсь, glibs имел в виду следующую особенность поведения системы :
Если в вашем примере настроен RLS на табличку Б то для одних билдов система просто накладывала дополнительный фильтр на табличку Б при просмотре, не запрещая создавать руками значения противоречащие RLS (т.е. RLS действовал исключительно как фильтр при просмотре), а в других билдах - запрещала. Т.е. RLS действовал не только как фильтр, но и накладывал ограничения на значения в поле. Т.е. RLS влиял на валидацию значений.

На каком варианте в итоге остановились - не помню. Можно протестировать по последнему билду.
За это сообщение автора поблагодарили: Prophetic (1).
Старый 25.03.2010, 21:59   #6  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от DSPIC
И пользователи этой группы запрещенных складов ни в одном лукапе не увидят во всей системе...
Да, я именно это имел в виду. Возможно, что где-то такое поведение может быть нежелательным. Например, при построении расширенного фильтра по тому же запросу по остаткам (где будут видны все склады).
Цитата:
Сообщение от DSPIC
...
Вполне предсказуемо, что в таблицу Б мы можем ручками вбить запрещенное значение (только такое поведение я и встречал). С другой стороны, система должна запрещать вручную вбивать значение, отсутствующее в лукапе.
...
Не разделяю вашу т.з. насчет "Вполне предсказуемо". Точнее разделяю как вредный тестировщик, имеющий некоторый дар от природы предсказывать места, где разработчик мог зарыть багу.
Цитата:
Сообщение от DSPIC
...
а в каких версиях система не дает ручками вбить в таблицу Б?
В 3-ке и 4-ке дает...
...
Тут, скорее, речь должна идти о версии ядра (Ax32.exe).

Только что проверил 3.0 сп6 с ядром от KR3. Эффект воспроизводится.
5.0 сп2 hotfix rollup 3. Эффект воспроизводится.

Вообще, насколько я помню историю RLS, то в 2.5 был партнерский модуль, и не помню точно, не было ли путей его обойти.

В 3.0 появился в базовой поставке, но работал нестабильно (с критическим количеством багов) до сп3. Позже в каком-то из последних СП таки встроили RLS и в validateField() в ядре где-то. Писали где-то, но не могу найти, что в 4.0 это сломали, и проверка поля опять перестала работать. Не помню, проверял или нет. В 5.0 вроде починили. С какого СП — не помню. Может кто сможет дополнить чего в истории.
__________________
С уважением,
glibs®
Старый 26.03.2010, 00:04   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,320 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от glibs Посмотреть сообщение
Вообще, насколько я помню историю RLS, то в 2.5 был партнерский модуль, и не помню точно, не было ли путей его обойти.
Этот партнерский модуль действовал как фильтр (а иначе и не мог) - т.е.
а) позволял ввести запрещенное значение
б) При попытке фильтрации по полю, на который был наложен фильтр с пустым значением - естественным образом сбрасывал фильтр, в результате чего пользователь мог видеть все записи (т.е. права не работали)

Цитата:
Сообщение от glibs Посмотреть сообщение
В 3.0 появился в базовой поставке, но работал нестабильно (с критическим количеством багов) до сп3.
Сделанный RLS (и это важно) работал именно в ядре. Т.е. уже никакой фильтр по пустому значению не мог его сломать. Равно как и вводить запрещенное значение.
__________________
Возможно сделать все. Вопрос времени
Старый 26.03.2010, 02:14   #8  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от Logger
...
Если не ошибаюсь, glibs имел в виду
...
Если я правильно смог понять текст сообщения, то glibs имел в виду другое .

Уточню на примере, чтобы не возникало ни у кого разночтений.

Я тестировал на таблицах LedgerTable и LedgerBudget. На плане счетов настроил RLS как !ХХХ, где "ХХХ" — некий счет ГК. Натравил этот RLS на пользователя через группы. Убедился, что в плане счетов счет "ХХХ" не отображается. Убедился, что в лукапе счетов ГК в бюджетных проводках счет "ХХХ" не отображается. При создании бюджетной проводки ввел значение "ХХХ" в соответствующее поле и попытался его покинуть, на что получил сообщение что значение "ХХХ" отсутствует в таблице План счетов.

Вообще было очень прискорбно, когда такого эффекта удалось добиться для 3.0, но он был потерян в 4.0. Есть гипотеза, что в 3.0 этот функционал сделали после того, как разработчики ядра 4.0 отделились вместе с наследием для разработки новой версии. Мне все кажется, что в 3.0 такое поведение появилось с сп5.

Что касается описанного вами случая... IMHO сейчас эффект корректный. Если бы я настроил RLS на таблицу бюджетных проводок по счету ГК, то создать я строчку могу, а вот когда открою форму снова, то уже не увижу созданную мною же запись. Не вижу ничего некорректного в том, что проверка значения поля делается по RLS на справочнике, а не по фильтру на транзакционной таблице. Первое, IMHO, логичнее. Если нужно запретить и видеть и создавать записи по значению справочника в транзакционной таблице — фильтр настраивается два раза: и на справочнике, и на транзакционной таблице. А именно ввод значения — справочник. В результате можно выбирать между первым, вторым и первым и вторым одновременно.

Обратил внимание, что настройка RLS в 5.0 у меня не заработала, пока я входил в группу "Admin". На более ранних версиях я такого не замечал.
__________________
С уважением,
glibs®
Старый 26.03.2010, 09:07   #9  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Принял решение поступить по совету glibs: в моём простом случае фильтр решил проблему.
Благодарю всех откликнувшихся.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Что делает RLS с связанными запросами в отчете Prophetic DAX: Программирование 8 12.02.2010 13:35
Gustav: Unsorted, или Записки DAX-дилетанта - II Gustav DAX Blogs 39 20.05.2009 15:34
Особенности настройки RLS на склад DreamCreator DAX: Администрирование 0 19.02.2009 17:59
RLS глюк? mit DAX: Программирование 11 26.06.2006 11:51
Проблема с RLS и SecurityKey. oip DAX: Программирование 3 22.12.2005 17:26

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:42.