AX 2009 SP1 EE RU5 (в RU6 код не изменился), метод \Classes\LedgerVoucher\postGroup:
X++:
// <GEEU>
if (ledgerVoucherList.item().ledgerBondServer_RU())
{
if (localDetailSummary == DetailSummary::Detail)
{
recId++;
ledgerTrans.RecId = recId;
}
// ...
}
else
{
// </GEEU>
if (localDetailSummary == DetailSummary::Summary || customLevelOfDetail)
{
// ...
}
else
{
if (!reversal)
{
recId++;
ledgerTrans.RecId = recId;
}
ledgerTransList.ins(ledgerTrans);
}
}
Тут при
выключенной корреспонденции, уровне детализации DetailSummary::Detail и reversal == true
не заполняется RecId проводки (который при данных условиях пустой), в результате чего проводка не попадает в RecordSortedList ledgerTransList, и рассопоставление отваливается с ошибкой, что суммы ни фига не балансируют (еще бы!). Занятно, что для включенной корреспонденции локализаторы этот косяк исправили и при DetailSummary::Detail заполняют RecId независимо от того, идет ли сопоставление или рассопоставление.