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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.11.2020, 10:29   #7  
Dreadlock is offline
Dreadlock
Участник
Аватар для Dreadlock
 
298 / 224 (8) ++++++
Регистрация: 07.05.2009
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
В 2012-й аксапте обнаружился неприятный баг.
Если клиент запущен с параметром -noauto или при старте клиента произошла ошибка в new() методе какого-либо системного класса (т.е. он не создался) например (Application, Info, ClassFactory)
то дальше происходит очень неприятная вещь.

Если в коде идет проверка на существование системного класса, например
X++:
if (classFactory)
{
   ...
}
то для клиентского исполнения все ок.
А для серверного происходит ошибка времени выполнения, как будто мы не просто проверяем глобальный экземпляр на существование, но и сразу вызываем на нем метод. Причем try catch это хоть и ловит но выскакивает Message Box, который невозможно подавить параметром командной строки -INTERNAL=NOMODALBOXES

Как следствие в случае проблем с приложением нельзя спокойно запустить клиент с параметром -NOAUTO и сделать глобальную компиляцию. (При компиляции Query идут вызовы методов
\Classes\SysQueryRangeUtil\currentWorker
\Classes\SysQueryRangeUtil\currentRoleHasAccessToPrivate
и.т.п. которые порождают проверку на classFatory и компиляция выдает ошибку с messagebox-ом и компиляция останаливается.
Стек вызовов такой
(S)\Classes\Global\currentWorker - line 15
(S)\Data Dictionary\Tables\DirPersonUser\Methods\currentWorker - line 9
(S)\Classes\SysQueryRangeUtil\currentWorker - line 9
(S)<runtime compiled code>\anytype wrapper(){ return SysQueryRangeUtil::currentWorker(); }
)

Кто-нибудь встречался с подобным поведением ?
Как можно в серверном коде безопасно проверить classFactory на существование ?
X++:
if (classFactory)
приводит к ошибке времени выполнения.
Году так в 2011 я в 2009 Ах решал проблему определения запуска SRS отчета из клиента или с портала и наткнулся на Global::clientKind() метод. Можете попробовать его до вызова строки
X++:
if (classFactory)
Точнее не сам метод использовать а тип ClientType
Теги
classfactory, noauto, startup command, startuppost

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
АХ 2012 пускает пользователя, когда он исключен из AD igortsk DAX: Администрирование 17 08.05.2015 09:41
Открытие формы, при запуске АХ Ilyaae DAX: Прочие вопросы 1 05.07.2014 00:13
Рабочая область в АХ sukhanchik DAX: Функционал 6 15.10.2009 13:10
Баг формы в АХ связанный с колесом прокрутки мышью Alexius DAX: Прочие вопросы 6 07.10.2009 15:31
Импорт в АХ через ODBC AXbeginer DAX: Программирование 14 02.10.2009 08:12

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

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

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