AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.07.2008, 10:15   #1  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Как программно из проекта удалить нужный узел.
Никто не знает как программно из проекта удалить нужный узел.
Старый 01.07.2008, 10:55   #2  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от miklenew Посмотреть сообщение
Никто не знает как программно из проекта удалить нужный узел.
А что через TreeNode не получается?
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 01.07.2008, 11:12   #3  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от blokva Посмотреть сообщение
А что через TreeNode не получается?
Ни через TreeNode, ни через ProjectNode пока не получилось.
Старый 01.07.2008, 11:56   #4  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Что именно нужно удалить? группу или елементы АОТ?
Старый 01.07.2008, 12:33   #5  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Элемент.
Но только из проекта.
В системе он должен остаться.
Старый 01.07.2008, 12:39   #6  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Жуть. Там добавить есть, а удалить нету
Как вариант - пересобирать весь проект.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 01.07.2008, 12:41   #7  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Да, по-простому как-то не получается. Но можно поступить так:
1. Получить source проекта: source = ProjectNode.aotGetSource()
2. Распарсить source и найти описание нужного элеметна. Все элементы в сорсе описываются по шаблону: "Node: " + "TreeNodePath".
3. Удалить из сорса нужную строку описания тринода
4. ProjectNode.aotSetSource(source)
5. ProjectNode.aotSave();
Может есть что-то проще - не знаю.
Старый 01.07.2008, 12:52   #8  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Сообщение от 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  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
... не дает гарантии что так будет работать на всех версиях АХ.
Во ВСЕХ - нет, но в 3-ке всё также. Почти уверен что и в 5-ке так.
Старый 01.07.2008, 13:02   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Вообще я смотрю, что у ProjectNode есть метод removeFromProject.
Или это только на АХ 5?

можно экспортировать проект, удалить лишние строки, и импортировать обратно
Старый 01.07.2008, 13:11   #11  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
ProjectNode есть метод removeFromProject.
Похоже в 5-ке жизнь облегчили, в 4-ке нет метода
Старый 01.07.2008, 13:23   #12  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Вообще я смотрю, что у ProjectNode есть метод removeFromProject.
Или это только на АХ 5?

можно экспортировать проект, удалить лишние строки, и импортировать обратно
По моему пересобрать проект всетаки проще:
  1. Создать новый проект
  2. Перетянуть в него все элементы из исходного проекта
  3. Грохнуть исходный проект и переименовать новый проект в исходный
ЗЫ Надеюсь программно стереть проект можно.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 01.07.2008, 13:23   #13  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Вообще я смотрю, что у ProjectNode есть метод removeFromProject.
Или это только на АХ 5?

можно экспортировать проект, удалить лишние строки, и импортировать обратно
По моему пересобрать проект всетаки проще:
  1. Создать новый проект
  2. Перетянуть в него все элементы из исходного проекта
  3. Грохнуть исходный проект и переименовать новый проект в исходный
ЗЫ Надеюсь программно стереть проект можно.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
За это сообщение автора поблагодарили: miklenew (1).
Старый 01.07.2008, 13:30   #14  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Да, по-простому как-то не получается. Но можно поступить так:
1. Получить source проекта: source = ProjectNode.aotGetSource()
2. Распарсить source и найти описание нужного элеметна. Все элементы в сорсе описываются по шаблону: "Node: " + "TreeNodePath".
3. Удалить из сорса нужную строку описания тринода
4. ProjectNode.aotSetSource(source)
5. ProjectNode.aotSave();
Может есть что-то проще - не знаю.
Попробовал. Ноль эмоций. Как было так и осталось.
Старый 01.07.2008, 13:31   #15  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от kashperuk Посмотреть сообщение
можно экспортировать проект, удалить лишние строки, и импортировать обратно
А по дороге обои наклеить.
Старый 01.07.2008, 13:33   #16  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от Alex_KD Посмотреть сообщение
По моему пересобрать проект всетаки проще:
  1. Создать новый проект
  2. Перетянуть в него все элементы из исходного проекта
  3. Грохнуть исходный проект и переименовать новый проект в исходный
ЗЫ Надеюсь программно стереть проект можно.
Щас буду пробовать.
Жалко времени мало. Но вариантов нет.
Старый 01.07.2008, 14:28   #17  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Есть еще такой диалог
\Forms\SysProjectRemoveNode

Возможно можно подсунуть ему нужные параметры на вход и нажать программно ок.
Откуда он вызывается и куда уходит потом я не нашел.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 01.07.2008, 14:36   #18  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
\Forms\SysProjectRemoveNode
Вызывается он кернелом при удалении нода из проекта, соответственно и всю работу по удалению делает кернел
Старый 01.07.2008, 15:14   #19  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Вот такой код получился. С переименованием и удалением не стал возиться.
Результат меня устраивает.
Подкидываем проект.
Создаётся ещё один проект с префиксом 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  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Вообще я смотрю, что у ProjectNode есть метод removeFromProject.
А кто-нибудь использовал в AX2009 метод removeFromProject? У меня метод отрабатывает без ошибок, но ничего не удаляет .
Теги
aot, node, программно, узел, проекты

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Сколько процентов от стоимости проекта идет на ФОТ? (анонимный опрос) Spider DAX: Прочие вопросы 1 27.09.2006 08:22
Как удалить программно в форме элементы из группы mick_777 DAX: Программирование 2 09.09.2002 17:27
Функция "Удалить строки" Oks DAX: Функционал 1 03.07.2002 18:09
Удаление проекта Maxim Gorbunov DAX: Программирование 0 24.12.2001 23:04

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:11.