Там все немного запущено, изначально стандарт не предназначен для такой задачи (по крайней мере по книге продаж, но думаю аналогичная проблема и с покупками), на одном из проектов обращались в MS по данной проблеме, я не знаю чем дело закончилось.
Для начала нужно исправить вот тут BookDataCalc_RU\unpack :
X++:
public boolean unpack(container packedClass)
{
//boolean ret;
boolean ret = true; //SN
Integer version = conPeek(packedClass,1);
SalesPurchBookRecId_RU bookRecIdNew;
switch (version)
{
case #CurrentVersion:
bookRecIdNew = this.parmBookRecId();
[version, #CurrentList] = packedClass;
if (bookRecIdNew)
{
this.parmBookRecId(bookRecIdNew);
closeBook = NoYes::No;
}
this.initBookTable();
break;
default:
ret = false;
}
return ret;
}
А дальше будет примерно так:
X++:
System.InvalidCastException: Unable to cast object of type 'Dynamics.Ax.Application.SalesBookTable_RU' to type 'Dynamics.Ax.Application.SalesPurchBookTable_RU'.
at Dynamics.Ax.Application.SalesPurchBookTable_RU.Gettodate() in SalesPurchBookTable_RU.getToDate.xpp:line 24
at Dynamics.Ax.Application.SalesBookTable_RU.Gettodate() in SalesBookTable_RU.getToDate.xpp:line 9
at Dynamics.Ax.Application.BookAmountsEngine_RU.Initqueryrun() in BookAmountsEngine_RU.initQueryRun.xpp:line 12
at Dynamics.Ax.Application.BookAmountsEngine_RU.Fetchtaxmap() in BookAmountsEngine_RU.fetchTaxMap.xpp:line 63
at Dynamics.Ax.Application.BookDataCalc_Sales_RU.End() in BookDataCalc_Sales_RU.end.xpp:line 41
at Dynamics.Ax.Application.BookDataCalc_RU.Run() in BookDataCalc_RU.run.xpp:line 34
at Dynamics.Ax.Application.BookDataCalc_Sales_Export_RU.Run() in BookDataCalc_Sales_Export_RU.run.xpp:line 7
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)
На этом передали задачу MS, думаю там нужно просто постепенно убрать все такие трассировки и должно быть нормально, не думаю, что таких узких мест будет много.