|
![]() |
#1 |
Участник
|
у нас есть такой метод
\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). |
![]() |
#2 |
Сенбернар
|
Спасибо, работает. Вот котт, может, кому пригодится:
X++: static void Job548(Args _args) { str treeNodePath = @'\Projects\Shared\ADMIN_11_BatchJobPeriodic'; ProjectNode projectNode; ; projectNode = SysTreeNode::findProjectNode(treeNodePath).getRunNode(); projectNode.AOTnewWindow(); }
__________________
Best Regards, Roman |
|
![]() |
#3 |
Участник
|
я так
X++: TreeNode treeNode; str treeNodePath = @'ADMIN_11_BatchJobPeriodic'; ; treeNode = SysTreeNode::getSharedProject().AOTfindChild(treeNodePath); if (treeNode) { treeNode.AOTrun(); } |
|
|
За это сообщение автора поблагодарили: RVS (3). |
![]() |
#4 |
Участник
|
Цитата:
Сообщение от RVS
![]() Спасибо, работает. Вот котт, может, кому пригодится:
X++: static void Job548(Args _args) { str treeNodePath = @'\Projects\Shared\ADMIN_11_BatchJobPeriodic'; ProjectNode projectNode; ; projectNode = SysTreeNode::findProjectNode(treeNodePath).getRunNode(); projectNode.AOTnewWindow(); } |
|
![]() |
#5 |
Участник
|
А если например открыто 2 рабочей области и я хочу открыть проект именно в той, где вызвана эта функция? А программа открывает его по какой-то своей логике и если он уже открыт в одной рабочей области, то в другой она его уже не откроет.
|
|