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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.11.2018, 12:26   #10  
rashuf is offline
rashuf
Участник
 
14 / 15 (1) ++
Регистрация: 25.09.2013
Вот этот метод вызвался в startupPost
X++:
boolean closeOpenSession_flx()
{
    int             counter = 0,num;
    int             curSessions,maxSessions;
    int             curSessionId = new xSession().sessionId();
    container       users;
    userId          userId;
    Session         sessionToTerm;
    xSession        session;
    Container       userCon,activeUserCon;
    UserInfo        userInfo;
    ;

    counter = Info::licensedUsersTotal();
    userCon = SysUserInfo::getFullLicense();
    maxSessions = counter - conlen(userCon);
    curSessions = Info::getAllOnlineUser();
    userid = curuserid();
    // Проверка лицензий для приоритетных пользователей
    if (!confind(userCon,curuserid()) && curSessions >= maxSessions )
    {
        sessionToTerm = new Session(curSessionId);
        sessionToTerm.terminate();
        sessionToTerm = NULL;
        box::stop(strfmt("%1! Программа не может быть запущена. Количество активных пользователей превышает количество лицензий. Попробуйте подключиться позже!",
                  xUserInfo::find().name), "Microsoft Dynamics AX Access Control");
        appl.globalCache().set(classstr(Info),identifierstr(Autologoff), true);
        infolog.shutDown(true);
        return true;
    }
    // Проверка повторного входа того же пользователя
    if (SysUserInfo::checkLicenseAccess(userid))
    {
        for(counter = 1; counter < maxSessions;counter++ )
        {
            session = new xSession(counter, true);
            if(session && session.userId() && session.clientKind()!= ClientType::WorkerThread)
            {
                select firstOnly userInfo
                    where userInfo.id == session.userId();

                if (userInfo && (userid == session.userId()))
                {
                    num++;
                }
            }
        }
    }
    if (num > 1)
    {
        box::stop(strfmt("%1! Программа не может быть запущена дважды!",
                  xUserInfo::find().name), "Microsoft Dynamics AX Access Control");
        appl.globalCache().set(classstr(Info),identifierstr(Autologoff), true);
        infolog.shutDown(true);
        return true;
    }
    return false;
}
X++:
if (this.closeOpenSession_flx())
{
    return;
}

Последний раз редактировалось rashuf; 30.11.2018 в 12:28.
Теги
ax2009, зависание

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX2009 как работать с элементом Window Arahnid DAX: Администрирование 2 14.09.2014 14:59
Dynamics AX Sustained Engineering: Individual patching for Dynamics AX2009 SP1 industry solutions Blog bot DAX Blogs 0 13.06.2012 10:11
axinthefield: Choosing a Single Deployment or Multiple Deployments of AX2009 Blog bot DAX Blogs 0 15.06.2011 03:25
Ax2009 SP1 RU6. LedgerBalanceSum_CurrentMST.buildQuery(). Ошибка при пустой начальной дате Damn DAX: Программирование 11 30.03.2011 16:15
Почему не могут зайти пользователи Excel 2003 на OLAP 2005? mazzy DAX: Администрирование 4 30.08.2007 10:35

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:29.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.