Показать сообщение отдельно
Старый 01.02.2011, 12:31   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Angry AX2009: не работает рассопоставление проводок при ВЫключенной корреспонденции и DetailSummary::Detail
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 независимо от того, идет ли сопоставление или рассопоставление.
За это сообщение автора поблагодарили: Logger (3).