Показать сообщение отдельно
Старый 13.02.2008, 19:23   #16  
petr is offline
petr
Участник
Соотечественники
 
557 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Касательно разделения проводок при закрытии склада:

В 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 не будет заполнено), соответственно нет разбиения и т.д.

Эту ситуацию на форуме уже обсуждали.

Т.е.