Касательно разделения проводок при закрытии склада:
В DAX3.0SP4 (обновленное закрытие склада) разделение (согласно перекрестных ссылок) происходит только в одном месте:
InventAdj_Closing.updateSettleRefTransId()
X++:
// clear unused references
if (mapQtyIssue || mapQtyReceipt)
{
while select forupdate inventTrans
index hint openItemIdx
where inventTrans.ValueOpen == inventTransOpen::Yes &&
inventTrans.ItemId == _inventTable.ItemId &&
inventTrans.InventRefTransId != ''
{
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(inventTrans.financialOpenQty());
inventTrans.InventRefTransId = '';
inventTrans.doUpdate();
if (! inventTrans.isUpdatedFinancial())
{
movement = inventTrans.inventMovement(true);
if (movement && movement.inventRefTransId() != '')
{
movement.setInventRefFields(inventRefType::None,'','');
movement.updateDoBuffer();
}
}
}
}
}
Согласно коду, если для вашей проводки нет проводки на которую она ссылается (а ее действительно нет), то тогда от проводки обрезается несопоставленная часть, что у вас и произошло. Так что все в порядке.
Ну а то, что сопоставленная сумма не равна фин. сумме проводки - такое бывает (я наблюдат при закрытии по средней такое). Ничего особенно страшного в этом нет, это будет только влиять на производительность отчетов и скорость последующих закрытий склада. Но если таких ситуаций немного, то тоже ничего страшного.
И еще. В некоторых СП при создании заказа на основе контракта (Blanket order) складская проводка по этому заказу ссылается на лот строки из контракта, в некоторых нет (т.е. для вашей исходной проводки поле InventRefTransId не будет заполнено), соответственно нет разбиения и т.д.
Эту ситуацию на форуме уже обсуждали.
Т.е.