12.09.2008, 11:51 | #1 |
Участник
|
Подмена аналитик при разноске отборочной накладной
Dynamics Ax 4.0 kernel 4.0.2501.116 Application version 4.0.2200.0
Уважаемые коллеги! Происходит странная вещь - при разноске отборочной накладной иногда (не всегда!) InventDimId из строки отборочной накладной подменяется неким другим, взятым из строки с тем же ItemId из другой отборочной накладной, привязанной к данному производственному заказу. То есть мы имеем в строке prodJournalBOM InvenDimId_1, а в соответствующей ей строке InventTrans - совершенно другой InventDimId_2. Это приводит к путанице серийных номеров и другим неприятным последствиям. В чем может быть причина? Разноска накладной осуществляется стандартными средствами Аксапты, отборочная накладная генерится тоже стандартными средствами аксапты в автоматическом режиме. X++: InventDim serialNumber, inventDim, inventDimNew; InventTrans inventTrans; ProdJournalProd prepack, journalBOM; ProdJournalBom content, newPickingListLines; ProdJournalTable prodJournalTable, pickingList; ProdJournalCheckPost journalCheckPost, pickingListPost; JournalTableData journalTableData; ProdJournalCreateBOM prodJournalCreateBOM; ; journalTableData = JournalTableData::newTable(prodJournalTable); journalTableData.initFromJournalName(ProdJournalName::find(ProdJournalName::standardJournalName(ProdJournalType::ReportFinished))); ttsbegin; prodJournalTable.JournalId = journalTableData.nextJournalId(); prodJournalTable.Description = journalTableData.journalTable().Description; prodJournalTable.JournalNameId = journalTableData.journalTable().JournalNameId; prodJournalTable.ProdId = prepack.ProdId; prodJournalTable.Posted = NoYes::No; prodJournalTable.PostedDate = SystemDateGet(); prodJournalTable.PostedUserId = ''; prodJournalTable.NumOfLines = 1; prodJournalTable.ProdAutoPickList = NoYes::No; prodJournalTable.JournalNameIdPickList = ProdJournalName::find(ProdJournalName::standardJournalName(ProdJournalType::Picklist)).JournalNameId; prodJournalTable.insert(); journalBOM.initFromProdJournalTable(prodJournalTable); journalBOM.TransDate = SystemDateGet(); journalBOM.InventDimId = inventTrans.InventDimId; journalBOM.QtyGood = -1; journalBOM.ProdFinished = NoYes::No; journalBOM.ProdPickListJournalId = ''; journalBOM.insert(); prodJournalCreateBOM = ProdJournalCreateBOM::newProdJournalProd(journalBOM); prodJournalCreateBOM.run(); pickingList = ProdJournalTable::find(prodJournalCreateBOM.usedProdJournalTable().JournalId); if (pickingList) { journalBOM.ProdPickList = NoYes::Yes; journalBOM.ProdPickListJournalId = pickingList.JournalId; journalId = pickingList.JournalId; journalBOM.doupdate(); } else throw error("@SYS71699"); while select content where content.JournalId == prepack.ProdPickListJournalId join inventDim where content.InventDimId == inventDim.inventDimId && inventDim.inventSerialId { select forupdate newPickingListLines where newPickingListLines.JournalId == pickingList.JournalId && newPickingListLines.ItemId == content.ItemId join inventDimNew where newPickingListLines.InventDimId == inventDimNew.inventDimId && ! inventDimNew.inventSerialId; if (newPickingListLines) { newPickingListLines.InventDimId = content.InventDimId; newPickingListLines.update(); } } ttscommit; |
|