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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.12.2011, 13:49   #21  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от Kabardian Посмотреть сообщение
Выполняется очееень долго (~4-9 часов) и не всегда завершается успешно. Оптимизировать времени не было, поэтому и хотфикс не выкладываю, а лишь делюсь опытом :-).
А чего так долго? Открываем таблицу AccessRightList и удаляем там руками записи с именем MenuItem-а данного отчета (это если в компании принято давать права на объекты, а не на ключи доступа). Если права даны на ключи, то пишем job, который для групп с ключами, добавит запись с отключением доступа к отчету.
Или просто на MenuItem данного отчета вешаем другой ключ.
Или в коде отчета делаем проверку на ключ и закрываем его, если нет доступа.
Есть масса вариантов что бы потратить ~4-9 часов более разумно.
За это сообщение автора поблагодарили: gl00mie (2), Kabardian (1).
Старый 03.12.2011, 18:19   #22  
Kabardian is offline
Kabardian
Талантливый разгвоздяй
Аватар для Kabardian
 
424 / 338 (12) ++++++
Регистрация: 14.12.2008
Адрес: Москва
Записей в блоге: 14
Цитата:
Сообщение от raz Посмотреть сообщение
А чего так долго? Открываем таблицу AccessRightList и удаляем там руками записи с именем MenuItem-а данного отчета (это если в компании принято давать права на объекты, а не на ключи доступа). Если права даны на ключи, то пишем job, который для групп с ключами, добавит запись с отключением доступа к отчету.
Или просто на MenuItem данного отчета вешаем другой ключ.
Или в коде отчета делаем проверку на ключ и закрываем его, если нет доступа.
Есть масса вариантов что бы потратить ~4-9 часов более разумно.
Спасибо за много разных и интересных вариантов :-), но были причины:
  • отчетов было много (больше 100);
  • нужно было обойтись с минимумом разработки, чтобы не тратить много времени на тестирование.
Из предложенных вариантов, не вижу какого-то одного универсального, чтобы он сработал на случай, когда я не знаю как в компании принято давать права на объекты .

Используя подход описанный на Axaptapedia, написал джоб для массового отключения прав доступа к menuitem, чуть позже выложу его здесь.
Старый 03.12.2011, 23:45   #23  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
На 2009-й кто-нить использовал это проект ?
Используем на тех же объединенных кондитерах на DAX2009, например, чтобы понять, какие группы имеют доступ к объекту. Функционал крайне полезный. Выложу в понедельник проект для DAX2009.

Последний раз редактировалось Bega; 03.12.2011 в 23:56.
Старый 05.12.2011, 08:09   #24  
maximka is offline
maximka
Сам.AX
Аватар для maximka
Самостоятельные клиенты AX
 
96 / 24 (1) +++
Регистрация: 26.10.2006
Адрес: Тюмень
Цитата:
Сообщение от raz Посмотреть сообщение
А чего так долго? Открываем таблицу AccessRightList и удаляем там руками записи с именем MenuItem-а данного отчета
Ага, а если у нас на родительский объект дан доступ > NoAccess, то с удивлением обнаруживаем, что отчет у пользователя не пропал.
Поэтому не советую трогать AccessRightsList руками.
__________________
ѣ
Старый 05.12.2011, 09:06   #25  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
Вот проект для DAX2009 ru7.
SharedProject_OK001356.xpo
За это сообщение автора поблагодарили: Logger (15).
Старый 05.12.2011, 11:08   #26  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от maximka Посмотреть сообщение
Ага, а если у нас на родительский объект дан доступ > NoAccess, то с удивлением обнаруживаем, что отчет у пользователя не пропал.
Поэтому не советую трогать AccessRightsList руками.
Читайте всё сообщение внимательно.
Старый 05.12.2011, 11:23   #27  
maximka is offline
maximka
Сам.AX
Аватар для maximka
Самостоятельные клиенты AX
 
96 / 24 (1) +++
Регистрация: 26.10.2006
Адрес: Тюмень
Цитата:
Сообщение от raz Посмотреть сообщение
Читайте всё сообщение внимательно.
Ок, согласен.
Конкретно с отчетами этот вариант работает, но в общем случае, считаю, что не следует лезть в AccessRightsList.
__________________
ѣ
Старый 06.12.2011, 22:30   #28  
Kabardian is offline
Kabardian
Талантливый разгвоздяй
Аватар для Kabardian
 
