![]() |
#2 |
Moderator
|
В стандарте такой механизм есть, но он работает он, гм, выборочно. Можешь посмотреть на метод inventUpdate.updateDimReserveChange() и на следующий кусок кода из inventUpdate.writeInventTrans().
X++: if (_inventTrans.orig() && _inventTrans.InventDimId != _inventTrans.orig().InventDimId)// Do not use inventTrans_orig as it may not match content in database { fromInventDim = InventDim::find(_inventTrans.orig().InventDimId); if (InventDimFixedClass::inventDimFieldsDifferent(fromInventDim,toInventDim) & InventDimFixedClass::initPrimaryDim(movement.dimGroupId()) != 0 && InventDim::mustCheckDimChange(movement.dimGroupId(),fromInventDim,toInventDim)) { if (_inventTrans.orig().isUpdatedEstimated()) { inventOnhand = InventOnhand::newPhysicalUpdate(movement,fromInventDim); if(!this.allowChangeDim(inventOnhand, _inventTrans, fromInventDim)) throw error(strfmt("@SYS54456")); } else if (!_inventTrans.orig().isUpdatedQuotation()) { inventOnhand = InventOnhand::newPhysicalUpdate(movement,fromInventDim); if (! inventOnhand.checkItemDraw(-_inventTrans.Qty,allowNegativePhysical)) throw error(strfmt("@SYS54456")); } if (_physicalUpdate) this.updateDimReservePhysical(toInventDim,_inventTrans.Qty,_inventTrans.InventRefTransId); reserveAgainDimId = fromInventDim.InventDimId; } else { qtyRemain = this.updateDimReserveChange(toInventDim,fromInventDim,_inventTrans.Qty,_physicalUpdate,_inventTrans.InventRefTransId); if (_physicalUpdate) this.updateDimReservePhysical(toInventDim,qtyRemain,_inventTrans.InventRefTransId); } Кстати мне кажется, что в более ранних версиях (по крайней мере в версии 3.0, в которой я этот механизм обнаружил), система вообще меняла автоматически любую аналитику, не помеченную как первичная аналитика хранения. Кроме того - обрати внимание на поле inventTrans.inventDimFixed. Это та аналитика, которая по задумке авторов не может менятся в проводке автоматически. Она инициализируется из первичной аналитики хранения, но также может быть указана руками при резервировании. Опять таки - это про оригинальную версию 3.0. Похоже что в 2009ой версии, флажки в этой аналитике не проверяют, если она не нулевая, то вообще аналитику запрещают менять автоматически. |
|
|
За это сообщение автора поблагодарили: Hard (1). |