Цитата:
Сообщение от
kashperuk
Так в чем дело было в итоге?
дело в том, что группы проекта требуют иного подхода в переборе и нахождении элементов -- тут 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