Показать сообщение отдельно
Старый 03.04.2015, 14:45   #174  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,890 / 5647 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
DAX2012 (проверялось для DAX2012R3CU8, но было и раньше). Из непонятных соображений, разработчики запретили маркировку складских проводок по номенклатуре со стандартной себестоимостью. (Новым вариантом стандартной, а не fixed receipt price). В методе tmpInventTransMark:: packTmpMark(), который собственно и строит временную таблицу кандидатов на маркировку, есть следующий замечательный код:
X++:
         includeAll = inventTable.modelGroup().inventModelType().isSettled();

        InventDimGroupSetup::newInventTable(inventTable).inventDimParmActiveFinancialInventory(inventDimParmFinancial);

        while select forceplaceholders inventTrans
            where inventTrans.ValueOpen                     == InventTransOpen::Yes
               && inventTrans.TransChildType                == InventTransChildType::None
               && inventTrans.PackingSlipReturned           == NoYes::No
               && (inventTrans.MarkingRefInventTransOrigin  || includeAll)
               && (!inventTrans.MarkingRefInventTransOrigin
                 || inventTrans.MarkingRefInventTransOrigin == _inventTransOrigin.RecId     // marked with reference
                 || inventTrans.InventTransOrigin           == _inventTransOrigin.RecId)    // is reference itself
            join inventTransOrigin
            where inventTransOrigin.ItemId                  == _inventTransOrigin.ItemId
               && inventTransOrigin.RecId                   == inventTrans.InventTransOrigin
            #inventDimExistsJoin(inventTrans.inventDimId, inventDim, _inventDimCriteria, inventDimParmFinancial)
Если номенклатура использует стандартную себестоимость, то includeAll==false. В этом случае показываются только записи уже примаркированные к текущей складской проводке. Таким образом, можно снять уже существующую маркировку (получившуюся, например, в результате утверждения спланированных заказов), но невозможно примаркировать чего-нибудь к отмаркированной складской проводке. Если первую строчку закомментировать, и поставить вместо нее includeAll=true, то проблема решается.

Во первых, похоже что авторы кода забыли что маркировка используется не только для себестоимости, но и для резервирования в заказанных и манипуляций со сводным планом. (Собственно мы и налетели на эту проблему, после того как я консам посоветовал менять маркировку чтобы повлиять на покрытие в сводном плане).
Во вторых - даже для рассчета себестоимости по модели стандартной себестоимости, маркировка безвредна. В момент вычисления мгновенной себестоимости списания, маркировка игнорируется; Закрытие и пересчет аналогично игнорируют номенклатуру со стандартной себестоимости.

Ну и вообще - уже очень и очень давно напрашивается разделение маркировки для себестоимости и маркировки для сводного/планирования.