AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.07.2010, 14:12   #1  
ena_ax is offline
ena_ax
Участник
 
254 / 46 (2) +++
Регистрация: 06.12.2006
Физ. количество на дату
Не знаю обсуждалось или нет, но сам был очень удивлен поведением системы при расчете Физических запасов на указанную дату.

Началось с того, что бухгалтер сообщил о некоректных данных при формировании журнала Инвентаризация. А именно расчетное количество по системе было ошибочным.
Одновременно с этим «Отчет – Физ. Запасы по номнклатурным группам» также показывал по некоторым номенклатурам неверное количество.

Некорректность данных заключается в том, что количество по отчету не соответствует суммируемому количеству всего физического движения по указанную дату.

Причина в следующем:

Рассмотрим метод selectInventTransPostingPhysical класса InventSumDatePhysical.
X++:
protected void selectInventTransPostingPhysical()
[XPP]
{
InventTrans inventTrans;
InventTransPosting inventTransPostingPhysical;
;
while select forceplaceholders TableId from inventTransPostingPhysical
index hint ItemTypeDateIdx
where inventTransPostingPhysical.ItemId == itemId &&
inventTransPostingPhysical.InventTransPostingType == InventTransPostingType::Physical &&
inventTransPostingPhysical.TransDate > perDate
join sum(Qty) from inventTrans
index hint TransIdIdx
group by StatusIssue,StatusReceipt,DateInvent
where inventTrans.VoucherPhysical == inventTransPostingPhysical.Voucher &&
inventTrans.DatePhysical == inventTransPostingPhysical.TransDate &&
inventTrans.InventTransId == inventTransPostingPhysical.InventTransId
{
this.addInventTransPhysical(inventTrans);
}
}

В выборке присутствует группировка по DateInvent.
Далее вызывается метод
X++:
protected void addInventTransPhysical(InventTrans _inventTrans)
[XPP]
{
super(_inventTrans);
if (_inventTrans.DateInvent && _inventTrans.DateInvent <= perDate)
{
if (_inventTrans.Qty > 0)
registeredQty += _inventTrans.Qty;
else
pickedQty -= _inventTrans.Qty;
}
}

Видно, что при выполнении условия изменяется Зарегистрированное или Скомплектованное количество. И как следствие изменяется физическое количество.

В моем случае формировался отчет по 30.06.2010. В системе были Расходные проводки (Заказ на продажу) с :
DateInvent = 30.06.2010
DatePhysical = 01.07.2010
Данные проводки как раз и давали ошибку.

Исправляется изменением DateInvent = 01.07.2010

Последний раз редактировалось ena_ax; 02.07.2010 в 14:19.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Складские остатки на дату Logger DAX: Программирование 13 06.10.2010 16:20
Странное количество в строке журнала инвентаризации pitersky DAX: Функционал 7 16.01.2009 16:46
как отдельно учитывать фактическое и финансовое количество? romulis DAX: Функционал 4 08.02.2007 15:01
Как получить количество номенклатуры, которое физ. доступно? sao DAX: Программирование 2 02.02.2006 20:52
Закупка. Количество введенное в таблицу PurchLine не отображается в накладной ATimTim DAX: Программирование 15 21.06.2004 10:11

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:37.