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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.07.2008, 17:14   #1  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
Дублирование объектов АОТ
Как реализовано дублирование объектов АОТ, вызываемое из контекстного меню? Создавать таблички через treeNode я научился, просто не хочется писать код, создающий все подузлы таблицы (Fileds, Relations, Field Groups и т.д.) - наверняко ведь это уже написано. Только вот не могу найти
Старый 22.07.2008, 17:30   #2  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
может я не понял вопрос, но при дублировании таблицы в АОТ она появляется с именем CopyOfNameTable
NameTable - имя таблицы.
Старый 22.07.2008, 17:41   #3  
dreamer is offline
dreamer
Участник
Аватар для dreamer
 
53 / 15 (1) ++
Регистрация: 18.01.2007
Адрес: Киев
Наверно имеется ввиду программное создание таблицы.
Старый 22.07.2008, 17:42   #4  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
Цитата:
Сообщение от dreamer Посмотреть сообщение
Наверно имеется ввиду программное создание таблицы.
Совершенно верно.
Старый 22.07.2008, 18:05   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
TreeNode.AOTDuplicate делает не то, что нужно?
За это сообщение автора поблагодарили: aidsua (1).
Старый 22.07.2008, 18:13   #6  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
Цитата:
Сообщение от belugin Посмотреть сообщение
TreeNode.AOTDuplicate делает не то, что нужно?
Не нашел данного метода ни в 3.0, ни в 4.0
Старый 22.07.2008, 18:15   #7  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
TreeNode.AOTDuplicate Method описывается в Microsoft Dynamics AX 2009 SDK
http://msdn.microsoft.com/en-us/library/cc608086.aspx

хотя чет там ничего о нем не описывается..

Последний раз редактировалось Poleax; 22.07.2008 в 18:21.
Старый 22.07.2008, 19:28   #8  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
AOTDrop тоже не прокатывает. Может конечно я его неправильно использую
X++:
    treeNode =  xInfo.rootNode();

    treeNode = treeNode.AOTfindChild('Data Dictionary');
    treeNode = treeNode.AOTfindChild('Tables');
    treeNodeDet = treeNode.AOTfindChild('Table2');

    treeNode.AOTDrop(treeNodeDet);
Старый 22.07.2008, 20:41   #9  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Леша, попробуй этот проект покопать:
http://axutilities.blogspot.com/2005...le-wizard.html
Возможно создание подузлов как раз там и найдешь.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
За это сообщение автора поблагодарили: lev (1).
Старый 23.07.2008, 11:40   #10  
npokypatop is offline
npokypatop
Злыдни
Сотрудники компании It Box
Злыдни
 
60 / 14 (1) ++
Регистрация: 28.09.2005
Адрес: Нюрнберг
Может, так попробовать? Только не знаю, как переименовать узел

X++:
static void Job10(Args _args)
{
    TreeNode    treeNode, treeNodeDet;
    XInfo       xInfo = new XInfo();
    ;
    treeNode =  xInfo.rootNode();

    treeNode = treeNode.AOTfindChild('Data Dictionary');
    treeNode = treeNode.AOTfindChild('Tables');
    treeNodeDet = treeNode.AOTfindChild('xRefTypeHierarchy');

    treeNodeDet = treeNodeDet.makeCopy();
    // надо переименовать!!!
    treeNodeDet.AOTsave();
}
__________________
Все может быть и быть все может, все может быть или не быть,
но быть того никак не может, чего совсем не может быть.
Старый 23.07.2008, 12:13   #11  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Сообщение от npokypatop Посмотреть сообщение
Может, так попробовать? Только не знаю, как переименовать узел

X++:
static void Job10(Args _args)
{
    TreeNode    treeNode, treeNodeDet;
    XInfo       xInfo = new XInfo();
    ;
    treeNode =  xInfo.rootNode();

    treeNode = treeNode.AOTfindChild('Data Dictionary');
    treeNode = treeNode.AOTfindChild('Tables');
    treeNodeDet = treeNode.AOTfindChild('xRefTypeHierarchy');

    treeNodeDet = treeNodeDet.makeCopy();
    // надо переименовать!!!
    treeNodeDet.AOTsave();
}
Если переименовать - Акса радостно падает.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 27.01.2009, 17:56   #12  
xfree is offline
xfree
Участник
 
4 / 10 (1) +
Регистрация: 11.12.2008
treeNodeDet = treeNodeDet.makeCopy();

