AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 18.01.2005, 13:30   #1  
tischenko is offline
tischenko
Участник
 
35 / 10 (1) +
Join Date: 12.01.2005
Location: Киев
Права доступа на уровне записей
Нужно реализовать такую настройку прав доступа: есть таблица заказов и каждый пользователь видет в ней только те записи, что сам и создал. Некоторые пользователи видят все записи. Как проще всего реализовать данную схему.
Old 18.01.2005, 14:06   #2  
YellowSubmarine is offline
YellowSubmarine
Участник
 
111 / 12 (1) ++
Join Date: 18.12.2002
Создать группы пользователей = количеству пользователей и для каждой группы (фактически для каждого пользователя) настроить права доступа на уровне записей.
Old 18.01.2005, 14:07   #3  
Hamster is offline
Hamster
Участник
 
687 / 13 (2) ++
Join Date: 15.05.2003
Можно попробовать настроить RLS для поля createdBy.

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

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

А есть ли возможность в аксапте в запросной форме в качестве критерия функцию подставить? Типа взять поле createdby а в качестве критерия curuserid() ?
Old 18.01.2005, 14:19   #5  
Hamster is offline
Hamster
Участник
 
687 / 13 (2) ++
Join Date: 15.05.2003
нет
Old 18.01.2005, 14:34   #6  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: Dubai, UAE
Quote:
Изначально опубликовано 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
Old 18.01.2005, 14:35   #7  
rus_stas is offline
rus_stas
Участник
 
50 / 19 (1) ++
Join Date: 06.09.2004
Location: Киев
Quote:
Изначально опубликовано Hamster
Вариант 2 (для маньяков программеров):
можно создать в таблице поле, куда при создании записывается код группы пользователя и настраивать по нему
Зачем программировать, если можно использовать поле Получатель (вкладка Настройки шапки заказа) и по этому полю настроить RLS.

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


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

Old 18.01.2005, 14:47   #9  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: Dubai, UAE
Quote:
Изначально опубликовано 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
Old 18.01.2005, 14:51   #10  
rus_stas is offline
rus_stas
Участник
 
50 / 19 (1) ++
Join Date: 06.09.2004
Location: Киев
А Максим меня всегда опережает с ответом
__________________
С уважением,
rus_stas
Old 18.01.2005, 15:35   #11  
tischenko is offline
tischenko
Участник
 
35 / 10 (1) +
Join Date: 12.01.2005
Location: Киев
Спасибо это помогло

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);
}

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

Спасибо за внимание
Old 18.01.2005, 15:40   #12  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Изначально опубликовано tischenko
Спасибо это помогло
не обольщайтесь
здесь известные проблемы подобного подхода
http://axapta.mazzy.ru/works/accessrecord/#knownproblem
Old 18.01.2005, 15:42   #13  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: 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
Old 18.01.2005, 15:47   #14  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: Dubai, UAE
Quote:
Изначально опубликовано 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
Old 18.01.2005, 15:58   #15  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Изначально опубликовано Maxim Gorbunov
А вот и нет. Такие проблемы возникнут только в том случае, если оставить для критерия RangeStatus::Open. Если ставить RangeStatus::Hidden или RangeStatus::Locked, пользователь не сможет добавить фильтры по тому же самому полю. Соответственно, описанной проблемы не возникнет.
Оба на! Здорово. И это поправили в 3.0...

Спасибо тебе, добрый фей.
Old 18.01.2005, 16:28   #16  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Join Date: 15.01.2002
Location: Москва
Blog Entries: 7
Quote:
Изначально опубликовано mazzy

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

Спасибо тебе, добрый фей.
Не обольщайтесь!
В "ограниченном" поле сделайте поиск записи "значение1, значение2". А теперь откройте фильтр...
--------
Забыл важный момент - искать надо 2 раза
This post has been rated by: mazzy (17).
Old 18.01.2005, 17:23   #17  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Изначально опубликовано Wamr
Не обольщайтесь!
И тебе, добрый фей, спасибо.

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

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

Вот небольшая модификация класса SysSetupFormRun (немного изменен метод task()). После импорта этого проекта, поиск по полям, входящим в Locked или Hidden диапазоны, осуществляться не будет (будет заблокирован для этих полей).
Attached Files
File Type: xpo syssetupformrun.xpo (2.9 KB, 311 views)
__________________
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).
Old 18.01.2005, 17:36   #19  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Перенесу-ка я в проекты.
Спасибо огромное.
Old 18.01.2005, 17:48   #20  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: 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
Tags
rls, axapta

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
права доступа 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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 15:40.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.