Показать сообщение отдельно
Старый 18.08.2020, 11:30   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,656 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от oleggy Посмотреть сообщение
Спасибо. Резюмирую:
Не правильный вывод. Перемудрили...

Если нужен просто тупой перебор ВСЕХ узлов конкретной ветки AOT, то это делают так

X++:
static void job_Test(Args _args)
{
    utilElements    utilElements;
    int             totalI;
    
    TreeNode        treeNode;
    TreeNode        node;
    ;

    info("Scan AOT");
    totalI = 0;
    treeNode = treeNode::findNode(@"\Forms");
    node = treeNode.AOTfirstChild();
    while (node)
    {
        info(strFmt("Name = %1", node.AOTname()));
        
        // debug
        totalI++;
        if (totalI > 10) break;
        
        node = node.AOTnextSibling();
    }
 
    info('end');
}
Таблицы UtilElements и UtilIdElements имеет смысл использовать, если сами эти таблицы содержат некую нужную Вам информацию. Цель их использования вовсе не в том, чтобы сканировать вообще ВСЕ. Цель их использования - это сократить время поиска нужной информации

Например, если Вам нужна информация только о том, кто последний раз менял объект, то это поле этой самой таблицы UtilIdElements.ModifiedBy. Вам НЕ НАДО обращаться к самому объекту. Нужная информация уже есть в таблице. Кстати, и имя объекта также есть в таблице
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...