Axapta 3.0 SP3 ругается, что нет такой функции (
Старый 28.01.2009, 09:46   #13  
xfree is offline
xfree
Участник
 
4 / 10 (1) +
Регистрация: 11.12.2008
Вопрос такой:
как стандартными методами Axapta 3.0 SP3 создать новую табличку аналогичную имеющейся в AOT (можно, конечно, через dict классы, но (ИМХО) делать поновой то, что, возможно, уже сделано - неправильно). Поделитесь опытом, пожалуйста.
Старый 28.01.2009, 14:51   #14  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,320 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Я в свое время делал так. Объект в АОТ создать легко через метод TreeNode.AOT.add(). Далее - ему копируются все свойства через
X++:
str s;
s = orig.AOTGetProperties();
//... Тут изменяем свойство Name на новое
myNode.AOTsetProperties(s);
И дальше - по полям. Тут нам пригодится специальный класс \System Documentation\Classes\AOTTableFieldList - без которого поля не создать.
С релейшнами - сложнее - тут заковыка. Их совсем ручками придется создавать.
С группами и delete action-ами не пробовал - но думаю проблем не будет.
Ну а методы тоже легко копируются - получается текст метода и засовывается в новый объект.

Да, увы - это ручное создание. Но поковыряв дублирование - у меня тоже вышли похожие грабли (Аксапта падала) и пришлось сделать вручную
__________________
Возможно сделать все. Вопрос времени
Старый 28.01.2009, 15:34   #15  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Да, увы - это ручное создание...
Гораздо проще и, самое главное - надежнее,экспортнуть выбранный, элемент
X++:
treeNode.treeNodeExport(fileNameStr)
Затем исправить в заголовке файла имя элемента (в 2х местах) и, с помощью класса SysImportElements заимпортить (или посмотреть как класс работает и написать свой импорт (класс слишком "тяжелый" для подобной задачи)
Старый 28.01.2009, 17:00   #16  
xfree is offline
xfree
Участник
 
4 / 10 (1) +
Регистрация: 11.12.2008
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Гораздо проще и, самое главное - надежнее,экспортнуть выбранный, элемент
X++:
treeNode.treeNodeExport(fileNameStr)
Затем исправить в заголовке файла имя элемента (в 2х местах) и, с помощью класса SysImportElements заимпортить (или посмотреть как класс работает и написать свой импорт (класс слишком "тяжелый" для подобной задачи)
Получается, что это "ручками"?

Мне надо в realTime генерить табличку по другой.
Старый 28.01.2009, 19:08   #17  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
нет, это не ручками. Про ручки в прямом смысле речь вообще не идет, - это мышкой делается...
Будет время - набросаю пример, а пока сорри. Вообще, речь только о таблицах?
Старый 28.01.2009, 21:30   #18  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,320 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
2xfree: Подход Ваш "наверняко ведь это уже написано" абсолютно верен, когда дело касается функционала или каких-то уже реализованных приемов программирования. Однако такие "сервисные" функции, как дублирование объекта в АОТ реализованы на уровне ядра (т.е. зашиты в exe-шнике) и могут не иметь рабочего аналога в системных классах (типа как TreeNode.makeCopy()). То, что действительно написано и работает - это дублирование через экспорт/импорт. Но тут надо разбираться. В свое время (в рамках учебного задания) я посчитал, что делать экспорт/импорт - будет менее удобно (и главное - долго ковырять механизм) - поэтому пошел через "ручное" исследование узлов АОТа.

Просто в функционале видимо нигде не требуется дублировать таблицы - вот и не реализовали сей функционал как готовый метод
__________________
Возможно сделать все. Вопрос времени
Старый 13.03.2012, 18:22   #19  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
В 2009 можно с помощью AOTDuplicate

X++:
static void Job196(Args _args)
{
    TreeNode    treeNode, treeNodeDet;
    XInfo       xInfo = new XInfo();
    ;
    treeNode =  xInfo.rootNode();

    treeNode = treeNode.AOTfindChild('Data Dictionary');
    treeNode = treeNode.AOTfindChild('Tables');
    treeNodeDet = treeNode.AOTfindChild('CustGroup');

    treeNodeDet = treeNodeDet.AOTDuplicate();
    treeNodeDet.AOTsetProperty('Name', 'DLCustGroup_NV');
    treeNodeDet.AOTsave();
}
Теги
документация, ax2009

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как сильно модифицировано ваше приложение Аксапты? (% обновленных партнерских объектов) mazzy DAX: Прочие вопросы 1 12.03.2009 17:41
Как сильно модифицировано ваше приложение Аксапты? (% новых партнерских объектов) mazzy DAX: Прочие вопросы 1 12.03.2009 17:41
Как сильно модифицировано ваше приложение Аксапты? (% новых объектов) mazzy DAX: Прочие вопросы 1 12.03.2009 17:40
Отделение объектов АОТ в разрезе функциональности. DSPIC DAX: Программирование 18 11.07.2008 16:16
Дублирование объектов Shakr DAX: Программирование 5 07.12.2006 10:57
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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