Показать сообщение отдельно
Старый 10.08.2018, 10:38   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
у нас есть такой метод
\Classes\SysTreeNode\findProjectNode
X++:
/// <summary>
///     По указанному пути к проекту возвращает соотв. ProjectNode
/// </summary>
/// <param name="_projectPath">
///     Путь к проекту в формате TreeNode
/// </param>
/// <returns>
///     объект ProjectNode либо null, если проект не найден или путь не относится к проектам
///     NB! возвращается "сырой" объект ProjectNode, чтобы с ним можно было работать, надо вызвать на нем либо getRunNode(), либо loadForInspection()
///     см. также SysTestProject::getProjectNode()
/// </returns>
/// <remarks>
///     в отличие от прочих узлов AOT, проекты не ищутся через TreeNode::findNode(), поэтому и нужен отдельный метод
/// </remarks>
/// <modification projid="GRD_R6084" author="gl00m" date="15.02.2012">
///     Допилить форму проектов текущего пользователя, чтобы автоматом открывать форму поиска по проекту
///     DEV_xRefLayer "Пробивать в перекрестных ссылках слой", PKoz 19.12.2017
/// </modification>
public static ProjectNode findProjectNode(
    TreeNodePath    _projectPath,
    CreatedBy       _createdBy = '')
{
    identifiername      projectName;

    UtilElementType     applObjType;

    ProjectListNode     projectList;

    ProjectNode         ret;
    ;

    if (_projectPath != '')
    {
        projectName = SysTreeNode::path2ApplObjectName(_projectPath);
        if (projectName != '')
        {
            applObjType = SysTreeNode::path2ApplObjectType(_projectPath);

            if (applObjType == UtilElementType::SharedProject)
            {
                projectList = SysTreeNode::getSharedProject();
            }
            else
            if (applObjType == UtilElementType::PrivateProject)
            {
                projectList = SysTreeNode::getPrivateProject();
            }

            if (projectList)
            {
                if (applObjType == UtilElementType::PrivateProject)
                {
                    ret = projectList.AOTfindChild(substr(projectName, strLen(_createdBy + "_") + 1, 1000) );
                }
                else
                {
                    ret = projectList.AOTfindChild(projectName);
                }
            }
        }
    }
    return ret;
}
За это сообщение автора поблагодарили: RVS (3), alex55 (3).