Я в свое время делал так. Объект в АОТ создать легко через метод TreeNode.AOT.add(). Далее - ему копируются все свойства через
X++:
str s;
s = orig.AOTGetProperties();
//... Тут изменяем свойство Name на новое
myNode.AOTsetProperties(s);
И дальше - по полям. Тут нам пригодится специальный класс \System Documentation\Classes\AOTTableFieldList - без которого поля не создать.
С релейшнами - сложнее - тут заковыка. Их совсем ручками придется создавать.
С группами и delete action-ами не пробовал - но думаю проблем не будет.
Ну а методы тоже легко копируются - получается текст метода и засовывается в новый объект.
Да, увы - это ручное создание. Но поковыряв дублирование - у меня тоже вышли похожие грабли (Аксапта падала) и пришлось сделать вручную