|
04.08.2012, 14:22 | #1 |
Участник
|
Расчет резервного запаса – бага?
По-моему в алгоритме расчета резервного запаса есть серьезная бага. И если я прав, то вообще не понятно как им можно пользоваться.
Для расчёта статистики, на основании которой затем считается уровень минимального запаса, формируется запрос типа: 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. Последний раз редактировалось Starling; 04.08.2012 в 15:13. |
|
04.08.2012, 19:29 | #2 |
Участник
|
При этом у вас планирование в разрезе складов? Почему в запросе нет фильтра по складу?
__________________
Ivanhoe as is.. |
|
05.08.2012, 10:48 | #3 |
Участник
|
Цитата:
Склад не входит в план покрытия. Но списания, которые порождаются проводками списания по журналу переноса между складами, попадают в этот запрос и увеличивают количество списаний. Пример: Исходные данные: 1. Ном_1 2. Аналитики a. Конфигурация. План покрытия = Да.3. Операции: a. Закупка4. Журнал резервного запаса посчитает, что по данному набору операций статистика следующая:i. Ном_1 Кон_1 Цв_1 Раз_1 Скл_1 + 10b. Переносi. Ном_1 Кон_1 Цв_1 Раз_1 Скл_1 – 10c. Продажа: a. Ном_1 Кон_1 Цв_1 Раз_1 в количестве 20! Хотя правильно 10. |
|
05.08.2012, 17:58 | #4 |
Участник
|
Честно говоря, трудно представляю себе вашу задачу (без покрытия по складам). Вполне возможно, что такой сценарий не предусматривался для этой функциональности.
__________________
Ivanhoe as is.. |
|
05.08.2012, 19:14 | #5 |
Участник
|
Цитата:
Я надеюсь включать план покрытия по ячейкам вы предлагать не будете? Хотя и по поводу склада можно было бы поспорить. Цитата:
Бага – это. Непонятно только почему ее не исправили от 3-ки до 2009. |
|
06.08.2012, 12:08 | #6 |
Участник
|
Под рукой только 2009. Смотрим указанный вами метод:
Цитата:
/// <summary>
/// Makes a query in order to find used coverage dimensions for an item. В классе есть отдельный метод calcDemandPeriod() в котором следующие комменты: Цитата:
/// Demand is calculated as issues in the specified period. However not all issues should be included in the calculation.
/// Issues having a corresponding receipt on the same coverage dimension should not be included. ... // find demand - internal transfers must not count as demand // internal transfer means that the issue and receipt has same coverage dimensions. // if warehouse isn't a coverage dimension then don't count transfer orders as demand
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: Starling (2). |
06.08.2012, 12:25 | #7 |
Участник
|
Упс... не доглядел. Похоже в 2009 таки исправили.
В 3-ке метода calcDemandPeriod нет вообще. Спасибо. |
|
04.12.2012, 17:08 | #8 |
Участник
|
Формирование читых потребностей
Эта же проблема с журналами переноса, но в другом месте.
При просмотре данных в форме «Чистые потребности», в ней отображается информация по строкам журнала переноса, которые не меняют аналитику из плана покрытия. Похоже (при корректных данных) это не влияет на результаты планирования, но значительно усложняет анализ информации в этой форме, так как одна строка журнала переноса сначала отображается с «+» потом с «-». Итог в течение дня не меняется, но данный эти пользователь видит и вынужден как-то их фильтровать. Я проверял в версии AX2009 ситуация не изменилась. Пример: 1. Есть номенклатура со следующими аналитиками: a. Сайт. План покрытия = Да.2. Остатки: a. 10 штук Сайт = 1, Склад 11.3. Потребность (пусть прогноз продаж): a. -20 Сайт 14. Не разнесенный журнал переноса: a. -5 штук, с Сайт1, Склад 11, на Сайт1, Склад 125. Запускаю сводное – получаю результат – спланированная закупка на 10 штук на сайте 1. 6. Смотрю форму чистые потребности по Сайт 1 и вижу: a. В наличии + 107. Хотелось бы видеть: a. В наличии + 10Может кто-то модифицировал функционал в этой части? На сколько это вообще реально? |
|
04.12.2012, 17:38 | #9 |
Участник
|
В 2012 уже исправлено. Но вопрос актуальный. На сколько сложно это перенести на AX30?
|
|
05.12.2012, 08:35 | #10 |
Участник
|
X++: RecCalc.insertInventTrans() |
|
|
За это сообщение автора поблагодарили: Starling (1). |
05.12.2012, 14:36 | #11 |
Участник
|
Цитата:
Ладно будем рыть. |
|
05.12.2012, 14:53 | #12 |
Участник
|
Цитата:
Сообщение от Starling
Также насколько я понимаю из этой статьи от fed в зависимости от способа вызова планирования могут также работать разные классы.
|
|