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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.11.2019, 11:16   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Ну, я так понимаю, вопрос ставится так: В каких спецификациях используется указанная номенклатура, с учетом того, что спецификация сама может выступать как номенклатура для других спецификаций

X++:
    void setLevel(ItemId _itemId, int _level)
    {
        BomTable    bomTable;
        Bom         bom;
        ;
 
        while select itemId_X from bomTable
             join bom where bom.BOMId == bomTable.BOMId &&
                    bom.ItemId != bomTable.ItemId_X && bom.ItemId == _itemId
        {
           tmpItemLocal.clear();
           tmpItemLocal.ItemId  = bomTable.ItemId_X;
           tmpItemLocal.LineNum = _level;
           tmpItemLocal.insert();

           // рекурсия
           setLevel(bomTable.ItemId_X, _level+1);
        }
    }
    ;

    // Вход в рекурсию    
    setLevel('01.02.08.01.01.0002', 1);
Правда, тут не учтена вероятность "зацикливания". Впрочем, и Ваш запрос SQL, тоже это не учитывает.

Если "зацикливание" возможно, то нужно еще дополнительное поле для записи BomId и дополнительный запрос по tmpItemLocal на предмет существования комбинации BomId+ItemId+LineNum и если такая комбинация есть, то не делать запись и не входить в следующий шаг рекурсии

Ну, или просто ограничится глубиной вложенности, скажем, на 10 уровней. Если получилось, что _level больше 10, то это зацикливание и глубже идти не надо.

В принципе, можно сделать и цикл по аналогии с SQL. Вполне можно в запрос включить временную таблицу. Но! В Axapta объединение постоянных и временных таблиц в одном запросе зачастую очень плохо кончается. Как минимум, с точки зрения производительности. А в данном случае еще и с пониманием логики выполнения будут проблемы
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: mazzy (2), SuperStar88 (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Получить номер источника данных по имени (ax 2009) SuperStar88 DAX: Программирование 3 22.06.2018 13:36
dynamicsaxse: November 2017 Release – Dynamics AX 2012 R3 Blog bot DAX Blogs 0 08.12.2017 10:51
axforum blogs: Квест: Подружим Dynamics Ax 2009 Sp1 RU7 c SharePoint Foundation 2010 Blog bot DAX Blogs 4 16.10.2017 17:50
emeadaxsupport: AX Performance - Analyzing key SQL Server configuration and database settings Blog bot DAX Blogs 0 28.09.2015 14:11
axforum blogs: Квест: Подружим Dynamics Ax 2009 Sp1 RU7 c SharePoint Foundation 2010 - Этап 2 Blog bot DAX Blogs 0 12.07.2011 14:11

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

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

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