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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.03.2012, 17:58   #1  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Количество активных сессий = 0
Здравствуйте, проблема старая и решение есть, но интересна ее причина. Суть проблемы: "Количество активных сессий в Аксапте равно 0". Версия системы 3.0.
Решение здесь.
А именно:
Цитата:
Попробуй исправить статический метод licensedUsers на классе Info
Нужно вместо
Код:
X++:
select sysConfigTemp
        where sysConfigTemp.id == LicenseCodeNum(SysUsers);
написать
Код:
X++:
select sysConfigTemp
        where  sysConfigTemp.id == licenseCodeNum(SysUsers) 
             && sysConfigTemp.configType  == ConfigType::AccessCodes;
Но до недавнего времени количество сессий корректно отображалось и без дополнительного критерия в запросе метода licensedUsers() класса Info.

Подскажите, пожалуйста, в чем может причина данной проблемы, если все было ОК несколько лет?
__________________
С уважением, Александр.
Старый 21.03.2012, 20:12   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
посмотрите, какие еще записи в таблице подходят под критерий
X++:
where sysConfigTemp.id == LicenseCodeNum(SysUsers);
когда они появились
За это сообщение автора поблагодарили: samolalex (2).
Старый 22.03.2012, 08:20   #3  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Цитата:
Сообщение от Wamr Посмотреть сообщение
посмотрите, какие еще записи в таблице подходят под критерий
X++:
where sysConfigTemp.id == LicenseCodeNum(SysUsers);
когда они появились
да, спасибо. действительно, пару дней назад появились записи с ConfigType == ConfigurationKey. Это было связано, судя по всему, с добавлением выключенного конфигурационного ключа с целью скрытия ненужного элемента Enuma. Ну и получилось, что в таблице SysConfig у некоторых записей с типом ConfigurationKey и записей с типом AccessCodes поле id имеет одинаковое значение.

Почему, интересно, происходит создание записей в таблице SysConfig с уже существующим id при создании новых конфигурационных ключей? И не вылезет ли данное добаление записей где-нибудь в других местах системы, помимо метода licensedUsers() на классе Info?
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 22.03.2012 в 08:26.
Старый 22.03.2012, 09:42   #4  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Посмотрел метод LicencedUsers() класса Info в Ax 2009 и увидел, что там данный недостаток уже исправлен:
X++:
static server int licensedUsers()
{
    Dictionary  dictionary = new Dictionary();
    SysConfig   sysConfigTemp;

    select sysConfigTemp
        where (sysConfigTemp.Id == licensecodenum(SysUsers)) && (sysConfigTemp.ConfigType == ConfigType::AccessCodes);

    return dictionary.testCode(sysConfigTemp.Id,
                               sysConfigTemp.Value,
                               xSysConfig::find(ConfigType::LicenseName,0).Value,
                               xSysConfig::find(ConfigType::SerialNo,0).Value,
                               xSysConfig::find(ConfigType::LicenseName,1).Value);
}
Таким образом, для того, чтобы корректно отображались данные на форме Активные пользователи, а именно верно считалось число активных сессий в Axapta 3, необходимо добавить критерий проверки типа конфигурации
X++:
sysConfigTemp.ConfigType == ConfigType::AccessCodes
в методы:
1)Info::licensedUsers()
2)Info::licensedComUsers()
3)Info::licensedAosUsers()

Подсчет происходит так же в классе Info:
X++:
static server int licensedUsersTotal()
{
    return Info::licensedUsers()+Info::licensedComUsers()+Info::licensedAosUsers();
}
Плюс к этому, следует добавить данный критерий в метод licensedObjectServers() класса Info.
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 22.03.2012 в 10:02.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ограничение на количество сессий одного пользователя Raven Melancholic DAX: Администрирование 24 25.05.2011 08:58
Форма активных пользователей (SysUsersOnline) и сессии COM-коннектора gl00mie DAX: Программирование 6 28.11.2009 11:45
[Как ограничить] Количество одновременных сессий zarik DAX: База знаний и проекты 7 07.02.2005 13:45
Количество активных пользователей VIS DAX: Программирование 11 16.05.2003 10:32
Количество активных пользователей VIS DAX: Функционал 2 13.05.2003 17:34

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

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

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