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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.01.2008, 09:21   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Ну, раз уж на то пошло, то думаю оптимальным вариантом здесь является использование класса InventDimOnHand
Посмотрел еще раз.
Не. Этот класс используется сугубо в WMS. Этот класс позволяет хранить результаты и перебирать их повторно в алгоритме оптимального поиска ячеек.

В остальных случаях этот класс явно избыточен, на мой взгляд.
Кроме того, этот класс выбирает несколько результатов в цикле (!) при помощи InventOnHand. А inventOnHand заточен на получение итога по одной аналитике. В цикле этот класс чудовищно неэффективен. А следовательно, неэффективен и InventDimOnHand.

По-моему, InventDimOnHand был и остается примером крайне неудачного использования инструмента InventOnHand. Разработчикам InventDimOnHand надо было использовать InventSum::newQuery, а не InventOnHand.

Или я чего-то не понимаю?
__________________
полезное на axForum, github, vk, coub.
Старый 08.01.2008, 11:41   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
InventOnHand, конечно
Dim я туда случайно всунул, так как АХ не открыл, чтобы проверить, что это тот класс, который на уме. Сорри за запутывание

Вот пример написал, что исправиться

X++:
static void InventOnHandExample(Args _args)
{
    InventDim       inventDim;
    InventDimParm   inventDimParm;
    #define.InventLocationId("MW")
    #define.ItemId("ESB-005")
    ;
    inventDimParm.InventLocationIdFlag = NoYes::Yes;
    inventDim.InventLocationId = #InventLocationId;

    box::info(strFmt("%1", InventOnHand::newItemDim(#ItemId, inventDim, inventDimParm).availPhysical()));
}
Очень аккуратно, imho.

А про InventSum::newQuery() - ты немного просто напутал, когда написал цикл. Ведь этот запрос, по сути, уже возвращает готовый запрос с агрегированием, поэтому цикла там никогда не будет - хотя код, естественно, будет работать.
Старый 08.01.2008, 11:46   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от kashperuk Посмотреть сообщение
А про InventSum::newQuery() - ты немного просто напутал, когда написал цикл. Ведь этот запрос, по сути, уже возвращает готовый запрос с агрегированием, поэтому цикла там никогда не будет - хотя код, естественно, будет работать.
Я думал об этом когда писал пример

Цикла не будет только в этом примере. Я специально сделал группировку как у Тринха. При его группировке и условиях цикл действительно не нужен. В реальности параметры ParmCriteria, ParmGroupBy могут и не совпадать. А также ParmGroupBy может содержать больше галочек, чем ParmCriteria. Тогда цикл очень даже нужен.

Кстати, InventOnHand как раз предполагает совпадение. За счет такого предположения они сократили число параметров и убрали ParmGroupBy.

Я же старался написать действительно универсальный код, который можно использовать как паттерн в любых случаях. Какие бы галки не включили в ParmCriteria и ParmGroupBy - мой код будет работать корректно.
__________________
полезное на axForum, github, vk, coub.
Старый 08.01.2008, 11:49   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Очень аккуратно, imho.
Да. Единственное ограничение - не наод использовать конструкцию с InventOnHand внутри цикла. Только для одноразового запроса.
__________________
полезное на axForum, github, vk, coub.
Старый 08.01.2008, 11:59   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Очень аккуратно, imho.
Кстати, если говорить об аккуратности и краткости при предположениях и в частных случаях...
Если нужно получить только по непустым складским аналитикам, то можно упростить и унифицировать инициализацию InventDimParm.
Вот так.

X++:
static void InventOnHandExample(Args _args)
{
    InventDim       inventDim;
    InventDimParm inventDimParm;
    #define.InventLocationId("MW")
    #define.ItemId("ESB-005")
    ;
    inventDim.InventLocationId = #InventLocationId;
    inventDimParm.initFromInventDim(InventDim); // галочки берем из непустых полей InventDim

    info(strFmt("%1",
        InventOnHand::newItemDim(#ItemId,inventDim,inventDimParm).availPhysical()
    ));
}
__________________
полезное на axForum, github, vk, coub.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Khue Trinh: Adjust Standard Cost of Item Blog bot DAX Blogs 1 30.04.2008 15:08
Khue Trinh: Inventory Min/Max Key Blog bot DAX Blogs 0 13.01.2008 19:32
November princess: How does Dynamics Ax perform the inventory settlement for closing process Blog bot DAX Blogs 0 11.01.2008 22:10
Khue Trinh: RESERVATION AT A GLANCE Blog bot DAX Blogs 0 07.01.2008 15:51
Khue Trinh: Be careful with Inventory journal Blog bot DAX Blogs 0 07.01.2008 15:51
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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