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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.12.2007, 09:50   #1  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
? Как программно изменить права доступа на объект ?
Например, есть поле в таблице (или MenuItem или еще что-нибудь), нужно у группы изменить права доступа на это поле (или другой объект) из X++ .
Не подскажете, каким методом это можно сделать? А то что-то я запутался в секурных классах.
Старый 28.12.2007, 10:09   #2  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Может я не понял вопрос. Зачем для этого кодить?
Программно проверить включён ли ключ можно так.
X++:
    DictSecurityKey dictSecurityKey;
    ;
    dictSecurityKey = new DictSecurityKey(id );
    if(!dictSecurityKey || (.rights() != AccessType::NoAccess)))
    {
         .....
    }
За это сообщение автора поблагодарили: lev (1).
Старый 28.12.2007, 10:16   #3  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Ключи тут не причем ! Я имею ввиду права доступа у полю таблицы или к пункту меню для определенной группы пользователей.
Старый 28.12.2007, 10:42   #4  
EAlex is offline
EAlex
Участник
 
27 / 14 (1) ++
Регистрация: 30.01.2004
X++:
secSet  = SysSecurity::constructSecurityKeySet();
secSet.loadGroupRights(userGroup.id, '');

//Уровень доступа на MenuItem
//            secSet.access(_MenuItemId ,AccessType::NoAccess);        

//Уровень доступа на таблицу
//            secSet.tableAccess(_TableId,AccessType::NoAccess);        

//Сохранить
xAccessRightsList::saveSecurityRights(secSet.packTouched(), userGroup.id, '');
За это сообщение автора поблагодарили: Logger (1).
Старый 28.12.2007, 12:08   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
egorych - а зачем это могло вам понадобиться?
Старый 28.12.2007, 13:36   #6  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от kashperuk Посмотреть сообщение
egorych - а зачем это могло вам понадобиться?
Например, делается новый пункт меню или кнопка, привязывается к существующему SecurityKey, и доступ автоматом получают все, у кого этот ключ "включен". Затем нужно пройти по всем группам и выключить кому не положено.
Хочу эту процедуру чуть-чуть упростить.
Старый 28.12.2007, 14:41   #7  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Может поможет вот этот проект? Это установка прав, но идем не от группы к правам, а наоборот: выбираем пункт на который нужно установить права и переходим в список групп.
Вложения
Тип файла: xpo AK_SecurityUserGroup.xpo (100.4 Кб, 1034 просмотров)
За это сообщение автора поблагодарили: Dron AKA andy (2), belugin (3), egorych (1), gl00mie (9), Umi (1), Egesihora (1), Maximin (2), Kabardian (3), Logger (5), denny (1), player (1), zemius (1), Alexanderrrr (1), andy.l (1), S.Kuskov (2), alex55 (2), sukhanchik (10), Just_smile (1), Proba (1), dn (2), ice321i (1), novic (1), vagon (1), Player1 (1), someOne (8), A_BAS (0), Xardas (1), mazzy (2), Ace of Database (4), PQRS (1), wedmak_dk (1), RVS (5), Товарищ ♂uatr (4).
Старый 28.12.2007, 15:04   #8  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Может поможет вот этот проект?
Спасибо, посмотрю.
Посмотрел, класс!!! То что я хотел делать!
Дкмаю в полезное занести нужно

Последний раз редактировалось egorych; 28.12.2007 в 16:52.
Старый 25.08.2009, 14:41   #9  
Kabardian is offline
Kabardian
Талантливый разгвоздяй
Аватар для Kabardian
 
424 / 338 (12) ++++++
Регистрация: 14.12.2008
Адрес: Москва
Записей в блоге: 14
Цитата:
Сообщение от egorych Посмотреть сообщение
Спасибо, посмотрю.
Посмотрел, класс!!! То что я хотел делать!
Дкмаю в полезное занести нужно
Kernel version: 4.0.2501.116
Application version: 4.0.2501.121
Localization version: Eastern Europe


Занес в полезное ;--).

