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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.07.2008, 10:15  Ссылка на сообщение   #1  
miklenew is offline
miklenew
Участник
Аватар для miklenew
Лучший по профессии 2009
MCBMSS
 
1,438 / 279 (12) ++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Как программно из проекта удалить нужный узел.

Никто не знает как программно из проекта удалить нужный узел.
Старый 01.07.2008, 10:55  Ссылка на сообщение   #2  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
707 / 135 (6) +++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от miklenew Посмотреть сообщение
Никто не знает как программно из проекта удалить нужный узел.
А что через TreeNode не получается?
__________________
Законы природы еще никто не отменял!
А еще у меня растет внучка!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 01.07.2008, 11:12  Ссылка на сообщение   #3  
miklenew is offline
miklenew
Участник
Аватар для miklenew
Лучший по профессии 2009
MCBMSS
 
1,438 / 279 (12) ++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от blokva Посмотреть сообщение
А что через TreeNode не получается?
Ни через TreeNode, ни через ProjectNode пока не получилось.
Старый 01.07.2008, 11:56  Ссылка на сообщение   #4  
DSPIC is offline
DSPIC
Боец
Аватар для DSPIC
Лучший по профессии 2009
 
631 / 426 (16) +++++++
Регистрация: 11.04.2008
Адрес: Москва
Что именно нужно удалить? группу или елементы АОТ?
Старый 01.07.2008, 12:33  Ссылка на сообщение   #5  
miklenew is offline
miklenew
Участник
Аватар для miklenew
Лучший по профессии 2009
MCBMSS
 
1,438 / 279 (12) ++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Элемент.
Но только из проекта.
В системе он должен остаться.
Старый 01.07.2008, 12:39  Ссылка на сообщение   #6  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
 
352 / 75 (3) ++++
Регистрация: 06.07.2006
Адрес: Moscow
Жуть. Там добавить есть, а удалить нету
Как вариант - пересобирать весь проект.
__________________
Axapta Editor Utility - suggestions, autotext, hotkeys, extended navigation.
Утилита для программистов.
Старый 01.07.2008, 12:41  Ссылка на сообщение   #7  
DSPIC is offline
DSPIC
Боец
Аватар для DSPIC
Лучший по профессии 2009
 
631 / 426 (16) +++++++
Регистрация: 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
 
352 / 75 (3) ++++
Регистрация: 06.07.2006
Адрес: Moscow
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Да, по-простому как-то не получается. Но можно поступить так:
1. Получить source проекта: source = ProjectNode.aotGetSource()
2. Распарсить source и найти описание нужного элеметна. Все элементы в сорсе описываются по шаблону: "Node: " + "TreeNodePath".
3. Удалить из сорса нужную строку описания тринода
4. ProjectNode.aotSetSource(source)
5. ProjectNode.aotSave();
Может есть что-то проще - не знаю.
Можно, но никто не дает гарантии что так будет работать на всех версиях АХ.
Как известно 3ка не дружит с 4кой, а 4ка с 5кой. Хотя, возможно, проектов это не касается.
__________________
Axapta Editor Utility - suggestions, autotext, hotkeys, extended navigation.
Утилита для программистов.
Старый 01.07.2008, 12:55  Ссылка на сообщение   #9  
DSPIC is offline
DSPIC
Боец
Аватар для DSPIC
Лучший по профессии 2009
 
631 / 426 (16) +++++++
Регистрация: 11.04.2008
Адрес: Москва
Цитата:
... не дает гарантии что так будет работать на всех версиях АХ.
Во ВСЕХ - нет, но в 3-ке всё также. Почти уверен что и в 5-ке так.
Старый 01.07.2008, 13:02  Ссылка на сообщение   #10  
kashperuk is offline
kashperuk
SDET II, Dynamics AX
Аватар для kashperuk
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
3,657 / 1328 (52) ++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Вообще я смотрю, что у ProjectNode есть метод removeFromProject.
Или это только на АХ 5?

можно экспортировать проект, удалить лишние строки, и импортировать обратно
Старый 01.07.2008, 13:11  Ссылка на сообщение   #11  
DSPIC is offline
DSPIC
Боец
Аватар для DSPIC
Лучший по профессии 2009
 
