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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.06.2011, 18:10   #1  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
%2 %1 не инициализированы. Ошибка прав доступа
DAX 2009 SP1 RU6.
В процессе настройки системы каким-то образом в таблице прав скопились ссылки на меню-айтемы, которые отключены конфигурационными ключами. При этом если пользователь входит в группу с такой ссылкой и еще хотя бы в одну другую группу, то при старте клиента выдается сообщение "%2 %1 не инициализированы."

Напрямую докопаться до места выдачи ошибки не получилось, уперлись в системный класс управления правами доступа. Экспериментальным путем найдена указанная причина. Мало ли кому пригодится джобик для поиска проблемных ссылок, запускать пользователю с правами Admin:
X++:
static void securityGroupsFix(Args _args)
{
    AccessRightsList    arl;
    ;

    while select arl
        where //(arl.groupId == '' || arl.groupId == '') &&
              (arl.recordType == AccessRecordType::MenuItemAction ||
               arl.recordType == AccessRecordType::MenuItemDisplay ||
               arl.recordType == AccessRecordType::MenuItemOutput)
    {
        switch (arl.recordType)
        {
            case (AccessRecordType::MenuItemAction) :
                if (!global::hasMenuItemUserAccess(arl.elementName, MenuItemType::Action))
                    info(strfmt("%1 - %2", arl.groupId, arl.elementName));
                break;
            case (AccessRecordType::MenuItemDisplay) :
                if (!global::hasMenuItemUserAccess(arl.elementName, MenuItemType::Display))
                    info(strfmt("%1 - %2", arl.groupId, arl.elementName));
                break;
            case (AccessRecordType::MenuItemOutput) :
                if (!global::hasMenuItemUserAccess(arl.elementName, MenuItemType::Output))
                    info(strfmt("%1 - %2", arl.groupId, arl.elementName));
                break;
        }
    }
}
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: Logger (10), farlander (1).
Старый 25.10.2012, 11:18   #2  
xiety is offline
xiety
Участник
 
1 / 10 (1) +
Регистрация: 11.04.2008
подскажите код метода hasMenuItemUserAccess
__________________
Всем спасибо..
Старый 25.10.2012, 11:28   #3  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
X++:
static public boolean hasMenuItemAccess(MenuName name, MenuItemType type)
{
    boolean     ret = false;
    SysDictMenu sysDictMenu = SysDictMenu::newMenuItem(name, type);
    ;

    if (sysDictMenu)
    {
        ret = sysDictMenu.isVisible();
    }

    return ret;
}
Теги
ax2009, ошибка, права доступа

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Расширение возможностей стандартных прав доступа Stainless DAX: Программирование 2 19.06.2008 10:36
Ошибка при попытке открыть узел в форме настройки прав доступа listener DAX: Администрирование 2 26.01.2005 11:32
при построении перекрёстных ссылок выдаётся сообщение об ошибках mmmax DAX: Программирование 10 21.01.2005 12:42
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Проблемы настройки прав доступа пользователям axot DAX: Администрирование 25 16.05.2002 10:47

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

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

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