30.11.2018, 12:26 | #10 |
Участник
|
Вот этот метод вызвался в 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, зависание |
|
|