egorych, пожалуйста, поделитесь опытом:
  1. На какой версии AX использовали?
  2. На какой среде? (тестовая, рабочая)
  3. Были ли какие-то проблемы с использованием?
У меня возникла только одна проблема -- кракозябры при установке на полностью английскую тестовую среду. Проблема решилась сменой региональных настроек на родные ;--).

Последний раз редактировалось Kabardian; 25.08.2009 в 14:51.
Старый 25.08.2009, 21:18   #10  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Может поможет вот этот проект? Это установка прав, но идем не от группы к правам, а наоборот: выбираем пункт на который нужно установить права и переходим в список групп.
Пробежал код по диагонали - впечатлило.
А как вы его писали ?
Переложили дерево из стандартной формы прав доступа для групп на некое подобие реляционной структуры ?

Известные косяки при использовании есть ? (уж очень стремно залезать в права самим)
У вас на какой версии работало ? 3-ка ?
Старый 29.08.2009, 20:39   #11  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
А как вы его писали ?
Переложили дерево из стандартной формы прав доступа для групп на некое подобие реляционной структуры ?
Да, применил индуский поход Copy-Paste. Разрабатывалось для Ax3.0 еще когда работал в объединенных кондитерах. Там достаточно много было доработок (как самостоятельных, так и с привлечением специалистов Навикон и Норбит) Начальник отдела сопровождения Юля замучилась при появлении новой функциональности устанавливать права по группам и попросила сделать что-то, облегчающее работу. Вот, после очередного похода в Золотую воблу сил на что-то серьезное не было и в результате появилось это.Разрабатывалось для Ax3.0, но сейчас вроде работает на DAX4. Правда на DAX4 иногда при установке каскада бывает задумывается минут на 20-30. Закономерности не нашел, а следовательно не поправил.

Последний раз редактировалось Raven Melancholic; 29.08.2009 в 20:41.
За это сообщение автора поблагодарили: Logger (9), Kabardian (3).
Старый 31.08.2009, 09:01   #12  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Активно пользуюсь данным инструментом на Ax3. Единственное замечание возникло.
Имеем форму, там кнопка, без ключа и без menuitem - простая кнопка. Стандартной формой "Права групп пользователей" без проблем можно выставить доступ NoAccess для нее, а вот эта не позволяет - пишет что-то типа "Для объекта доступен только режим View". За точность не ручаюсь, но смысл этот.
А в остальном - посто класс!
ps А на Ax 2009 не делали? А то мы 4 пропускаем, планируем сразу на 5.
За это сообщение автора поблагодарили: Raven Melancholic (5), Kabardian (3).
Старый 01.09.2009, 21:29   #13  
Kabardian is offline
Kabardian
Талантливый разгвоздяй
Аватар для Kabardian
 
424 / 338 (12) ++++++
Регистрация: 14.12.2008
Адрес: Москва
Записей в блоге: 14
Цитата:
Сообщение от egorych Посмотреть сообщение
Имеем форму, там кнопка, без ключа и без menuitem - простая кнопка. Стандартной формой "Права групп пользователей" без проблем можно выставить доступ NoAccess для нее, а вот эта не позволяет - пишет что-то типа "Для объекта доступен только режим View".
У меня на AX4.0 SP2 не повторилось. Кажется, я понимаю о чем идет речь. Эта ошибка появляется, при попытке назначить уровень доступа выше максимального. Например, максимальный уровень доступа у элемента View, при поытке указать уровень Edit, будет выдано такое сообщение об ошибке. В стандартной форме при таких же условиях автоматически устанавливается максимально возможный уровень доступа без лишних предупреждений .
Старый 02.09.2009, 09:39   #14  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от Kabardian Посмотреть сообщение
Например, максимальный уровень доступа у элемента View, при поытке указать уровень Edit, будет выдано такое сообщение об ошибке.
Не-е-е! Я как раз хочу убрать доступ!
Старый 02.09.2009, 15:30   #15  
Kabardian is offline
Kabardian
Талантливый разгвоздяй
Аватар для Kabardian
 
