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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.11.2016, 16:59   #1  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Установка ax2009 на windows 2012 R2
Привет всем.
Решили мы наконец перейти на терминальных серверах с 2003-й винды (32 бит) на 2012 R2

Все поставили - работает но бывают очень странные плавающие глюки. Может быть кто-нибудь подскажет в чем может быть дело.

Описание :
Форма LedgerJournalTable
Управляющий класс LedgerJournalformTable
При инициализации формы отрабатывает метод
X++:
SysQuery::GRD_setFieldRange( qbds, fieldnum(LedgerJournalTable, journalType), queryValue(ledgerJournalType), RangeStatus::Locked );
где GRD_setFieldRange это
X++:
// очищает все Range'и по указанному полю и устанавливает новый Range с указанным статусом
static QueryBuildRange GRD_setFieldRange(QueryBuildDataSource   _qbds,
                                        FieldId                 _fieldId,
                                        Range                   _rangeValue,
                                        RangeStatus             _rangeStatus = RangeStatus::Open)
{
    QueryBuildRange qbr;
    ;
    if (_qbds)
    {
        while (_qbds.findRange(_fieldId))
        {
            _qbds.clearRange(_fieldId);
        }
        qbr = _qbds.addRange(_fieldId);
        if (qbr)
        {
            qbr.value( _rangeValue);
            qbr.status(_rangeStatus);
        }
    }
    return qbr;
}
Выяснилось что после отработки этого метода "портится" значение переменной criteriaJournalType определенной тут
\Classes\JournalFormTable\classDeclaration
и инициализированной так :
X++:
    if (journalStatic.tableFieldIdJournalType())
        criteriaJournalType         = journalTable_ds.query().dataSourceNo(1).addRange(journalStatic.tableFieldIdJournalType());
(это стандартный код)

"Порча" в том что Аксапта начинает считать ссылку criteriaJournalType нулевой, но в какой то момент (вызов super() на дочерних датасорсах прилинкованных по delayed) эта ссылка вообще смотрит на какой то узел в treenode в AOT а вовсе не на QueryBuildRange ! Из-за чего при попытке работать с ней лезут ошибки. В частности при попытке установить фильтр ядро ругается что нет метода value

Из-за чего это может быть ? Как лечить ?
Ядро от RU7 (билд 1500.4570)
Проявляется на win2012 R2
Не проявляется на win2003 и на win2008 R2
Настройка совместимости с winXp, win7, etc в ярлыке запускающем клиента аксапты - не помогает.

Последний раз редактировалось Logger; 08.11.2016 в 17:06.
Старый 27.07.2017, 16:49   #2  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Может кто-нибудь сталкивался с такой проблемой ?
Неужели никто не использует 2012-ю винду на терминальных серверах ?

Проблема должна проявляться после вызова qbds.clearRange(fieldId);
Таким мест очень много в коде если смотреть по перекрестным ссылкам.

P.S.
Ядро 5.0.1600.3596

Последний раз редактировалось Logger; 27.07.2017 в 16:56.
Старый 27.07.2017, 17:08   #3  
ziva is offline
ziva
Иван Захаров
Злыдни
Лучший по профессии AXAWARD 2013
 
65 / 106 (4) +++++
Регистрация: 25.03.2005
Иногда подыхает само ядро АОСа.
Мы делали такие проверки перед коммитом транзакций на "живость" АОСа:
X++:
...
if (SysLabel::labelId2String(strLRTrim(' @SYS36159'), 'ru') != 'Нет' || //  sys
        SysLabel::labelId2String(strLRTrim(' @SYS36159'), 'en-us') != 'No' ||
        SysLabel::labelId2String(strLRTrim(' @fav1904'), 'ru') != 'Прием' || //  fav
        SysLabel::labelId2String(strLRTrim(' @fav1904'), 'en-us') != 'Receipt' ||
        SysLabel::labelId2String(strLRTrim(' @GEE10142'), 'ru') != 'Фактура' || //  gee
        SysLabel::labelId2String(strLRTrim(' @GEE10142'), 'en-us') != 'Facture' ||
        SysLabel::labelId2String(strLRTrim(' @CFS1129'), 'ru') != 'Считано' //  cfs
        )
    {
        batchServerStatus   = ( strFMT("@SYS35667") == "@SYS35667" ) ? mBatchServerStatus::Error : mBatchServerStatus::CriticalError;

        mBatchServerStateLog::writeErrorState(batchServerStatus);
        mBatchServerMonitor::sendMail(strfmt("%1: %2", Session::getAOSInstanceName(),batchServerStatus));  
    }
...
Возможно у вас то же самое - когда значение перечисления не может быть преобразовано функцией queryValue() корректно.
У нас вообще - значения енума NoYes не распознавались )))
Старый 27.07.2017, 17:13   #4  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Спасибо за отклик.
В нашем случае queryValue() корректно отрабатывала.
А вот переменная с типов QueryBuildRange объявленная на форме в classDeclaration портилась.
classIdGet() для нее выдавал что это QueryBuildRange
а .handle() выдавал что это treenode
Если же дергать для методы AOTToString() toString() то ссылка идет на какие то узлы из ветки
\Queries\\Methods
В общем, жесть.
Ну и соответственно при попытке обратиться к ее методам ядро ругалось что не существует метода Value()
Старый 27.07.2017, 18:33   #5  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от ziva Посмотреть сообщение
Иногда подыхает само ядро АОСа.
Мы делали такие проверки перед коммитом транзакций на "живость" АОСа:
X++:
...
if (SysLabel::labelId2String(strLRTrim(' @SYS36159'), 'ru') != 'Нет' || //  sys
        SysLabel::labelId2String(strLRTrim(' @SYS36159'), 'en-us') != 'No' ||
        SysLabel::labelId2String(strLRTrim(' @fav1904'), 'ru') != 'Прием' || //  fav
        SysLabel::labelId2String(strLRTrim(' @fav1904'), 'en-us') != 'Receipt' ||
        SysLabel::labelId2String(strLRTrim(' @GEE10142'), 'ru') != 'Фактура' || //  gee
        SysLabel::labelId2String(strLRTrim(' @GEE10142'), 'en-us') != 'Facture' ||
...
С этим мы тоже намучались
Лечили так
Проблема с метками
Теги
ax2009, clearrange, windows 2012

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11
DAX: How to gain additional value from the Microsoft application platform with Microsoft Dynamics AX 2012 R2 Blog bot DAX Blogs 3 21.06.2013 15:16
Axilicious:Running AX2012 R2 locally on Windows 2012 Server booted directly from VHD Blog bot DAX Blogs 0 16.04.2013 08:13
amer-ax: It was a great day! Blog bot DAX Blogs 3 29.12.2012 01:02
mfp: Dynamics AX 2012 R2 achieves "Compatible with Windows 8" certification. Blog bot DAX Blogs 0 07.11.2012 03:24
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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