Цитата:
Сообщение от
Damn
В этом методе входной параметр - RecId из таблицы LedgerTrans. Вызывается reverseSettlement в одном месте - LedgerVoucher.post(), в качестве входного параметра передаётся переменная sourceRecid, которая заполняется значением RecId из записи ledgerTrans, являющейся на тот момент временной записью. RecId во временных таблицах совсем не такие как в постоянных.
Вследствие чего в таблице LedgerTransSettlement появляются записи со значениями типа 3, 4, 5, 6 и т.д. в поле TransRecId (таких записей не большинство, но они есть). И изредка во время разноски возникают ошибки о невозможности вставки записи в эту таблицу, так как TransRecId должно быть уникально.
Не могу понять какую всё-таки цель пытались добиться разработчики и что изменить чтобы ошибка не возникала.
мы тоже наткнулись на эту проблему. во время
сторнирования!
дело тут не во временных таблицах. вместо них используется RecordList. покопавшись в коде, нашел место LedgerVoucher.postGroup, строка 44
X++:
if (localDetailSummary == DetailSummary::Detail )
{
recId++;
ledgerTrans.RecId = recId;
}
тот самый счетчик, который заменяет реальные recId и далее попадает в LedgerTransSettlement
хотел добавить условие (как в 73 строке этого самого LedgerVoucher.postGroup)
X++:
if (localDetailSummary == DetailSummary::Detail && !reversal)
{
recId++;
ledgerTrans.RecId = recId;
}
но пока не хватает уверенности.
кто-то еще сталкивался с проблемой описанной в перовом посте? как решали?