X++:
static void Job16(Args _args)
{//DSPIC
UtilElements utilElements;
ProjectNode projectNode;
Source projectSource;
;
while select utilElements
where utilElements.recordType == UtilElementType::SharedProject
|| utilElements.recordType == UtilElementType::PrivateProject
{
projectNode = xUtilElements::getNode(utilElements);
if (projectNode)
{
projectNode = projectNode.loadForInspection();
projectSource = projectNode.AOTgetSource(); //получаем проект в виде строки
//элементы AOT в projectSource вписаны по шаблону: Node: treeNodePath
}
}
}
Остаестся распарсить projectSource и найти все строки, начинающиеся с Node: ...
Это наверное самый быстрый способ пробежаться по проектам и проекту.
Второй вариант (стандартный), работать с treeNode'ами: firstChild, NextChild и т.д. - будет на порядок медленнее. В этой же категории можно заюзать класс TreeNodeTraverser для облегчения "лазанья" по тринодам
Edit: Есть ещё один момент. Если проект лежит на разных слоях, то в таблице utilElements встретятся дубликаты, поэтому нужно сохранять выбранные имена проектов для предотвращения повторного пробега по ним. Способ быть может чуть сложнее приведенного выше, но тут выигрыш в скорости отработки.