|
![]() |
#1 |
Участник
|
Ошибка проявляется в именно так, как описал 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). |
![]() |
#2 |
Участник
|
Еще один недостаток этого метода. Бывает, что в компании, в которой производится продажа конечному клиенту, требуются данные не только номера партии, а и то, что есть в таблице партий (например, дата производства, если существует контроль и предоставление клиенту информации о сроках годности), тоже может требоваться по серийным номерам и, естественно, нужна страна по ГТД. Однако, в методе создаются записи только с номером:
X++: if (!InventBatch::exist(toInventTrans.ItemId,inventDimUpd.InventBatchId))
{
inventBatch.clear();
inventBatch.ItemId = toInventTrans.ItemId;
inventBatch.InventBatchId = inventDimUpd.InventBatchId;
inventBatch.insert();
} X++: while (fromInventTrans) { // ААК: МФД40_08_01_0003 19.03.2009 [Планирование сделок] --> inventBatchFrom = null; if (fromInventDim.inventBatchId) { inventBatchFrom = InventBatch::find(fromInventDim.inventBatchId, itemIdFrom); } ... X++: if (!InventBatch::exist(toInventTrans.ItemId,inventDimUpd.InventBatchId)) { inventBatch.clear(); inventBatch.ItemId = toInventTrans.ItemId; inventBatch.InventBatchId = inventDimUpd.InventBatchId; // ААК: МФД40_08_01_0003 19.03.2009 [Планирование сделок] --> inventBatch.initFromInventBatch_OVK(inventBatchFrom); // ААК: МФД40_08_01_0003 19.03.2009 [Планирование сделок] <-- inventBatch.insert(); } |
|
Теги |
ax4.0, intercompany, ошибка, интеркомпани |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|