11.07.2007, 12:01 | #1 |
Участник
|
Закрытие склада - ошибка "Значение 1 не найдено в map"
День добрый,
Процесс закрытия склада в это месяце стал обрываться в середине работы. Выдает исключение вида "Значение 1 не найдено в map". Закрытие стандартное, ничего не меняли. Понятно, что надо трассировать и лазать по стеку, но, может быть, кто нибудь уже сталкивался с подобной ситуацией и подскажет что делать? AX 3.0 CIS SP4 СУБД MS SQL Артем |
|
11.07.2007, 12:16 | #2 |
NavAx
|
В складских проводках есть ссылка на несуществующий лот.
X++: // поиск складских проводок с кривыми ссылками на другие складские проводки static void Edd_CheckInventTransId(Args _args) { InventTrans InventTrans; InventTrans InventTrans2; ; InventTrans.selectLocked(true); InventTrans2.selectLocked(true); while select InventTrans where InventTrans.ValueOpen == InventTransOpen::Yes && InventTrans.InventTransIdReturn != "" notexists join InventTrans2 where InventTrans2.InventTransId == InventTrans.InventTransIdReturn { info(strfmt("InventTransIdReturn %1", InventTrans.RecId)); } while select InventTrans where InventTrans.ValueOpen == InventTransOpen::Yes && InventTrans.InventTransIdFather != "" notexists join InventTrans2 where InventTrans2.InventTransId == InventTrans.InventTransIdFather { info(strfmt("InventTransIdFather %1", InventTrans.RecId)); } while select InventTrans where InventTrans.ValueOpen == InventTransOpen::Yes && InventTrans.TransChildRefId != "" notexists join InventTrans2 where InventTrans2.InventTransId == InventTrans.TransChildRefId { info(strfmt("TransChildRefId %1", InventTrans.RecId)); } while select InventTrans where InventTrans.ValueOpen == InventTransOpen::Yes && InventTrans.InventRefTransId != "" && InventTrans.StatusIssue <= StatusIssue::Deducted && InventTrans.StatusReceipt <= StatusReceipt::Received notexists join InventTrans2 where InventTrans2.InventTransId == InventTrans.InventRefTransId { info(strfmt("InventRefTransId %1", InventTrans.RecId)); } } |
|
06.02.2009, 18:37 | #3 |
Участник
|
Возникла такая же ошибка...
Но только во время когда нажимается помощь в расчете... при этом axapta где нажимается помощь продолжает процедуру закрытия склада, а в другой axapta появляется сообщение об этой ошибке... Что можно сделать (поиск выдал, что есть одна InventTransIdReturn с несуществующим лотом)?.. :-( |
|
06.02.2009, 23:28 | #4 |
NavAx
|
Накатите Inventory Closing Rollup 2 ( Обновление процедуры закрытия склада в АХ 3.0 ).
Или в InventCostItemDim.run() X++: mapLoopTrans = new map(types::INTEGER,types::RECORD); mapLoopDim = new map(types::INTEGER,types::RECORD); // edd Значение 1 не найдено в map --> loopX = 0; // edd Значение 1 не найдено в map <-- queryRun = inventCostHelp.initQueryRunTrans(this.inventTable(inventCostList.ItemId)); while (queryRun.next()) Последний раз редактировалось raz; 06.02.2009 в 23:35. |
|
|
За это сообщение автора поблагодарили: Михаил Петрович (1), Sergey Petrov (1). |
07.02.2009, 03:57 | #5 |
Участник
|
Только одно маленькое уточнение... Сейчас у нас так:
X++: mapLoopTrans = new map(types::INTEGER,types::RECORD); mapLoopDim = new map(types::INTEGER,types::RECORD); queryRun = inventCostHelp.initQueryRunTrans(this.inventTable(inventCostList.ItemId)); while (queryRun.next()) { loopX++; mapLoopTrans.insert(loopX,queryRun.get(tableNum(InventTrans))); mapLoopDim.insert(loopX,queryRun.get(tableNum(InventDim))); } loopMax = loopX; loopX = 0; while (loopX < loopMax) { loopX++; this.updateItemDim(mapLoopTrans.lookup(loopX),mapLoopDim.lookup(loopX)); } |
|
07.02.2009, 13:27 | #6 |
NavAx
|
X++: mapLoopTrans = new map(types::INTEGER,types::RECORD); mapLoopDim = new map(types::INTEGER,types::RECORD); // edd Значение 1 не найдено в map --> loopX = 0; // edd Значение 1 не найдено в map <-- queryRun = inventCostHelp.initQueryRunTrans(this.inventTable(inventCostList.ItemId)); while (queryRun.next()) { loopX++; mapLoopTrans.insert(loopX,queryRun.get(tableNum(InventTrans))); mapLoopDim.insert(loopX,queryRun.get(tableNum(InventDim))); } loopMax = loopX; loopX = 0; while (loopX < loopMax) { loopX++; this.updateItemDim(mapLoopTrans.lookup(loopX),mapLoopDim.lookup(loopX)); } |
|