Показать сообщение отдельно
Старый 10.11.2020, 14:17   #1  
Sergey Petrov is offline
Sergey Petrov
Участник
 
80 / 19 (1) ++
Регистрация: 03.04.2007
Адрес: Saint-Petersburg, Russia
Закрытие склада во вторичной валюте
Коллеги, обнаружил что в методе класса \Classes\InventCostItemDim\updateMarking используется отбор проводок определённого типа:
X++:
    // load
    while select forupdate inventTrans
        index hint OpenItemIdx
        where inventTrans.ValueOpen         == InventTransOpen::Yes     &&
              inventTrans.ItemId            == _itemId                  &&
              inventTrans.InventRefTransId  != ''
        join inventDim
        where inventDim.InventDimId == inventTrans.InventDimId
    {
...
В классе InventCostItemDimSecCur_RU этот метод не перекрыт.
Таким образом, при закрытии склада во вторичной валюте после закрытия в основной, мы не можем отобрать нужные проводки (потому что фильтрация по inventTrans.ValueOpen == InventTransOpen::Yes) и вообще не получаем сопоставлений, аналогичных тем, что были в основной валюте.

То же самое видим в методе класса \Classes\InventCostItemDim\updateServiceItemTrans:
X++:
    while select forupdate inventTrans
        index hint OpenItemIdx
        where inventTrans.ValueOpen         == InventTransOpen::Yes         &&
              inventTrans.ItemId            == _itemId                      &&
             (inventTrans.StatusIssue       == StatusIssue::Sold            ||
              inventTrans.StatusReceipt     == StatusReceipt::Purchased)    &&
              inventTrans.DateStatus        <= inventClosing.TransDate      &&
              inventTrans.InventRefTransId  == '' //marked service item transactions will be settled according to marking principle

    {
...
Но перекрытого метода в потомке-классе InventCostItemDimSecCur_RU нет. Соответственно, результат тот же - мы не получаем сопоставлений во вторичной валюте, аналогичных сопоставлениям в основной валюте.

Заметили только что, потому что наша бизнес-логика активно использует эти сопоставления (коррекции себестоимости) в основной и во вторичной валюте.

Думаю исправить сие вручную. Но, может, кому известны какие-нибудь подводные камни?
__________________
MS Dynamics AX 2009

Kernel 5.0.1600.4110
Application 5.0.1500.6491