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-ке этот код ни разу не тестировали в пакете? Или запуск пересчета во вторичной валюте в пакете - еще один сценарий использования, который не закладывался при реализации функционала?..