424 / 338 (12) ++++++
Регистрация: 14.12.2008
Адрес: Москва
Записей в блоге: 14
Цитата:
Сообщение от egorych Посмотреть сообщение
Не-е-е! Я как раз хочу убрать доступ!
У меня убирается без проблем.

Как я проверял:
  1. Создал форму, кнопку, пункты меню на форму и на кнопку без Security Key
  2. Установил разные уровни доступа в разных доменах с помощью этого инструмента
  3. Проверил через стандартную форму уровень доступа в разных доменах -- все ОК
  4. Снял доступ во всех доменах
  5. Проверил через стандартную форму уровень доступа в разных доменах -- все ОК

Скорее всего, этот баг наблюдается при особых условиях, т. е. отсутвие Security Key -- это всего лишь одно из необходымых условий его воспроизведения.
Старый 02.09.2009, 18:14   #16  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от egorych Посмотреть сообщение
Имеем форму, там кнопка, без ключа и без menuitem - простая кнопка. Стандартной формой "Права групп пользователей" без проблем можно выставить доступ NoAccess для нее, а вот эта не позволяет - пишет что-то типа "Для объекта доступен только режим View". За точность не ручаюсь, но смысл этот.
Да, вкралась ошибка. Для исправления нужно в форме SecurityUserGroup_AK в методе getAccessForGroup закомментировать в ветке:
X++:
case SysSecurityType::FormButton:
строку:
X++:
minAccess  = sysSecurityFormSetup.getNeededAccessLevel(tmpSecurityTable.controlId);
Старый 02.09.2009, 18:16   #17  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от Kabardian Посмотреть сообщение
Скорее всего, этот баг наблюдается при особых условиях...
Скорее всего, у вас эту ошибку уже давно исправили
За это сообщение автора поблагодарили: Pustik (3), Kabardian (3).
Старый 02.09.2009, 19:55   #18  
Kabardian is offline
Kabardian
Талантливый разгвоздяй
Аватар для Kabardian
 
424 / 338 (12) ++++++
Регистрация: 14.12.2008
Адрес: Москва
Записей в блоге: 14
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Скорее всего, у вас эту ошибку уже давно исправили
Нет, я использовал его только в песочнице AX40SP2, но в планах был перенос на тестовое и рабочее приложения, после проверки ведущим разработчиком . Указанная строка не закомментирована.
Старый 01.11.2011, 18:39   #19  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Может поможет вот этот проект? Это установка прав, но идем не от группы к правам, а наоборот: выбираем пункт на который нужно установить права и переходим в список групп.
На 2009-й кто-нить использовал это проект ?
Старый 02.12.2011, 22:08   #20  
Kabardian is offline
Kabardian
Талантливый разгвоздяй
Аватар для Kabardian
 
424 / 338 (12) ++++++
Регистрация: 14.12.2008
Адрес: Москва
Записей в блоге: 14
Просто поделюсь опытом, может кому-нибудь пригодится.

Дано:
  • AX 4.0 SP2, версия ядра 4.0.2503.116;
  • ~450 групп пользователей;
  • 10 доменов.

Задача:
  • отключить доступ к одному отчету у всех групп.

Выполняется очееень долго (~4-9 часов) и не всегда завершается успешно. Оптимизировать времени не было, поэтому и хотфикс не выкладываю, а лишь делюсь опытом :-).
За это сообщение автора поблагодарили: Pustik (3).
Теги
axapta, законченный пример, полезное, права доступа, программно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
права доступа Himan DAX: Функционал 9 24.09.2010 16:52
Права доступа Группы пользователей к таблице ta_and DAX: Администрирование 2 19.01.2009 15:19
Права доступа на поля формы. AlexeyBP DAX: Функционал 6 12.12.2006 12:02
Как программно изменить к-во в строке заказа в форме SalesTable BorDark DAX: Программирование 2 13.01.2005 17:02
Права доступа - Журнал платежей SDA DAX: Прочие вопросы 1 20.09.2004 23:10

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

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

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