![]() |
#5 |
Участник
|
дело в том, что группы проекта требуют иного подхода в переборе и нахождении элементов -- тут AOTFindChild() не работает.
во-первых, loadForInspection() затем AOTIterator() или findGroupMember() X++: ... ProjectNode edtProjectGroupNode; ProjectNode tblProjectGroupNode; ProjectNode qryProjectGroupNode; // find all shared projects projectListNode = SysTreeNode::getSharedProject(); // find project with a given name projectNode = projectListNode.AOTfindChild(_projectName); // open it in a separate window in AOT projectRunNode = projectNode.getRunNode(); // this is the key point after which we can iterate group members projectNode = projectNode.loadForInspection(); // get nested nodes for appropriate names ddProjectGroupNode = projectNode.AOTfindChild('DataDictionary'); edtProjectGroupNode = ddProjectGroupNode.AOTfindChild('Extended Data Types'); tblProjectGroupNode = ddProjectGroupNode.AOTfindChild('Tables'); qryProjectGroupNode = projectNode.AOTfindChild('Queries'); ... // add to the project if not yet private void addNewObjectToProject(UtilElementType _type, TreeNode _treeNode) { str name = _treeNode.AOTname(); switch (_type) { case UtilElementType::ExtendedType: if(!edtProjectGroupNode.findGroupMember(name, _type, true)) { edtProjectGroupNode.addNode(_treeNode); } break; case UtilElementType::Table: if(!tblProjectGroupNode.findGroupMember(name, _type, true)) { tblProjectGroupNode.addNode(_treeNode); } break; case UtilElementType::Query: if(!qryProjectGroupNode.findGroupMember(name, _type, true)) { qryProjectGroupNode.addNode(_treeNode); } break; default: throw error(Error::wrongUseOfFunction(funcName())); } } кстати, ознакомься, пожалуйста i-neti: Решение проблемы с поиском новой цены в Dynamics AX
__________________
Felix nihil admirari |
|
|
|