![]() |
#8 |
Участник
|
Ошибка проявляется в именно так, как описал JeS.
Ой, насчет: Цитата:
Кроется она в классе IntercompanyTransferInventDim метод transfer
Он неправильно отрабатывает в случаях, когда были кредит-ноты по строке, лечилось добавлением в выборки (те, которые зависят от того, какие аналитики включены) условий (то, что выделено комментариями): Код: select forceplaceholders sum(Qty) from fromInventTrans where fromInventTrans.InventTransId == _fromInventTransId && fromInventTrans.StatusIssue <= _statusIssue && fromInventTrans.StatusReceipt == StatusReceipt::None // ААК: МФД40_09_01_0013_001 11.07.2009 [Сторнирование и копирование документов] --> && fromInventTrans.InvoiceReturned == NoYes::No && fromInventTrans.PackingSlipReturned == NoYes::No // ААК: МФД40_09_01_0013_001 11.07.2009 [Сторнирование и копирование документов] <-- join InventLocationId, InventBatchId, InventSerialId, InventGtdId_RU from fromInventDim group by InventLocationId, InventBatchId, InventSerialId, InventGtdId_RU where fromInventDim.InventDimId == fromInventTrans.InventDimId; X++: select forupdate toInventTrans index hint TransIdIdx where toInventTrans.InventTransId == _toInventTransId && toInventTrans.StatusReceipt == StatusReceipt::Ordered && toInventTrans.StatusIssue == StatusIssue::None && toInventTrans.InterCompanyInventDimTransferred == false; Для воспроизведения этой ошибки нужно чтобы проводки по лоту были расщеплены как со стороны заказа на продажу, так и со стороны заказа на покупку. Причем, иногда везет и комплектуются те записи, по которым установили флаг, но везение не всегда случается. Эту проблему решили, но грубо (стояли отгрузки, поэтому было не до изящности): вместо X++: inventTransUpd.InterCompanyInventDimTransferred = true; X++: //lex 24.04.2009 при регистрации могла выбраться еще необработанная проводка и на пересечении...--> if (!_registerReceipt) { inventTransUpd.InterCompanyInventDimTransferred = true; } //lex 24.04.2009 при регистрации могла выбраться еще необработанная проводка и на пересечении...<-- X++: //lex 24.04.2009 при регистрации могла выбраться еще необработанная проводка и на пересечении...--> update_recordset refInventTrans setting InterCompanyInventDimTransferred = true where refInventTrans.InventTransId == inventTransUpd.InventTransId && refInventTrans.StatusReceipt == StatusReceipt::Registered && !refInventTrans.InterCompanyInventDimTransferred; //lex 24.04.2009 при регистрации могла выбраться еще необработанная проводка и на пересечении...<-- |
|
|
За это сообщение автора поблагодарили: JeS (1). |