01.07.2008, 10:15 | #1 |
Участник
|
Как программно из проекта удалить нужный узел.
Никто не знает как программно из проекта удалить нужный узел.
|
|
01.07.2008, 10:55 | #2 |
Пенсионер
|
А что через TreeNode не получается?
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
01.07.2008, 11:12 | #3 |
Участник
|
|
|
01.07.2008, 11:56 | #4 |
Боец
|
Что именно нужно удалить? группу или елементы АОТ?
|
|
01.07.2008, 12:33 | #5 |
Участник
|
Элемент.
Но только из проекта. В системе он должен остаться. |
|
01.07.2008, 12:39 | #6 |
Участник
|
Жуть. Там добавить есть, а удалить нету
Как вариант - пересобирать весь проект.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
01.07.2008, 12:41 | #7 |
Боец
|
Да, по-простому как-то не получается. Но можно поступить так:
1. Получить source проекта: source = ProjectNode.aotGetSource() 2. Распарсить source и найти описание нужного элеметна. Все элементы в сорсе описываются по шаблону: "Node: " + "TreeNodePath". 3. Удалить из сорса нужную строку описания тринода 4. ProjectNode.aotSetSource(source) 5. ProjectNode.aotSave(); Может есть что-то проще - не знаю. |
|
01.07.2008, 12:52 | #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 |
|
01.07.2008, 12:55 | #9 |
Боец
|
Цитата:
... не дает гарантии что так будет работать на всех версиях АХ.
|
|
01.07.2008, 13:02 | #10 |
Участник
|
Вообще я смотрю, что у ProjectNode есть метод removeFromProject.
Или это только на АХ 5? можно экспортировать проект, удалить лишние строки, и импортировать обратно |
|
01.07.2008, 13:11 | #11 |
Боец
|
Цитата:
ProjectNode есть метод removeFromProject.
|
|
01.07.2008, 13:23 | #12 |
Участник
|
Цитата:
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
01.07.2008, 13:23 | #13 |
Участник
|
Цитата:
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
За это сообщение автора поблагодарили: miklenew (1). |
01.07.2008, 13:30 | #14 |
Участник
|
Цитата:
Сообщение от DSPIC
Да, по-простому как-то не получается. Но можно поступить так:
1. Получить source проекта: source = ProjectNode.aotGetSource() 2. Распарсить source и найти описание нужного элеметна. Все элементы в сорсе описываются по шаблону: "Node: " + "TreeNodePath". 3. Удалить из сорса нужную строку описания тринода 4. ProjectNode.aotSetSource(source) 5. ProjectNode.aotSave(); Может есть что-то проще - не знаю. |
|
01.07.2008, 13:31 | #15 |
Участник
|
|
|
01.07.2008, 13:33 | #16 |
Участник
|
Цитата:
Жалко времени мало. Но вариантов нет. |
|
01.07.2008, 14:28 | #17 |
Участник
|
Есть еще такой диалог
\Forms\SysProjectRemoveNode Возможно можно подсунуть ему нужные параметры на вход и нажать программно ок. Откуда он вызывается и куда уходит потом я не нашел.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
01.07.2008, 14:36 | #18 |
Боец
|
Цитата:
\Forms\SysProjectRemoveNode
|
|
01.07.2008, 15:14 | #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). |
27.12.2011, 09:43 | #20 |
Участник
|
|
|