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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.07.2004, 15:53   #1  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,480 / 1255 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Эх. Тряхну стариной. Вот код, который запускался из startup Applicationa и следил, если ли уже открытые сесси у данного пользователя. Если есть, то по запросу убивал. Для верности было сочетание terninate + notify. Просто terminate не всегда убивал сессии. Попробйте!
PHP код:
//SP0003_CheckSessions_GNRD
void checkAllOpenSessions_flx()
{
    
int             counter 0;
    
int             maxSessions;
    
int             curSessionId = new xSession().sessionId();
    
container       users;
    
int             sesId;
    
userId          userId;
    
ClientType      clientKind;
    
date            loginDate;
    
int             loginTime;
    
str             clientComputerName;
    
str             databaseSpid;
    
userName        userName;
    
AOSClientMode   clientMode;
    
int             idleTicks;
    
str             info;
    
Session         sessionToTerm;
    
AOSSessionInfo  testSession;
    ;

    [ 
usersmaxSessions ] = SysUsersOnline::getAllOnlineUserInfo();

    for(
counter 1counter <= maxSessionscounter++)
    {
        [   
sesId,
            
userId,
            
clientKind,
            
loginDate,
            
loginTime,
            
clientComputerName,
            
databaseSpid,
            
userName,
            
clientMode,
            
idleTicks
            
] = conPeek(userscounter);

        if (
userId == '-AOS-')
            continue;

        if (
sesId != curSessionId && userId == curuserid())
        {
            
info strfmt("????????! ? ???????????? %1 (%2) ??? ???? ???????? ?????? ? ??????? %3 ???????? ? ?????????? %4 %5 ????? ? %6. ??????? ?????? ???????",
                                    
UserName,
                                    
UserId,
                                    
sesId,
                                    
clientComputerName,
                                    
loginDate,
                                    
time2str(loginTime,1,1));
            if (
Box::yesNo(info,DialogButton::Yes,"????????! ???? ???????? ??????!","?? - ??????? ?????? ?????? (?????????????), ??? - ??????????") == DialogButton::Yes)
            {
                
sessionToTerm = new Session(sesId);
                
sessionToTerm.terminate();
                
info strfmt("????????! ???? ?????? ???? ???????? ? ?????????? %1!"clientComputerName);
                
testSession = new AOSSessionInfo(sesId);
                if (
testSession)
                    
AOSSessionInfo::sendMessage(sesId"????????!"info);
                
sessionToTerm.notify();
                
sessionToTerm NULL;
            }
        }
    }

С Уважением,
Георгий
За это сообщение автора поблагодарили: Logger (5).
Теги
ax2.5

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Можно ли завершить сессию на 2 уровневой архитектуре. propeller DAX: Программирование 2 05.11.2008 09:49
Можно-ли завершить текущую(свою) сессию? egorych DAX: Программирование 2 09.10.2007 15:50
почему на работает common.(fieldId)[idx] maze DAX: Программирование 3 31.08.2007 06:48
Почему не работает кнопка Исходный документ в Бухг провод? Arahnid DAX: Программирование 1 20.05.2007 11:20
Почему не работает not exists в конструкции while select Владимир Максимов DAX: Программирование 2 03.02.2004 12:17
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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