Раздел: Метаданные
По видимому, в TreeNode нет методов, позволяющих это делать(вероятно, поэтому добавили класс AOTTableFieldList).
Единственный выход – экспортировать «шаблонный» EDT и использовать метод importElement класса Infolog чтобы сделать новый. Чтобы увидеть, как его использовать – посмотрите в класс SysImportElements
Можно воспрользоваться следующим примером:
static void Job19(Args _args) { UtilIdElements uie; XInfo XInfo = new XInfo(); TreeNode TNode; TreeNode DNode; str Props = "PROPERTIES\n" + " Name #AXUStr35\n" + " Label #\n" + " HelpText #\n" + " FormHelp #\n" + " ArrayLength #1\n" + " DisplayLength #Auto\n" + " ConfigurationKey #\n" + " ButtonImage #Arrow\n" + " Extends #\n" + " DisplayHeight #Auto\n" + " StringSize #35\n" + " Adjustment #Left\n" + " Alignment #Auto\n" + " ChangeCase #Auto\n" + "ENDPROPERTIES\n"; select maxof(id) from uie where uie.recordType == UtilElementType::ExtendedType && uie.utilLevel == XInfo.currentAOLayer(); uie.id++; uie.utilLevel = XInfo.currentAOLayer( ); uie.recordType = UtilElementType::ExtendedType; uie.name = "AXUStr35"; uie.insert(); DNode = TreeNode::findNode("Data Dictionary\\Extended Data Types"); DNode.AOTrefresh(); TNode = TreeNode::findNode("Data Dictionary\\Extended Data Types\\AXUStr35"); TNode.sysUtilDelete(); TNode.AOTsetProperties(Props); TNode.AOTsave(); pause; }
(thanx to Ed Tarnovsky)
treeNode = xInfo.rootNode(); treeNode = treeNode.AOTfindChild('Data Dictionary'); treeNode = treeNode.AOTfindChild('Extended Data Types'); treeNode=treeNode.AOTaddExtendedDataType(_EDT,Types::String); treeNode.AOTsetProperties(Props);
Также можно работать с отношениями EDT через aotAdd()