Показать сообщение отдельно
Старый 11.10.2011, 09:49   #1  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
"Инвентаризационный код" в группах инвентаризации и создание строк инвентаризации
Всем доброго времени суток!
Сейчас занимаюсь тестированием и исследованием функционала выполнения полной инвентаризации в системе 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).
Миниатюры
Нажмите на изображение для увеличения
Название: создание строк инв.png
Просмотров: 545
Размер:	20.9 Кб
ID:	7204  
Изображения
   
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: mazzy (5), Pustik (3), S.Kuskov (2).