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, то проблема решается.
Во первых, похоже что авторы кода забыли что маркировка используется не только для себестоимости, но и для резервирования в заказанных и манипуляций со сводным планом. (Собственно мы и налетели на эту проблему, после того как я консам посоветовал менять маркировку чтобы повлиять на покрытие в сводном плане).
Во вторых - даже для рассчета себестоимости по модели стандартной себестоимости, маркировка безвредна. В момент вычисления мгновенной себестоимости списания, маркировка игнорируется; Закрытие и пересчет аналогично игнорируют номенклатуру со стандартной себестоимости.
Ну и вообще - уже очень и очень давно напрашивается разделение маркировки для себестоимости и маркировки для сводного/планирования.