Тема: HK Framework
Показать сообщение отдельно
Старый 16.02.2010, 12:28   #5  
Stainless is offline
Stainless
Участник
MCBMSS
Columbus IT
 
34 / 114 (4) +++++
Регистрация: 26.01.2007
:)
Разобрался в чем было дело, просто в различных приложениях узлы AOT в проекте называются по-разному, возможные варианты:
  • Data Dictionary
  • Data_Dictionary
  • DataDictionary
Соответственно функционал при добавлении узла в проект ищет родительский узел текущего элемента и не находит, чтобы минимизировать ошибка можно переписать метод findOrCreateProjectGroup класса HKProject следующим образом:
X++:
ProjectGroupNode findOrCreateProjectGroup(TreeNode _treeNode)
{   #AOT
    ProjectGroupNode    ret, groupNode, bufGroupNode;
    TreeNodePath        path;
    TreeNodeName        groupName;
    container           pathCon;

    if (!projectNode || !_treeNode)
        return null;

    // + KAnt
    //path    = strReplace(_treeNode.treeNodePath(), ' ', '_');
    path    = _treeNode.treeNodePath();
    // - KAnt

    pathCon = str2con(path, #AOTRootPath);
    pathCon = condel(pathCon, 1, 1); // remove first delimiter

    groupNode = projectNode;
    while (conlen(pathCon) > 1)
    {
        groupName = conpeek(pathCon, 1);

        bufGroupNode = groupNode.AOTfindChild( groupName );

        // + KAnt
        if(!bufGroupNode)
        {
            bufGroupNode = groupNode.AOTfindChild( strReplace(groupName, ' ', '_') );
        }

        if(!bufGroupNode)
        {
            bufGroupNode = groupNode.AOTfindChild( strReplace(groupName, ' ', '') );
        }
        // - KAnt

        if (!bufGroupNode)
        {
            bufGroupNode = groupNode.AOTadd(groupName);
            bufGroupNode.projectGroupType(SysTreeNode::path2ProjectGroupNodeType(_treeNode.treeNodePath()));

            this.changeGroupPos(bufGroupNode);
        }

        groupNode = bufGroupNode;

        pathCon = condel( pathCon, 1, 1);
    }

    ret = groupNode;

    return ret;
}