Показать сообщение отдельно
Старый 28.10.2014, 17:20   #5  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от 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
__________________
Felix nihil admirari