|
![]() |
#1 |
Участник
|
|
|
![]() |
#2 |
Участник
|
Хм...
В общем, оказалось как всегда. Пока писал текст под чертой, параллельно проблему и решил.
Суть в том, что у нас был пересчет склада, в InventTrans записалась себестоимость. Уж что, да как , да почему копейка в ней возникает - расследовать поздно. Но оперативное решение - поправить InventTrans.CostAmountAdjustment у промаркированных проводок в InventTrans на одну копейку. (которые в синем квадрате) Тогда все ошибки уходят. Большое спасибо за участие. Надо было сразу лезть в InventTrans конечно ![]() Снизу, что сначала хотел написать, но уже неактуально. ---------------------------------------------------------------------------------------------------- Вторичная валюта у нас отключена. Проблема частично "решилась", но не до конца. После безумной трассировки, решили выделить проблемные номенклатуры в другой журнал. Включил дебаг (#if.never) отловил номенклатуры, строки с ними вынесли в отдельный журнал переноса. В итоге исходный журнал без проблемных строк разнесся уже без ошибок. А второй журнал с проблемными строками разнесся, но только с ошибкой "Критическая ошибка в функции LedgerBondServer_RU.addBondProrateAmountMSTSecond.". Эту ошибку изучал, есть подозрение, что при корреспонденции "наш" метод InventTran. findBondInventTrans() отрабатывает некорректно (в случае, когда количество по складским проводкам "сопоставляется" по InventTrans.InventRefTransId не один в один, а разбивается. В нашем случае в журнале переноса в строке количество -24 , в InventTrans по InventTransId -16 и -8 (выделено на скрине снизу), а по InventRefTransId 3, 16 и 5. (выделено на скрине сверху). Вот тут то он с ума и сходит. На очередном журнале, при повторении такого разбиения, ошибка "Не балансирует" осталась. И в логе видна эта копейка. Но теперь уже легче ![]() X++: public InventTrans findBondInventTrans(InventTransId _inventTransId = this.InventTransId) { InventTrans bondInventTrans; InventDim bondInventDim; InventDim thisInventDim = this.inventDim(); container dimFields = InventDimSearch::activeFields(this.inventTable().DimGroupId); int len, i; fieldId fieldId; boolean pastFieldId(fieldId _fieldId) { return (_fieldId == fieldnum(InventDim, InventLocationId) || _fieldId == fieldnum(InventDim, wMSLocationId) || _fieldId == fieldnum(InventDim, InventProfileId_RU) || _fieldId == fieldnum(InventDim, InventRespPers) || _fieldId == fieldnum(InventDim, InventSiteId)); } void findInventTrans(StatusReceipt _StatusReceipt, StatusIssue _StatusIssue) { select firstonly bondInventTrans index hint TransIdIdx order by RecId desc where bondInventTrans.InventTransId == _inventTransId && bondInventTrans.TransType == this.TransType && bondInventTrans.StatusReceipt == _StatusReceipt && bondInventTrans.StatusIssue == _StatusIssue join bondInventDim where bondInventDim.inventDimId == bondInventTrans.inventDimId && #InventDimMacros(thisInventDim, bondInventDim); } ; len = conlen(dimFields); for (i = 1; i <= len; i++) { fieldId = conpeek(dimFields, i); if(pastFieldId(fieldId)) { thisInventDim.(fieldId) = null; } } switch (this.Direction) { case InventDirection::Issue: findInventTrans(StatusReceipt::Purchased, StatusIssue::None); break; case InventDirection::Receipt: findInventTrans(StatusReceipt::None, StatusIssue::Sold); break; } return bondInventTrans; } Последний раз редактировалось Romb; 04.03.2013 в 10:08. |
|
![]() |
#3 |
Участник
|
В данном посте ошибку решил несистемно, "как получилось".
Тут правильное решение и объяснение Странная ошибка при разноске |
|
Теги |
ledgerbondserver_ru, не балансируют |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|