31.03.2007, 19:41 | #1 |
Участник
|
inventUpd_reservation использование inventDim
Возник вопрос у меня (может я чего не понимаю)
есть Класс inventUpd_reservation, он делает физ.резервирование товара. В начале строится квери по InventSum в связке с InventDim, далее в цикле по квери идет работа. В фрагменте, табличным переменным присваивается значение из квери и дальше идет с ними работа: X++: protected void updateReserveMore() { .................. while (doNext) { inventSum = queryRun.get(TableNum(InventSum)); inventDim = queryRun.get(TableNum(InventDim)); if (doSelect) select firstOnly firstfast forupdate inventTrans index TransIdIdx where inventTrans.inventTransId == movement.transId() && inventTrans.transChildType == movement.transChildType() && inventTrans.transChildRefId == movement.transChildRefId() && inventTrans.statusReceipt == StatusReceipt::None && inventTrans.statusIssue == StatusIssue::OnOrder; if (! inventTrans) break; if (inventTrans.qty > aDDReserv) addQty = inventTrans.qty; else addQty = aDDReserv; reserveMax = -(inventSum.availReservation(loopReserveType) - tmpReserved); if (addQty <= reserveMax) { addQty = reserveMax; doNext = true; tmpReserved = 0; } else doNext = false; if (addQty < 0) { if (addQty > inventTrans.qty) inventTrans.updateSplit(addQty); inventTrans.inventDimId = InventDim::findOrCreate(inventDim).inventDimId; inventTrans.inventDimFixed = inventDimFixed; inventDim.inventDimId = inventTrans.inventDimId; movement.updateTransDimTransferReceipt(this,inventTrans,inventDim); movement.transIdSum().setInventTransStatus(inventTrans,StatusReceipt::None,(loopReserveType ? StatusIssue::ReservOrdered : StatusIssue::ReservPhysical)); inventTrans.update(); inventTrans.updateSumUp(); aDDReserv -= addQty; if (loopReserveType) ......... X++: inventTrans.inventDimId = InventDim::findOrCreate(inventDim).inventDimId; inventTrans.inventDimFixed = inventDimFixed; inventDim.inventDimId = inventTrans.inventDimId;
__________________
--- SHiSHok |
|
31.03.2007, 20:01 | #2 |
Участник
|
Цитата:
В query по inventdim могли произоти группировки. Не факт, что была группировка по inventdimid (даже наоборот, скорее всего такой группировки нет). Это значит, что поля со значениями есть, а inventdimid отсутствует. Цитата:
В результате, в этом месте мы можем получить новый, еще не существующий InventDimId. |
|
31.03.2007, 21:32 | #3 |
Участник
|
Цитата:
жужужу на этот раз я.
__________________
--- SHiSHok |
|
|
|