Всем доброго времени суток!
Сейчас занимаюсь тестированием и исследованием функционала выполнения полной инвентаризации в системе Microsoft Dynamics Ax 2009. И как обычно не обходится без странностей...
Итак, речь пойдет о поле "Инвентаризационный код" и о создании строк в журнал инвентаризации.
Для начала маленький ввод в курс дела.
В Ax 2009 можно создавать инвентаризационные группы, к которым прикреплять номенклатуры. Это удобно когда, инвентаризация проходит поэтапно и в каждую инвентаризацию пересчитываются определенные номенклатуры.
В инвентаризационных группах есть поле "Инвентаризационный код" (пока у меня сложилось впечатление, что название поля не очень соответствует его смысловой нагрузке), в котором можно указать условие попадания в журнал инвентаризации номенклатур, входящих в группу.
Поле "Инвентаризационный код" - это перечисление. Все элементы этого перечисления обсуждать не будем, нас интересует код "Минимум"... Когда увидел этот код, сразу проскочила мысль: "Что это за условие такое? Какой такой минимум?".
Полез смотреть в код создания строк журнала номенклатур (класс InventCountCreate_Base) и там в методе doCounting() нашел то место, где "обыгрывается" этот код инвентаризации.
X++:
case InventCountCode::Minimum :
reqSetupDim = ReqSetupDim::newCovInventDimId(ReqSetup::newItemId(_inventSum.ItemId),_inventDim.reqCovDimId(InventTable::find(_inventSum.ItemId).DimGroupId));
minimumParm.InventLocationIdFlag = NoYes::Yes;
if (InventSumDatePhysicalDim::onHandQty(countDate,_inventSum.ItemId,_inventDim,minimumParm) <= reqSetupDim.minInventOnHand())
return true;
break;
Т.е. если при создании номенклатуры указана конкретная группа инвентаризации (а в ней указан код инвентаризации "Минимум"), и проставлена галка "Активировать код инвентаризации", то в инвентаризацию будут добавляться строки у которых остаток на дату инвентаризации меньше или равен МИНИМАЛЬНОМУ остатку товара на складе.
А теперь в чем собственно прикол
Минимальный остаток товара на складе (как видно из кода) настраивается в табличке "Покрытие номенклатуры" (ReqItemTable). Эта табличка относится к модулю "Сводное планирование"...
НО У МЕНЯ НЕ ВКЛЮЧЕН КОНФИГУРАЦИОННЫЙ КЛЮЧ модуля "Сводное планирования"!!!
Т.е. никак настроить этот "минимум" я не могу, но зато могу указать его как условие при добавлении строк в инвентаризацию в инвентаризационной группе!
На мой взгляд это баг, и разработчики Microsoft просто забыли (или я чего то не понимаю
) проставить конфигурационный ключ сводного планирования (Req) в элемент "Минимум" перечисления "Инвентаризационный код" (InventCountCode).