AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
DAX
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 18.01.2005, 13:30   #1  
tischenko ist offline
tischenko
Участник
 
35 / 10 (1) +
Registriert seit: 12.01.2005
Ort: Киев
Права доступа на уровне записей
Нужно реализовать такую настройку прав доступа: есть таблица заказов и каждый пользователь видет в ней только те записи, что сам и создал. Некоторые пользователи видят все записи. Как проще всего реализовать данную схему.
Alt 18.01.2005, 14:06   #2  
YellowSubmarine ist offline
YellowSubmarine
Участник
 
111 / 12 (1) ++
Registriert seit: 18.12.2002
Создать группы пользователей = количеству пользователей и для каждой группы (фактически для каждого пользователя) настроить права доступа на уровне записей.
Alt 18.01.2005, 14:07   #3  
Hamster ist offline
Hamster
Участник
 
687 / 13 (2) ++
Registriert seit: 15.05.2003
Можно попробовать настроить RLS для поля createdBy.

Но
1) Настраивать придется для каждого пользователя
2) Не факт что это поле доступно для RLS
3) Не все таблицы имеют это поле (атрибут createdby)

Вариант 2 (для маньяков программеров):
можно создать в таблице поле, куда при создании записывается код группы пользователя и настраивать по нему
Alt 18.01.2005, 14:12   #4  
tischenko ist offline
tischenko
Участник
 
35 / 10 (1) +
Registriert seit: 12.01.2005
Ort: Киев
Это я уже понял.

А есть ли возможность в аксапте в запросной форме в качестве критерия функцию подставить? Типа взять поле createdby а в качестве критерия curuserid() ?
Alt 18.01.2005, 14:19   #5  
Hamster ist offline
Hamster
Участник
 
687 / 13 (2) ++
Registriert seit: 15.05.2003
нет
Alt 18.01.2005, 14:34   #6  
Maxim Gorbunov ist offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2.483 / 646 (26) +++++++
Registriert seit: 27.11.2001
Ort: Dubai, UAE
Zitat:
Изначально опубликовано Hamster
Вариант 2 (для маньяков программеров):
Вообще-то, есть поле SalesTable.SalesTaker. Скорее всего, оно вполне удовлетворит требованиям.

