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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.12.2011, 09:53   #1  
Raven13 is offline
Raven13
Участник
 
9 / 15 (1) ++
Регистрация: 25.06.2010
Обновление прав пользователя без выхода из системы
Ниже процедура, которая позволяет перегружать права пользователя _без_ выхода из системы. Надеюсь будет полезна.

Данная реализация работает для 3й ахапки (возможно 4й, не проверял).

Для 5ки процедура разработана, пока тестируется (:

X++:
static void ReloadUserRights(Args _args)
{
    #WinApi
    #AOT
    #define.message('Перед обновлением прав буду закрыты все окна. Продолжить?')

    Integer   item;
    container list;

    Dictionary dictionary;
    Company    company;

    TreeNode mainMenu;

    ////////////////////////////////////////////////////////////////////////////////////
    // Вспомогательная процедура, возвращает список открытых окон
    container getAxChildWindows()
    {
        container windows;
        int       counter = 0;

        DLL         user32    = new DLL('user32');
        DLLFunction isVisible = new DLLFunction(user32, 'IsWindowVisible');

        hWnd childWnd;
        hWnd mdiClient = WinApi::findWindowEx(infolog.hWnd(), 0, 'MDIClient', '');
        ;
        isVisible.returns(ExtTypes::DWord);
        isVisible.arg(ExtTypes::DWord);

        for (childWnd = WinApi::findWindowEx(mdiClient, 0, '', '');
             childWnd;
             childWnd = WinApi::findWindowEx(mdiClient, childWnd, '', ''))
        {
            if (isVisible.call(childWnd) ? true : false)
            {
                ++counter;
                windows = conins(windows, counter, childWnd);
            }
        }
        return windows;
    }
    ////////////////////////////////////////////////////////////////////////////////////
    ;
    if (box::yesNo(#message, DialogButton::No, 'Запрос', #message) != DialogButton::Yes)
        return ;

    //--> получим спиcок дочерних окон и закроем найденые
    list = getAxChildWindows();

    for(item = 1; item <= conlen(list); item++)
        WinAPI::sendMessageEx(conpeek(list, item), #WM_SYSCOMMAND, #SC_CLOSE, 0);
    //<-- получим спиcок дочерних окон и закроем найденые

    //--> перезагрузим права пользователя
    dictionary = new Dictionary();
    company    = new Company(curExt());

    dictionary.reloadSecurity(false, false);
    company.reloadRights();

    infolog.globalCache().clear(classStr(SysSecurityFormSetup));

    if (!domainAccess())
        SecurityKeySet::reloadDomainRestrictions();
    //<-- перезагрузим права пользователя

    //--> откроем главное меню
    mainMenu = TreeNode::findNode(strfmt('%1\\MainMenu', #MenusPath));

    if (mainMenu != null)
        mainMenu.AOTrun();
    //<-- откроем главное меню
}

Последний раз редактировалось Raven13; 12.12.2011 в 09:55.
За это сообщение автора поблагодарили: Logger (3), Bega (2).
Старый 12.12.2011, 09:58   #2  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
Можно компанию выбрать еще раз и права будут обновлены.
За это сообщение автора поблагодарили: S.Kuskov (2), Raven13 (1).
Старый 12.12.2011, 13:40   #3  
Raven13 is offline
Raven13
Участник
 
9 / 15 (1) ++
Регистрация: 25.06.2010
Цитата:
Можно компанию выбрать еще раз и права будут обновлены.
век живи, как говорится, век учись. Спасибо.
у нас одна компания, потому и не знал о таком поведении системы.

я так понимаю вариант для 5ки будет не интересен?
Старый 21.12.2011, 04:56   #4  
mvsenin is offline
mvsenin
Участник
 
21 / 10 (1) +
Регистрация: 09.11.2011
Не всегда смена компании в 5-ке помогает, точно для чего не могу сказать, но на практике это не 100% гарантия применения всех сделанных изменений в правах. 100% - это перегрузка клиента.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обновление detail-таблицы DreamCreator DAX: Программирование 1 05.04.2005 15:57
Размышления на тему “Системы контроля версий в Аксапте”. Андре DAX: База знаний и проекты 31 07.02.2005 12:29
при построении перекрёстных ссылок выдаётся сообщение об ошибках mmmax DAX: Программирование 10 21.01.2005 12:42
Проблемы настройки прав доступа пользователям axot DAX: Администрирование 25 16.05.2002 10:47
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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