Показать сообщение отдельно
Старый 03.05.2017, 11:33   #7  
CHESER85 is offline
CHESER85
Участник
 
93 / 11 (1) +
Регистрация: 04.08.2011
Адрес: Ufa
Записей в блоге: 1
Цитата:
Сообщение от dech Посмотреть сообщение
Как насчет контроля за количеством сессий? Т.е. не открывать новые сессии, если не закрыты старые?
В АХ4 этого можно добиться, прописав следующий код в начале метода AppComponent.handleStartupEvent()
X++:
#define.SessionsAllowed(3)

SysClientSessions   clientSessions;
;

select count(RecId) from clientSessions
    where clientSessions.UserId     == curuserid()
       && clientSessions.Status     == 1
       && clientSessions.ClientType == 0;

if (clientSessions.RecId > #SessionsAllowed)
{
    box::stop(strfmt("%1 is only allwed %2 AX Client Sessions.  AX Client will close now.",
        xUserInfo::find().name, #SessionsAllowed), "AX Client Sessions exceeded");

    appl.globalCache().set(classstr(Info),identifierstr(Autologoff), true);
    info = new Info();
    info.shutDown(true);
}
Мы даже сделали таблицу с 2 полями: UserId, AllowedSessions.
Разработчикам и консам дали 5 сессий, а остальным по 3. Все довольны.
А если например зависла аксапта и ее аварийно пришлось закрыть? а сессия висеть осталась