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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.04.2013, 17:56   #1  
plumbum is offline
plumbum
Участник
Соотечественники
 
182 / 86 (3) ++++
Регистрация: 07.12.2007
Адрес: Vienna, AT
Ну в общем Вы двигаетесь в правильном направлении.
Если я Вас правлиьно понял, Вам надо выбрать все дочерние записи отталкиваясь от определенного значения SalesUnitId,

тогда напишите рекурсивную функцию, которая, получая SalesUnitId как параметр, выбирает по очереди (while select) все дочерние записи, и, если какая нибудь из них тоже содержит дочерние, вызывается рекурсивно для этой конкретой дочерней записи.

Ну например:
X++:
static void Job45(Args _args)
{
    SMMSalesUnitId      salesUnitId;
    List                salesUnits = new List(Types::String);

    List getChildSalesUnit(SMMSalesUnitId _salesUnitIdParent)
    {
        SMMSalesUnit    salesUnit;
        List            childSalesUnit = new List(Types::String);
        
        //Add current sales unit to list
        childSalesUnit.addEnd(_salesUnitIdParent);
        
        //Check for child records
        select count(RecId)
            from salesUnit
            where salesUnit.ParentId == _salesUnitIdParent;

        if (!salesUnit)
        {
            return childSalesUnit;
        }
        //Go through child records and call recurent function
        while select SalesUnitId
            from salesUnit
            where salesUnit.ParentId == _salesUnitIdParent
        {
            //Merge list with the result list of all children
            childSalesUnit = List::merge(childSalesUnit, getChildSalesUnit(salesUnit.SalesUnitId));
        }
        return childSalesUnit;
    }
    ;
    
    salesUnitId = "any value";
    salesUnits  = getChildSalesUnit(salesUnitId);
}
__________________
http://www.axdevposts.blogspot.com
Пришел, уведел.... отойди, дай другому увидеть!

Последний раз редактировалось plumbum; 12.04.2013 в 18:07. Причина: Орфография... мда, 3 года всего учил русский в школе :)
За это сообщение автора поблагодарили: user_ax (1).
Старый 12.04.2013, 17:59   #2  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от plumbum Посмотреть сообщение
Ну в общем Вы двигаетесь в правильном направлении.
Если я Вас правлиьно понял, Вам надо выбрать все дочерние записи отталкиваясь от определенного значения SalesUnitId,

тогда напишите рекурсивную функцию, которая, получая SalesUnitId как параметр, выбирает поочереди (while select) все дочерние записи, и, если какая нибудь из них тоже содержит дочернии, вызывается рекурсивно для этой конкретой дочерней записи.

Да, вы меня правильно поняли.
Если есть дочерние - выбирать их, если нет - выбирать текущее значение salesunitid, которые выделено.
Сейчас попробую ваш джобик)
Теги
tree, дерево, построение дерева, раскрытие

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как получить метки всех элементов всех форм (DAX 4) Qaz Qwerty DAX: Программирование 1 09.08.2008 05:39
Как поменять порядок элементов в Tree Lucky13 DAX: Программирование 3 16.02.2007 14:29
Tree. Проблема с data() alexbn DAX: Программирование 2 03.11.2005 14:39
Как работать с tree? Oz DAX: Программирование 3 23.08.2002 12:36
Динамическое добавление элементов в отчет Maxim Gorbunov DAX: База знаний и проекты 1 17.01.2002 14:48
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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