25.11.2010, 16:03 | #1 |
Участник
|
Epic Fail Остатки на дату InventSumDateValueReportDim
Epic Fail Остатки на дату InventSumDateValueReportDim
Здравствуйте, была простая задача: получить остатки на определенную дату. в компании используется складская аналитика Склад. (только). Задачка простая на 30.09.2010 получить остатки по номенклатуре вида: Номенлкатура, Склад, Количество, Сумма по идее все должно работать за счет стандартного класса InventSumDateValueReportDim как бы не так есть номенклатура 'ЦТ0085140' по ней движение появилось 05.11.2010 до этой даты 05.11.2010 НЕТ ПРОВОДОК в InventTrans с такой номенклатурой по любой складской аналитке 05.11.2010 куплено 20 штук 20.11.2010 продано 1 штука на текущий день 19 штук осталось на 30.09.2010 по этой номенклатуре должно быть ровно 0 по всем складским аналитикам. но увы. X++: InventDimId _inventDimId; date _date; itemId _itemId; Qty qty, qty2; InventSumDateValueReportDim Invent; // класс расчета на определенную дату InventDim inventDimLoc; InventDimParm inventDimParmLoc; ; _itemId = 'ЦТ0085140'; _inventDimId = 'ЦАН00069498'; _date = mkdate(30,9,2010); inventDimParmLoc.InventLocationIdFlag = NoYes::Yes; inventDimParmLoc.InventGTDIdFlag_RU = NoYes::No; inventDimLoc = inventDim::find(_inventDimId); Invent = InventSumDateValueReportDim::newParameters( _date, _itemId, inventDimLoc, inventDimParmLoc); qty = Invent.PostedQty() - Invent.deductedQty() + Invent.receivedQty(); qty2 = Invent.PostedQty(); info(StrFmt("%1 %2",qty ,qty2)); а вот такой код возвращает все верно 0 X++: inventTrans inventTrans; select sum(Qty) from inventTrans group by inventDimId, itemId where inventTrans.ItemId == 'ЦТ0085140' && inventTrans.DatePhysical <= mkdate(30,09,2010) && inventTrans.StatusIssue <= StatusIssue::Deducted && inventTrans.StatusReceipt<= StatusReceipt::Received && inventTrans.inventDimId == 'ЦАН00069498'; info(strfmt("%1", inventTrans.Qty)); Вопрос: неужели на стандартный класс нельзя положиться, если движение по номенклатуре началось позже указанной даты? выдает ерунду. Последний раз редактировалось Evgeniy2020; 25.11.2010 в 16:09. |
|
25.11.2010, 16:18 | #2 |
Участник
|
Цитата:
должно быть inventDimLoc.InventLocationId = "Склад по которому хотите узнать остатки" inventDimLoc = inventDim::find(_inventDimId); - просто удалите эту строчку. Заработало? P.S. Извините, если резковато получилось. Последний раз редактировалось petr; 25.11.2010 в 16:19. Причина: добоавление |
|
25.11.2010, 16:18 | #3 |
Модератор
|
Ставьте KB2215421 или RU6
Цитата:
If you backdate the reports to a date before the item was created for the first in, first out (FIFO) items, physical value adjustments are incorrectly calculated. The physical value adjustments that are posted in the future period are not reversed in the reports. These amounts are reflected in the posted physical value and in the inventory value in the reports. Therefore, even though no item exists, the reports show data.
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: Logger (3), lev (2), Evgeniy2020 (1). |
25.11.2010, 16:32 | #4 |
Участник
|
to Petr:
исправил аналитику, но ситуацию не поменялась. также 19 штук возвращается. при этом это ax 3.0 sp 4 странно что такое раньше не открывалось. |
|
25.11.2010, 17:03 | #5 |
Ищущий знания...
|
Цитата:
Сообщение от Vadik
...
Цитата:
If you backdate the reports to a date before the item was created for the first in, first out (FIFO) items, physical value adjustments are incorrectly calculated. The physical value adjustments that are posted in the future period are not reversed in the reports. These amounts are reflected in the posted physical value and in the inventory value in the reports. Therefore, even though no item exists, the reports show data.
Или плохо искал, или это очевидно для всех или ещё что...
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
25.11.2010, 17:09 | #6 |
Модератор
|
А я люблю, как в старые добрые времена, холодными зимними вечерами с трубочкой и бокалом коньяка у камина почитать свежий fixlist или rss из knowledge base
А если серьезно - ну был косяк, ну исправили, чего ж тут обсуждать - надо проверить на себе и исправить
__________________
-ТСЯ или -ТЬСЯ ? |
|
25.11.2010, 17:18 | #7 |
Участник
|
|
|
25.11.2010, 17:55 | #8 |
Участник
|
2 Raven Melancholic:
у меня простая ситуация в верхний джоб подставляю любую номенклатуру по которой движение началось позже даты 30.09.2010 взял для примера следующую номенклатуру у которой первая закупка в Inventrans 10.11.2010 и те же грабли в моем случае ерунда выдается если взять любую номенклатуру по которой движение начинается после указанной даты (в данном случае 30.09.,2010 т.е. даты на которую получаем остатки) попробуйте у себя верхний джоб и номенклатуру возьмите у которой первая проводка в InvenTrans > 30.09.2010 |
|
25.11.2010, 18:00 | #9 |
Ищущий знания...
|
Цитата:
Сообщение от Evgeniy2020
2 Raven Melancholic:
у меня простая ситуация в верхний джоб подставляю любую номенклатуру по которой движение началось позже даты 30.09.2010 взял для примера следующую номенклатуру у которой первая закупка в Inventrans 10.11.2010 и те же грабли в моем случае ерунда выдается если взять любую номенклатуру по которой движение начинается после указанной даты (в данном случае 30.09.,2010 т.е. даты на которую получаем остатки) попробуйте у себя верхний джоб и номенклатуру возьмите у которой первая проводка в InvenTrans > 30.09.2010 З.Ы. Ax 3.0 SP3
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: Logger (3). |
25.11.2010, 18:00 | #10 |
Участник
|
|
|
25.11.2010, 20:11 | #11 |
Участник
|
Тогда остается найти отличия в Иерархии с тем что есть у Raven Melancholic.
я возможно загляну в другие версии и попробую сравнить, а также с хотфиксом. после этого станет ясно |
|
13.08.2014, 12:45 | #12 |
Участник
|
Попробовал багу, не воспроизвелось.
По ходу дела пока разбирал алгоритм работы классов, наткнулся на фильтрацию по InventTrans.valueOpen: \Classes\InventSumDatePhysicalDim\selectInventTransPicked \Data Dictionary\Tables\InventTrans\Methods\qtyPickedDate X++: select sum(Qty) from inventTrans where inventTrans.ItemId == _itemId && inventTrans.StatusReceipt == StatusReceipt::None && inventTrans.StatusIssue == StatusIssue::Picked && inventTrans.ValueOpen == InventTransOpen::Yes && inventTrans.DateInvent > _perDate #inventDimExistsJoin(inventTrans.InventDimId,inventDim,_inventDimCriteria,_inventDimParm); |
|
|
За это сообщение автора поблагодарили: gl00mie (3). |
13.08.2014, 14:47 | #13 |
Участник
|
Как вариант, повысить производительность работы с InventTrans, уменьшив, где возможно, количество обрабатываемых записей. Правда, с агрегацией по одному полю ускорение может быть незначительным.
Последний раз редактировалось Cardagant; 13.08.2014 в 15:02. |
|
13.08.2014, 15:56 | #14 |
Участник
|
По поводу ускорения я тоже подумал.
Но не ценой же корректности возвращаемого результата ! |
|
13.08.2014, 19:06 | #15 |
Участник
|
А в чем не корректность? Разве может быть закрыта проводка в статусе расхода "Скомплектовано"?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: Logger (3). |
13.08.2014, 19:22 | #16 |
Участник
|
Да, вы правы. Я это пропустил. Анализировал как учитываются проводки у которых статус уже поменялся до Продано и забыл что здесь такие не участвуют.
Т.е. видимо в этом случае данное условие используют как хинт подсказывающий оптимизатору схватить высокоселективный в этих условиях индекс OpenItemIdx. А сама выборка не сужается. |
|
Теги |
остатки на дату |
|
Похожие темы | ||||
Тема | Ответов | |||
Складские остатки на дату | 13 | |||
Остатки на дату InventSumDatePhysical | 6 | |||
Остатки товара на определенную дату | 7 | |||
Остатки на дату. | 119 |
|