Короче получилось так... но так нельзя програмить...

Если списки очень большие, то будет долго выполняться...Но для относительно небольших сойдет пока...
Возможно еще где-то переменные лишние висят...Да и работу с массивом можно оптимизировать...
Вообщем вот этот громоздкий код:
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;
}