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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.09.2014, 13:45   #1  
Pandasama is offline
Pandasama
Участник
 
457 / 134 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
странные CIL ошибки при апгрейде
Делаю апгрейд с Ax2009 на Ax2012R3

В Data Upgrade checklist в пункте Presynchronize (upgrade) на трети тасков посыпались ошибки:
ошибки примерно такие:
X++:
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dynamics.Ax.Application.SysDictClass.invokeObjectMethod(XppObjectBase _object, String _methodName, Boolean _tryBaseClass, Boolean ) in SysDictClass.invokeObjectMethod.xpp:line 18
   at Dynamics.Ax.Application.ReleaseUpdateDB.Run(String methodName, sysReleasedVersion scriptVersion, Boolean force) in ReleaseUpdateDB.run.xpp:line 52
   at Dynamics.Ax.Application.ReleaseUpdateExecute.Run() in ReleaseUpdateExecute.run.xpp:line 37
   at Dynamics.Ax.Application.BatchRun.runJobStaticCode(Int64 batchId) in BatchRun.runJobStaticCode.xpp:line 54
   at Dynamics.Ax.Application.BatchRun.runJobStatic(Int64 batchId) in BatchRun.runJobStatic.xpp:line 13
   at BatchRun::runJobStatic(Object[] )
   at Microsoft.Dynamics.Ax.Xpp.ReflectionCallHelper.MakeStaticCall(Type type, String MethodName, Object[] parameters)
   at BatchIL.taskThreadEntry(Object threadArg)
второй вид ошибки (всего их два разных, первый - на скриптах модуля Ledger, второй - на других скриптах):
X++:
System.NullReferenceException: Object reference not set to an instance of an object.    
at Dynamics.Ax.Application.ReleaseUpdateDB.indexAllowDup(DictIndex _dictIndex) in ReleaseUpdateDB.indexAllowDup.xpp:line 12
для примера, два скрипта, один выполнился, другой нет
allowDupRCashParametersKeyIdx выдал ошибку
allowDupRCashTransAccDocTypeIdx отработал

X++:
public void allowDupRCashParametersKeyIdx()
{
    ReleaseUpdateDB::indexAllowDup(new DictIndex(tableNum(RCashParameters), indexNum(RCashParameters, KeyIdx)));
}
X++:
public void allowDupRCashTransAccDocTypeIdx()
{
    ReleaseUpdateDB::indexAllowDup(new DictIndex(tableNum(RCashTrans),
                                                 indexNum(RCashTrans, AccDocTypeIdx)));
}
таблицы обе существуют, индексы существуют, особых различий в параметрах таблиц не увидел
ошибка на System.NullReferenceException: Object reference not set to an instance of an object. at Dynamics.Ax.Application.ReleaseUpdateDB.indexAllowDup(DictIndex _dictIndex) in ReleaseUpdateDB.indexAllowDup.xpp:line 12

X++:
static void indexAllowDup(DictIndex _dictIndex)
{
    DictTable dictTable = new DictTable(_dictIndex.tableid()); //это 12я строка, она без условия
    ;
здесь, как я понимаю, "Object reference not set to an instance of an object", может относится только к _dictIndex.tableid() - т.е. _dictIndex (параметр метода) не создан
создается он выше указанных методах одинаково new DictIndex(tableNum(<таблица>), indexNum(<таблица>, <индекс>))
почему он мог в одном случае не создаться при вызове new (и при этом не дать ошибки на new) - я не понимаю

если содержимое этих же скриптов запускаю через джоб - отрабатывает все нормально, т.е. при запуске из X++ работает, а при CIL (это, как я понимаю, именно он судя по стеку ошибки) - нет

вопрос
1) в чем может быть проблема, в какую сторону смотреть?
2) можно ли форсированно эти (и следующие, во избежание проблем) апгрейд-джобы запускать толкьо как X++ код, без CIL ?
Старый 26.09.2014, 14:31   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Попробовать перекомпилировать все, перегенерировать IL, посмотреть нет ли ошибок на этих этапах или предупреждений.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AXBR: AX2012 – Common Intermediate Language (CIL) – (Parte I) Blog bot DAX Blogs 0 04.04.2013 09:11
X++ to CIL Blog bot DAX Blogs 0 01.04.2013 14:11
X++: X++ Arrays Behave Differently in .NET CIL, in Dynamics AX 2012 Blog bot DAX Blogs 0 17.09.2012 23:11
emeadaxsupport: In Microsoft Dynamics AX 2012, compiler output setting of Message Window may cause errors when generating (incremental) CIL Blog bot DAX Blogs 0 16.03.2012 23:12
X++: X++ Function num2Str: Difference in .NET CIL Mode Blog bot DAX Blogs 0 09.03.2012 07:45

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

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

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