2tischenko: В данном случае лучше, видимо, не заморачиваться с RLS. Добавьте отдельный параметр в модуле "Расчеты с клиентами", чтобы указывать группу пользователей, которым доступны все заказы. В init() DataSource SalesTable добавьте в query скрытый Range.
PHP-Code:
if (!UserInfoHelp::userInUserGroup(curUserId(), mySuperuserGroup)) {
    
queryBuildRange this.query()
        .
dataSourceTable(tableNum(SalesTable)
        .
addRange(fieldNum(SalesTableSalesTaker)); // или createdBy
    
queryBuildRange.value(curUserId());
    
queryBuildRange.status(RangeStatus::Hidden);

__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Alt 18.01.2005, 14:35   #7  
rus_stas ist offline
rus_stas
Участник
 
50 / 19 (1) ++
Registriert seit: 06.09.2004
Ort: Киев
Zitat:
Изначально опубликовано Hamster
Вариант 2 (для маньяков программеров):
можно создать в таблице поле, куда при создании записывается код группы пользователя и настраивать по нему
Зачем программировать, если можно использовать поле Получатель (вкладка Настройки шапки заказа) и по этому полю настроить RLS.

Но для этого сотрудник должен быть указан в таблице сотрудников (для каждого сотрудника, который создает заказ, должно быть заполненое поле Пользователь (вкладка Разное) - идентификатор пользователя системы).
__________________
С уважением,
rus_stas
Alt 18.01.2005, 14:38   #8  
Hamster ist offline
Hamster
Участник
 
687 / 13 (2) ++
Registriert seit: 15.05.2003
Talking
Невнимательно читал пост.... пропустил что это "заказы"


P.S
А теперь, когда вы все настроили, злобный юзер Петров взял и сменил SalesTaker на Иванова......

Alt 18.01.2005, 14:47   #9  
Maxim Gorbunov ist offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2.483 / 646 (26) +++++++
Registriert seit: 27.11.2001
Ort: Dubai, UAE
Zitat:
Изначально опубликовано Hamster
А теперь, когда вы все настроили, злобный юзер Петров взял и сменил SalesTaker на Иванова......
А для этого есть настройка прав доступа на поля таблицы.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Alt 18.01.2005, 14:51   #10  
rus_stas ist offline
rus_stas
Участник
 
50 / 19 (1) ++
Registriert seit: 06.09.2004
Ort: Киев
А Максим меня всегда опережает с ответом
__________________
С уважением,
rus_stas
Alt 18.01.2005, 15:35   #11  
tischenko ist offline
tischenko
Участник
 
35 / 10 (1) +
Registriert seit: 12.01.2005
Ort: Киев
Спасибо это помогло

if (UserInfoHelp::userInUserGroup(curUserId(), 'aaaa'))
{
q1 = new query();
qbr = q1.addDataSource(tableNum(SalesTable)).addRange(fieldNum(SalesTable, createdBy));
qbr.value(curUserId());
qbr.status(RangeStatus::Hidden);
this.query(q1);
}

На самом деле нужно было чтобы пользователи определнной группы с ограниченными и так правами видели только свои записи, а остальные группы все записи.

Спасибо за внимание
Alt 18.01.2005, 15:40   #12  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Изначально опубликовано tischenko
Спасибо это помогло
не обольщайтесь
здесь известные проблемы подобного подхода
http://axapta.mazzy.ru/works/accessrecord/#knownproblem
Alt 18.01.2005, 15:42   #13  
Maxim Gorbunov ist offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2.483 / 646 (26) +++++++
Registriert seit: 27.11.2001
Ort: Dubai, UAE
Ни в коем случае так не делайте. Вы создаете Query, затирая им стандартный. У вас не будет правильно работать переход к основной таблице (к таблице "Заказы").

Обратите внимание на то, что в том коде, который я писал раньше, Query не создается заново. Модифицируется уже созданный query.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Alt 18.01.2005, 15:47   #14  
Maxim Gorbunov ist offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2.483 / 646 (26) +++++++
Registriert seit: 27.11.2001
Ort: Dubai, UAE
Zitat:
Изначально опубликовано mazzy
не обольщайтесь
здесь известные проблемы подобного подхода
http://axapta.mazzy.ru/works/accessrecord/#knownproblem
А вот и нет. Такие проблемы возникнут только в том случае, если оставить для критерия RangeStatus::Open. Если ставить RangeStatus::Hidden или RangeStatus::Locked, пользователь не сможет добавить фильтры по тому же самому полю. Соответственно, описанной проблемы не возникнет.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Alt 18.01.2005, 15:58   #15  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Изначально опубликовано Maxim Gorbunov
А вот и нет. Такие проблемы возникнут только в том случае, если оставить для критерия RangeStatus::Open. Если ставить RangeStatus::Hidden или RangeStatus::Locked, пользователь не сможет добавить фильтры по тому же самому полю. Соответственно, описанной проблемы не возникнет.
Оба на! Здорово. И это поправили в 3.0...

Спасибо тебе, добрый фей.
Alt 18.01.2005, 16:28   #16  
Wamr ist offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1.737 / 868 (32) +++++++
Registriert seit: 15.01.2002
Ort: Москва
Blog-Einträge: 7
Zitat:
Изначально опубликовано mazzy

Оба на! Здорово. И это поправили в 3.0...

Спасибо тебе, добрый фей.
Не обольщайтесь!
В "ограниченном" поле сделайте поиск записи "значение1, значение2". А теперь откройте фильтр...
--------
Забыл важный момент - искать надо 2 раза
This post has been rated by: mazzy (17).
Alt 18.01.2005, 17:23   #17  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Изначально опубликовано Wamr
Не обольщайтесь!
И тебе, добрый фей, спасибо.

Черт, ну почему так, а?!
Alt 18.01.2005, 17:29   #18  
Maxim Gorbunov ist offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2.483 / 646 (26) +++++++
Registriert seit: 27.11.2001
Ort: Dubai, UAE
Wamr, спасибо за Ваш ответ! Давно не испытывал такого азарта, при поиске решения.

Действительно, против лома нет приема Как известно, у поговорки еще и окончание есть

Вот небольшая модификация класса SysSetupFormRun (немного изменен метод task()). После импорта этого проекта, поиск по полям, входящим в Locked или Hidden диапазоны, осуществляться не будет (будет заблокирован для этих полей).
Angehängte Dateien
Dateityp: xpo syssetupformrun.xpo (2,9 KB, 311x aufgerufen)
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
This post has been rated by: mazzy (17).
Alt 18.01.2005, 17:36   #19  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Перенесу-ка я в проекты.
Спасибо огромное.
Alt 18.01.2005, 17:48   #20  
Maxim Gorbunov ist offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2.483 / 646 (26) +++++++
Registriert seit: 27.11.2001
Ort: Dubai, UAE
Как обычно сделал, а потом подумал

Если настраивать фильтрацию по значению некоторого поля, стоит это поле от пользователя закрыть (как минимум, запретить его изменение, иначе не избежать ситуации, когда запись показывалась, а после того, как кто-то ее подредактировал - проала). Если от пользователя скрыть поле полностью, то и поиск по нему он сделать не сможет.

Таким образом, первоначальная задача (фильтрация списка заказов) была бы полностью решена, если в init'е кроме добавления нового range добавить еще и скрытие элементов дизайна, связанных с этим полем.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Stichworte
rls, axapta

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
права доступа Himan DAX: Функционал 9 24.09.2010 16:52
Влияние настройки доступа на уровне записей longson DAX: Функционал 2 15.01.2008 21:29
Настройка прав доступа на уровне записей Pan DAX: Администрирование 19 12.11.2006 11:10
Настройка доступа на уровне записей ATimTim DAX: Функционал 1 30.11.2004 13:37
SQL запросы в контроле доступа на уровне записей SDA DAX: Программирование 2 15.10.2004 09:55

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 17:41 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.