631 / 426 (16) +++++++
Регистрация: 11.04.2008
Адрес: Москва
Цитата:
ProjectNode есть метод removeFromProject.
Похоже в 5-ке жизнь облегчили, в 4-ке нет метода
Старый 01.07.2008, 13:23  Ссылка на сообщение   #12  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
 
352 / 75 (3) ++++
Регистрация: 06.07.2006
Адрес: Moscow
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Вообще я смотрю, что у ProjectNode есть метод removeFromProject.
Или это только на АХ 5?

можно экспортировать проект, удалить лишние строки, и импортировать обратно
По моему пересобрать проект всетаки проще:
  1. Создать новый проект
  2. Перетянуть в него все элементы из исходного проекта
  3. Грохнуть исходный проект и переименовать новый проект в исходный
ЗЫ Надеюсь программно стереть проект можно.
__________________
Axapta Editor Utility - suggestions, autotext, hotkeys, extended navigation.
Утилита для программистов.
Старый 01.07.2008, 13:23  Ссылка на сообщение   #13  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
 
352 / 75 (3) ++++
Регистрация: 06.07.2006
Адрес: Moscow
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Вообще я смотрю, что у ProjectNode есть метод removeFromProject.
Или это только на АХ 5?

можно экспортировать проект, удалить лишние строки, и импортировать обратно
По моему пересобрать проект всетаки проще:
  1. Создать новый проект
  2. Перетянуть в него все элементы из исходного проекта
  3. Грохнуть исходный проект и переименовать новый проект в исходный
ЗЫ Надеюсь программно стереть проект можно.
__________________
Axapta Editor Utility - suggestions, autotext, hotkeys, extended navigation.
Утилита для программистов.
За это сообщение автора поблагодарили: miklenew (1).
Старый 01.07.2008, 13:30  Ссылка на сообщение   #14  
miklenew is offline
miklenew
Участник
Аватар для miklenew
Лучший по профессии 2009
MCBMSS
 
1,438 / 279 (12) ++++++
Регистрация: 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
Лучший по профессии 2009
MCBMSS
 
1,438 / 279 (12) ++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от kashperuk Посмотреть сообщение
можно экспортировать проект, удалить лишние строки, и импортировать обратно
А по дороге обои наклеить.
Старый 01.07.2008, 13:33  Ссылка на сообщение   #16  
miklenew is offline
miklenew
Участник
Аватар для miklenew
Лучший по профессии 2009
MCBMSS
 
1,438 / 279 (12) ++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от Alex_KD Посмотреть сообщение
По моему пересобрать проект всетаки проще:
  1. Создать новый проект
  2. Перетянуть в него все элементы из исходного проекта
  3. Грохнуть исходный проект и переименовать новый проект в исходный
ЗЫ Надеюсь программно стереть проект можно.
Щас буду пробовать.
Жалко времени мало. Но вариантов нет.
Старый 01.07.2008, 14:28  Ссылка на сообщение   #17  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
 
352 / 75 (3) ++++
Регистрация: 06.07.2006
Адрес: Moscow
Есть еще такой диалог
\Forms\SysProjectRemoveNode

Возможно можно подсунуть ему нужные параметры на вход и нажать программно ок.
Откуда он вызывается и куда уходит потом я не нашел.
__________________
Axapta Editor Utility - suggestions, autotext, hotkeys, extended navigation.
Утилита для программистов.
Старый 01.07.2008, 14:36  Ссылка на сообщение   #18  
DSPIC is offline
DSPIC
Боец
Аватар для DSPIC
Лучший по профессии 2009
 
631 / 426 (16) +++++++
Регистрация: 11.04.2008
Адрес: Москва
Цитата:
\Forms\SysProjectRemoveNode
Вызывается он кернелом при удалении нода из проекта, соответственно и всю работу по удалению делает кернел
Старый 01.07.2008, 15:14  Ссылка на сообщение   #19  
miklenew is offline
miklenew
Участник
Аватар для miklenew
Лучший по профессии 2009
MCBMSS
 
1,438 / 279 (12) ++++++
Регистрация: 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).
 
Теги
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 Rambler's Top100
Часовой пояс GMT +4, время: 11:13.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.