Показать сообщение отдельно
Старый 09.02.2007, 15:14   #8  
moid is offline
moid
Участник
 
84 / 10 (1) +
Регистрация: 05.02.2007
Короче получилось так... но так нельзя програмить... Если списки очень большие, то будет долго выполняться...Но для относительно небольших сойдет пока...
Возможно еще где-то переменные лишние висят...Да и работу с массивом можно оптимизировать...
Вообщем вот этот громоздкий код:
X++:
void clicked()
{  str arrSub[];
   int a=1;//размерность массива
   int c=1,d=1;
   int b;
   int OutLoadArr,OutLoadArrF;
   EmplTable EmplTableFind;
   list ListSub, ListSub2 = new list(types::String);
   listIterator it, it2;
   ;
    super();
    StaticTextPodch.text("");
    EmplTableFind = EmplTable::findUserId("ZLD");
//*************************************************************************************************************************
//************************************************** Получаем родительские списки *****************************************
    ListSub = (ZG_HRMOrganization::getOrganizationChildren(ZG_HRMOrganizationType::Line, emplTableFind.hrmOrganizationId) );

    //Выводим список
    it = new listIterator (ListSub);
    while (it.more())
    {
        arrSub[a] = it.value();
        a++;
        it.next();
    }
    //info("первый обход выгрузили = "+ int2str(a));
//*************************************************************************************************************************
//************************************************* Продвигаемся вниз по ветвям *******************************************
       while (c > 0)
       {
         d = a;
         for (b=c; b<=d; b++)
         {
           //info("смотрим по списку " + ArrSub[b]);
           if (ArrSub[b] == "")
           {
           // info("ПУСТОЙ СИМВОЛ");
            break;
           }
           ListSub2 = (ZG_HRMOrganization::getOrganizationChildren(ZG_HRMOrganizationType::Line, arrSub[b]));
           //Выводим список
            it2 = new listIterator (ListSub2);
            while (it2.more())
            {
              arrSub[a] = it2.value();
             // info("Находим " + ArrSub[a]);
              a++;
              it2.next();
            }
            c=a-d;//на сколько увеличелся список
            c=a-c;//не обработанные элементы начинаются с этого значения
         }
           //info("Второй тоже = "+ int2str(a));

           // убираем повторяющиеся записи
           for(OutLoadArr=1; OutLoadArr <= a-1; OutLoadArr++)
           {
             for(OutLoadArrF=OutLoadArr+1; OutLoadArrF <= a; OutLoadArrF++)
             {
               if(ArrSub[OutLoadArr] == ArrSub[OutLoadArrF])
               {
                 ArrSub[OutLoadArr] = "";
               }
             }
           }

           //Выводим список
            for (OutLoadArr=1; OutLoadArr <= a; OutLoadArr++)
            {
              StaticTextPodch.text(StaticTextPodch.text() +", "+ arrSub[OutLoadArr]);
            }
            break;
       }