Прямое сканирование AOT выполняется на основе объекта TreeNode
Список вообще всех элементов AOT можно получить из таблицы UtilElements или UtilIdElements (эта то же самое, но со значениями Id элементов)
Соответственно, возможны 2 варианта получения списка объектов. Каждый способ имеет достоинства и недостатки
X++:
static void job_test(Args _args)
{
utilElements utilElements;
TableId tableId ;
DictTable dictTable;
int totalI;
TreeNode treeNode;
TreeNode node;
;
info("Scan AOT");
totalI = 0;
treeNode = treeNode::findNode(@"\Data Dictionary\Tables");
node = treeNode.AOTfirstChild();
while (node)
{
info(strFmt("Name = %1 tableType = %2", node.AOTname(), node.AOTgetProperty("TableType")));
// debug
totalI++;
if (totalI > 10) break;
node = node.AOTnextSibling();
}
info("-----------");
info("Scan UtilElements");
totalI = 0;
while select Name
from utilElements
group by Name
where utilElements.RecordType == UtilElementType::Table
{
tableId = tableName2id(utilElements.Name);
dictTable = new dictTable(tableId);
info(strFmt("Name = %1 tableType = %2", utilElements.Name, dictTable.tableType()));
// debug
totalI++;
if (totalI > 10) break;
}
}