Показать сообщение отдельно
Старый 22.10.2014, 14:59   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Thumbs down AX 2012: пересчет себестоимости запасов во вторичной валюте не работает в CIL?
AX 2012 R2 CU7. Класс InventCostClosingRecalcSecCur_RU, вопреки ожиданиям, не является наследником класса InventCostClosingRecalc - он является наследником класса InventCostClosing.

При этом в InventCostClosingRecalc::newInventClosing() создается экземпляр InventCostClosingRecalc, в качестве которого InventCostClosingRecalc::construct() может возвращать в т.ч. экземпляр InventCostClosingRecalcSecCur_RU. Интерпретатор байт-кода Х++ смотрит на такие вещи сквозь пальцы, однако, при выполнении этого кода в CIL может получиться вот что:
Код:
System.InvalidCastException:
Unable to cast object of type 'Dynamics.Ax.Application.InventCostClosingRecalcSecCur_RU' to type 'Dynamics.Ax.Application.InventCostClosingRecalc'.
at Dynamics.Ax.Application.InventCostClosingRecalc.newInventClosing(InventClosing _inventClosing) in InventCostClosingRecalc.newInventClosing.xpp:line 4
Внимание, вопрос: неужели в 12-ке этот код ни разу не тестировали в пакете? Или запуск пересчета во вторичной валюте в пакете - еще один сценарий использования, который не закладывался при реализации функционала?..
За это сообщение автора поблагодарили: Logger (5), Товарищ ♂uatr (1).