|
![]() |
#1 |
Участник
|
Цитата:
Это из метода, который вызывается при пересчете себестоимости и закрытии склада. X++: // clear unused references if (inventClosing.AdjustmentType == inventAdjustmentType::Closing && (mapQtyIssue || mapQtyReceipt)) { while select forupdate inventTrans index hint openItemIdx where inventTrans.ValueOpen == inventTransOpen::Yes && inventTrans.ItemId == _itemId && inventTrans.InventRefTransId != '' { if (! setPhysicalMarked.in(inventTrans.inventTransId) && this.financialOpenQty(inventTrans)) { if ((inventTrans.Qty > 0 && (! mapQtyIssue || ! mapQtyIssue.exists(inventTrans.InventTransId) || abs(mapQtyIssue.lookup(inventTrans.InventTransId)) < inventAdj::settleQtyDiff())) || (inventTrans.Qty < 0 && (! mapQtyReceipt || ! mapQtyReceipt.exists(inventTrans.InventTransId) || abs(mapQtyReceipt.lookup(inventTrans.InventTransId)) < inventAdj::settleQtyDiff()))) { if (inventTrans.QtySettled) inventTrans.updateSplit(this.financialOpenQty(inventTrans)); if (!InventCostItemDim::isBlanketOrderReference(inventTrans)) { inventTrans.InventRefTransId = ''; inventTrans.doUpdate(); if (! inventTrans.isUpdatedFinancial()) { movement = inventTrans.inventMovement(true); if (movement && movement.inventRefTransId() != '') { movement.setInventRefFields(inventRefType::None,'',''); movement.updateDoBuffer(); } } } } } } } X++: if (!InventCostItemDim::isBlanketOrderReference(inventTrans)) |
|
![]() |
#2 |
Участник
|
Посмотрел только что всю эту функциональность в 4.0 SP2
При создании заказа из контракта они связываются уже по новому полю - BlanketRefTransId. То есть для контрактов InventRefTransId не заполняется. А соответственно при пересчете уже все нормально отрабатывает. Кстати, класс для создания заказа такого уже по другому называется - SalesAutoCreate_ReleaseOrder (был SalesAutoCreate_tmpSalesLine). Приведенный код для пересчета в 4.0 тоже немного подкорректировали. Кстати, опять же про 3.0. Не проверял, но скорее всего так: Проверка X++: if (!InventCostItemDim::isBlanketOrderReference(inventTrans)) В методе делается поиск строки контракта по номеру лота. И этой строки может уже не существовать. |
|
Теги |
ax3.0, faq, себестоимость |
|
|