424 / 338 (12) ++++++
Регистрация: 14.12.2008
Адрес: Москва
Записей в блоге: 14
!
Цитата:
Сообщение от Kabardian Посмотреть сообщение
Спасибо за много разных и интересных вариантов :-), но были причины:
  • отчетов было много (больше 100);
  • нужно было обойтись с минимумом разработки, чтобы не тратить много времени на тестирование.
Используя подход описанный на Axaptapedia, написал джоб для массового отключения прав доступа к menuitem, чуть позже выложу его здесь.
Будьте предельно осторожны с джобом по ссылке! Последствия в моем случае:
  • слетели права доступа для многих групп пользователей к различным таблицам
  • значительно замедлилась система


Использовал оттуда кусок кода для каждого сочетания группа + домен:
X++:
void disableMenuItems(SecurityKeySet _securitySet)
    {
        str name;
        AccessRecordType recordType;
        int idx;
        AccessType accessType;
        for (idx = 1; idx <= conLen(menuItems); idx++)
        {
            [name, recordType] = conpeek(menuItems, idx);
            accessType = _securitySet.menuItemAccess(name, recordType);
            if (accessType!= AccessType::NoAccess)
            {
                info(strFmt('%1:%2, %3', name, recordType, accessType));
                _securitySet.menuItemAccess(name, recordType, AccessType::NoAccess);
            }
        }
    }

Пока точная причина неизвестна, тем не менее решил предупредить, мало ли вдруг все-таки этот джоб виноват .


Как выясню причину, сообщу.
За это сообщение автора поблагодарили: Logger (1).
Старый 09.04.2013, 11:18   #29  
Ketrin_69 is offline
Ketrin_69
Участник
 
49 / 15 (1) ++
Регистрация: 26.11.2004
Адрес: Москва
Полезная штуковина! спасибо.
Старый 22.04.2013, 17:16   #30  
LRA is offline
LRA
Участник
 
41 / 39 (2) +++
Регистрация: 19.12.2005
Адрес: Москва
Очень полезно. Спасибо.
У нас стажер - Шилова Мария немного модифицировала форму. Добавила закладку, на которой видны и группы, и пользователи, имеющие доступ к объекту. Причем видно, по какой группе пользователь имеет какой доступ. А если выбранный объект – таблица, то можно посмотреть RLS’ы тоже по группам и пользователям.
Вложения
Тип файла: zip AdminUserRightsPerm.zip (14.2 Кб, 307 просмотров)
За это сообщение автора поблагодарили: S.Kuskov (3), BSM_ (1).
Старый 23.04.2013, 07:58   #31  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
To LRA: А почему вкладка с пользователями доступна только при просмотре "Контроль доступа".
Форма должна открываться в каком-то контексте? Если просто её открыть из проекта то комбобокс для переключения просмотра не доступен и по умолчанию отображает "Главное меню".
Старый 23.04.2013, 10:40   #32  
LRA is offline
LRA
Участник
 
41 / 39 (2) +++
Регистрация: 19.12.2005
Адрес: Москва
To S. Kuskov
У нас по умолчанию он отображает «Контроль доступа». Если быть более точным, то отображается последний выбор на форме SysUserGroupSecurity (Права групп пользователей) на закладке "Права доступа", поле "Просмотр". На нашей форме закрытие поля на редактирование связано со спецификой нашего функционала.
Старый 24.04.2013, 13:50   #33  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Только сейчас заметил эту классную утилиту. У меня она после нажатия на кнопку "Установить" начинает долго что-то обрабатывать, но при нажатии CTRL+BREAK обработка прерывается, и права оказываются настроенными как надо.
Старый 24.01.2019, 10:09   #34  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Kabardian Посмотреть сообщение
Будьте предельно осторожны с джобом по ссылке! Последствия в моем случае:
  • слетели права доступа для многих групп пользователей к различным таблицам
  • значительно замедлилась система


Пока точная причина неизвестна, тем не менее решил предупредить, мало ли вдруг все-таки этот джоб виноват .


Как выясню причину, сообщу.
причина в этой строке кода
X++:
xAccessRightsList::saveSecurityRights(securitySet.pack(), localGroup.Id, domain);
При ее использовании сохраняются все права для всех табличек и менюитемов. В моем случае получилось порядка 10 тысяч записей на одну группу прав. Конечно будет тормозить.
Также для большинства табличек прописывается NoAccess. Как правило приводит к тому что лукапы не работают.
Если написать так
X++:
xAccessRightsList::saveSecurityRights(securitySet.packTouched(), localGroup.Id, domain);
то все ок.
За это сообщение автора поблагодарили: S.Kuskov (5).
Теги
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, время: 07:07.