По-моему в алгоритме расчета резервного запаса есть серьезная бага. И если я прав, то вообще не понятно как им можно пользоваться.
Для расчёта статистики, на основании которой затем считается уровень минимального запаса, формируется запрос типа:
X++:
SELECT WITH SELECT_ORDER, NESTED_LOOP, FORCE_PLACEHOLDERS INDEXISHINT SUM(Qty), MAX(DatePhysical)
FROM InventTrans GROUP BY InventTrans.ItemId ASC USING INDEX ItemIdx
WHERE ((DatePhysical>=01.01.2012 AND DatePhysical<=30.06.2012)) AND ((StatusReceipt = 0)) AND ((StatusIssue>= AND StatusIssue<=)) AND
((InvoiceReturned = )) AND ((PackingSlipReturned = ))
JOIN INDEXISHINT * FROM InventDim GROUP BY InventDim.configId ASC, InventDim.InventSizeId ASC, InventDim.InventColorId ASC USING INDEX DimIdIdx
WHERE InventTrans.inventDimId = InventDim.inventDimId
Т.е. система выбирает все списания за указанный период в разрезе номенклатуры и аналитик, входящих в план покрытия.
Как по мне мы должны исключать из этого запроса переносы, которые не меняют аналитику из плана покрытия. Но этого не происходит.
Т.е. если у вас склад в план покрытия не входит, а вы перемещаете номенклатуру со склада производства на склад продаж, то статистика потребностей будет завышена в два раза.
См. метод newQueryInventTransIssue класса ReqItemJournalCreate
З.Ы.: наткнулся я на это в 3-ке. Судя по коду в DAX2009 тоже самое. Позже проверю еще и DAX2012.