23.01.2012, 14:34 | #1 |
Участник
|
Программная вставка кода
добрый день всем. Может тема и обсуждалась, но мне не удалось найти через поиск.
Задача - как программно поменять код в объекте? Например, Запустив JOb, поменять 2-3 метода на конкретной существующей форме в Аксапте??? |
|
23.01.2012, 15:04 | #2 |
Ищущий знания...
|
Цитата:
З.Ы. Вопросик. а зачем такое понадобилось, если не секрет?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
23.01.2012, 15:10 | #3 |
Молодой, подающий надежды
|
Общая идея может быть такая:
X++: static void testFormMethod(Args _args) { TreeNodePath path = @'\Forms\SalesTable\Data Sources\SalesTable\Methods\testMethod'; TreeNode treeNodeObj; MemberFunction treeNodeMethod; str source; #AOT ; treeNodeMethod = TreeNode::findNode(path); if (treeNodeMethod) { source = SysUtil::unpackSource(treeNodeMethod.AOTgetSource()); //--> //Производим манипуляции с исходным кодом //<-- treeNodeMethod.AOTsetSource(source); treeNodeMethod.AOTcompile(); treeNodeMethod.AOTsave(); treeNodeObj = treeNodeMethod.AOTparent(); while (treeNodeObj.AOTparent() && treeNodeObj.AOTparent().treeNodePath() != #FormsPath) { treeNodeObj = treeNodeObj.AOTparent(); } treeNodeObj.AOTsave(); } } Последний раз редактировалось pedrozzz; 23.01.2012 в 16:32. |
|
|
За это сообщение автора поблагодарили: Nikolaich (1). |
23.01.2012, 15:12 | #4 |
Участник
|
спасибо, посмотрю - может и поможет.
Не секрет - нужно выкатить обновление объекта для другой группы разработки. а моя версия уже сильно изменена, не хочется зачистку проводить и восстанавливать заново. Хочется им только изменения кода переслать, причем джобом который просто запустить надо |
|
23.01.2012, 15:24 | #5 |
Участник
|
"Мьсе знает толк в извращениях"
Если у них эти формы не обновлялись - то можно просто затереть их формы своими. Если обновлялись - то есть штатная процедура сравнения. ИМХО, лучше научиться правильной методике обновления (слияния), которая еще для первых версий готовилась Дамгаардами. Зачем изобретать велосипед, особенно, если есть вероятность, что он не поедет? P.S. Можно отправлять им только обновления с конкретного слоя. Но для формы это будет не особо актуально - она целиком на слое лежит, в отличие от классов. |
|
23.01.2012, 15:30 | #6 |
Участник
|
да все понятно - есть слои, переименования и прочие пути. просто хотел сделать с минимальными усилиями с их стороны
|
|
23.01.2012, 15:44 | #7 |
Участник
|
Цитата:
Сообщение от pedrozzz
Общая идея может быть такая:
X++: static void testFormMethod(Args _args) { TreeNodePath path = @'\Forms\SalesTable\Data Sources\SalesTable\Methods\testMethod'; TreeNode treeNodeObj; MemberFunction treeNodeMethod; str source; #AOT ; treeNodeMethod = TreeNode::findNode(path); if (treeNodeMethod) { source = SysUtil::unpackSource(treeNodeMethod.AOTgetSource()); //--> //Производим манипуляции с исходным кодом //<-- treeNodeMethod.AOTsetSource(source); treeNodeMethod.AOTcompile(); treeNodeMethod.AOTsave(); } treeNodeObj = treeNodeMethod.AOTparent(); while (treeNodeObj.AOTparent() && treeNodeObj.AOTparent().treeNodePath() != #FormsPath) { treeNodeObj = treeNodeObj.AOTparent(); } treeNodeObj.AOTsave(); } |
|
23.01.2012, 16:04 | #8 |
Участник
|
|
|
23.01.2012, 16:29 | #9 |
Участник
|
|
|
23.01.2012, 16:31 | #10 |
Участник
|
|
|
|
|