Показать сообщение отдельно
Старый 12.04.2013, 17:56   #11  
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).