|  22.07.2008, 17:14 | #1 | 
| Участник | Дублирование объектов АОТ 
			
			Как реализовано дублирование объектов АОТ, вызываемое из контекстного меню? Создавать таблички через treeNode я научился, просто не хочется писать код, создающий все подузлы таблицы (Fileds, Relations, Field Groups и т.д.) - наверняко ведь это уже написано. Только вот не могу найти    | 
|  | 
|  22.07.2008, 17:30 | #2 | 
| Модератор | 
			
			может я не понял вопрос, но при дублировании таблицы в АОТ  она появляется с именем CopyOfNameTable  NameTable - имя таблицы. | 
|  | 
|  22.07.2008, 17:41 | #3 | 
| Участник | 
			
			Наверно имеется ввиду программное создание таблицы.   | 
|  | 
|  22.07.2008, 17:42 | #4 | 
| Участник | |
|  | 
|  22.07.2008, 18:05 | #5 | 
| Участник | 
			
			TreeNode.AOTDuplicate  делает не то, что нужно?
		 | 
|  | |
| За это сообщение автора поблагодарили: aidsua (1). | |
|  22.07.2008, 18:13 | #6 | 
| Участник | |
|  | 
|  22.07.2008, 18:15 | #7 | 
| Модератор | 
			
			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 | 
| Участник | 
			
			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 | 
| Участник | 
			
			Леша, попробуй этот проект покопать: 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 | 
| Злыдни | 
			
			Может, так попробовать? Только не знаю, как переименовать узел 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 | 
| Участник | Цитата: 
		
			Сообщение от 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 | 
| Участник | 
			
			treeNodeDet = treeNodeDet.makeCopy(); Axapta 3.0 SP3 ругается, что нет такой функции ( | 
|  | 
|  28.01.2009, 09:46 | #13 | 
| Участник | 
			
			Вопрос такой: как стандартными методами Axapta 3.0 SP3 создать новую табличку аналогичную имеющейся в AOT (можно, конечно, через dict классы, но (ИМХО) делать поновой то, что, возможно, уже сделано - неправильно). Поделитесь опытом, пожалуйста. | 
|  | 
|  28.01.2009, 14:51 | #14 | 
| Administrator | 
			
			Я в свое время делал так. Объект в АОТ создать легко через метод TreeNode.AOT.add(). Далее - ему копируются все свойства через X++: str s; s = orig.AOTGetProperties(); //... Тут изменяем свойство Name на новое myNode.AOTsetProperties(s); С релейшнами - сложнее - тут заковыка. Их совсем ручками придется создавать. С группами и delete action-ами не пробовал - но думаю проблем не будет. Ну а методы тоже легко копируются - получается текст метода и засовывается в новый объект. Да, увы - это ручное создание. Но поковыряв дублирование - у меня тоже вышли похожие грабли (Аксапта падала) и пришлось сделать вручную 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
|  28.01.2009, 15:34 | #15 | 
| Боец | Цитата: 
		
			Да, увы - это ручное создание...
		
	 X++: treeNode.treeNodeExport(fileNameStr) | 
|  | 
|  28.01.2009, 17:00 | #16 | 
| Участник | Цитата: 
		
			Сообщение от DSPIC
			   Гораздо проще и, самое главное - надежнее,экспортнуть выбранный, элемент  X++: treeNode.treeNodeExport(fileNameStr) Мне надо в realTime генерить табличку по другой. | 
|  | 
|  28.01.2009, 19:08 | #17 | 
| Боец | 
			
			нет, это не ручками. Про ручки в прямом смысле речь вообще не идет, - это мышкой делается...  Будет время - набросаю пример, а пока сорри. Вообще, речь только о таблицах? | 
|  | 
|  28.01.2009, 21:30 | #18 | 
| Administrator | 
			
			2xfree: Подход Ваш "наверняко ведь это уже написано" абсолютно верен, когда дело касается функционала или каких-то уже реализованных приемов программирования. Однако такие "сервисные" функции, как дублирование объекта в АОТ реализованы на уровне ядра (т.е. зашиты в exe-шнике) и могут не иметь рабочего аналога в системных классах (типа как TreeNode.makeCopy()). То, что действительно написано и работает - это дублирование через экспорт/импорт. Но тут надо разбираться. В свое время (в рамках учебного задания) я посчитал, что делать экспорт/импорт - будет менее удобно (и главное - долго ковырять механизм) - поэтому пошел через "ручное" исследование узлов АОТа. Просто в функционале видимо нигде не требуется дублировать таблицы - вот и не реализовали сей функционал как готовый метод 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
|  13.03.2012, 18:22 | #19 | 
| Участник | 
			
			В 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 | 
|  | 
| 
 |