|
|
#1 |
|
Участник
|
Как программно из проекта удалить нужный узел.
Никто не знает как программно из проекта удалить нужный узел.
|
|
|
|
|
#2 |
|
Пенсионер
|
А что через TreeNode не получается?
__________________
Законы природы еще никто не отменял!А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
|
|
|
#3 |
|
Участник
|
|
|
|
|
|
#4 |
|
Боец
|
Что именно нужно удалить? группу или елементы АОТ?
|
|
|
|
|
#5 |
|
Участник
|
Элемент.
Но только из проекта. В системе он должен остаться. |
|
|
|
|
#6 |
|
Участник
|
Жуть. Там добавить есть, а удалить нету
![]() Как вариант - пересобирать весь проект.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
|
|
#7 |
|
Боец
|
Да, по-простому как-то не получается. Но можно поступить так:
1. Получить source проекта: source = ProjectNode.aotGetSource() 2. Распарсить source и найти описание нужного элеметна. Все элементы в сорсе описываются по шаблону: "Node: " + "TreeNodePath". 3. Удалить из сорса нужную строку описания тринода 4. ProjectNode.aotSetSource(source) 5. ProjectNode.aotSave(); Может есть что-то проще - не знаю. |
|
|
|
|
#8 |
|
Участник
|
Цитата:
Сообщение от DSPIC
Да, по-простому как-то не получается. Но можно поступить так:
1. Получить source проекта: source = ProjectNode.aotGetSource() 2. Распарсить source и найти описание нужного элеметна. Все элементы в сорсе описываются по шаблону: "Node: " + "TreeNodePath". 3. Удалить из сорса нужную строку описания тринода 4. ProjectNode.aotSetSource(source) 5. ProjectNode.aotSave(); Может есть что-то проще - не знаю. Как известно 3ка не дружит с 4кой, а 4ка с 5кой. Хотя, возможно, проектов это не касается.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
|
|
#9 |
|
Боец
|
Цитата:
... не дает гарантии что так будет работать на всех версиях АХ.
|
|
|
|
|
#10 |
|
Участник
|
Вообще я смотрю, что у ProjectNode есть метод removeFromProject.
Или это только на АХ 5? можно экспортировать проект, удалить лишние строки, и импортировать обратно |
|
|
|
|
#11 |
|
Боец
|
Цитата:
ProjectNode есть метод removeFromProject.
|
|
|
|
|
#12 |
|
Участник
|
Цитата:
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
|
|
#13 |
|
Участник
|
Цитата:
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
|
| За это сообщение автора поблагодарили: miklenew (1). | |
|
|
#14 |
|
Участник
|
Цитата:
Сообщение от DSPIC
Да, по-простому как-то не получается. Но можно поступить так:
1. Получить source проекта: source = ProjectNode.aotGetSource() 2. Распарсить source и найти описание нужного элеметна. Все элементы в сорсе описываются по шаблону: "Node: " + "TreeNodePath". 3. Удалить из сорса нужную строку описания тринода 4. ProjectNode.aotSetSource(source) 5. ProjectNode.aotSave(); Может есть что-то проще - не знаю. |
|
|
|
|
#15 |
|
Участник
|
|
|
|
|
|
#16 |
|
Участник
|
Цитата:
Жалко времени мало. Но вариантов нет. |
|
|
|
|
#17 |
|
Участник
|
Есть еще такой диалог
\Forms\SysProjectRemoveNode Возможно можно подсунуть ему нужные параметры на вход и нажать программно ок. Откуда он вызывается и куда уходит потом я не нашел.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
|
|
#18 |
|
Боец
|
Цитата:
\Forms\SysProjectRemoveNode
|
|
|
|
|
#19 |
|
Участник
|
Вот такой код получился. С переименованием и удалением не стал возиться.
Результат меня устраивает. Подкидываем проект. Создаётся ещё один проект с префиксом CopyOf+старое_название. Просто у меня как раз к примеру из 1000 объектов в проекте получается проект в котором нужно 100. Я думал сначало удалением, но и пересоздание меня тоже устравивает. X++: static void MRD_SearchProject(Args _args) { str project = 'MRD_Tables'; ProjectNode oldProject; str nameKey; configurationKeyId id; ProjectNode sharedProjects; ProjectNode newProject; void getTreeNode(TreeNode _treeNode) { TreeNode node1; TreeNodeIterator treeNodeIterator1 = _treeNode.AOTiterator(); node1 = treeNodeIterator1.next(); while(node1) { if(node1.handle() == classNum(ProjectGroupNode)) { getTreeNode(node1); } else { if (node1.AOTname() != "fdjh") newProject.addUtilNode(node1.applObjectType(), node1.AOTname()); } node1 = treeNodeIterator1.next(); } } ; sharedProjects = infolog.projectRootNode().AOTfindChild('Shared'); sharedProjects.AOTAdd("CopyOf" + project); newProject = sharedProjects.AOTfindChild("CopyOf" + project); newProject.loadForInspection(); newProject = newProject.getRunNode(); oldProject = sharedProjects.AOTfindChild(project); if(oldProject) { oldProject = oldProject.loadForInspection(); getTreeNode(oldProject); } newProject.AOTsave(); } |
|
|
|
| За это сообщение автора поблагодарили: wojzeh (1), S.Kuskov (5). | |
|
|
#20 |
|
Участник
|
|
|
|