Возник вопрос у меня (может я чего не понимаю)
есть Класс 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)
.........
собственно интересует зачем происходит такая вот работа с inventDim:
X++:
inventTrans.inventDimId = InventDim::findOrCreate(inventDim).inventDimId;
inventTrans.inventDimFixed = inventDimFixed;
inventDim.inventDimId = inventTrans.inventDimId;
конкретно непонятно: зачем делать InventDim::findOrCreate, если и так известно что в inventDim находится реально существующая аналитика???? А потом еще и переприсвоение inventDimId - или я туплю или двое из ларца