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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.01.2012, 14:34   #1  
Nikolaich is offline
Nikolaich
Участник
 
238 / 10 (1) +
Регистрация: 15.12.2004
Программная вставка кода
добрый день всем. Может тема и обсуждалась, но мне не удалось найти через поиск.
Задача - как программно поменять код в объекте? Например, Запустив JOb, поменять 2-3 метода на конкретной существующей форме в Аксапте???
Старый 23.01.2012, 15:04   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Nikolaich Посмотреть сообщение
добрый день всем. Может тема и обсуждалась, но мне не удалось найти через поиск.
Задача - как программно поменять код в объекте? Например, Запустив JOb, поменять 2-3 метода на конкретной существующей форме в Аксапте???
Посмотрите в этой теме, возможно сможете сделать по аналогии и для форм...

З.Ы. Вопросик. а зачем такое понадобилось, если не секрет?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 23.01.2012, 15:10   #3  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Общая идея может быть такая:
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  
Nikolaich is offline
Nikolaich
Участник
 
238 / 10 (1) +
Регистрация: 15.12.2004
спасибо, посмотрю - может и поможет.
Не секрет - нужно выкатить обновление объекта для другой группы разработки.
а моя версия уже сильно изменена, не хочется зачистку проводить и восстанавливать заново.
Хочется им только изменения кода переслать, причем джобом который просто запустить надо
Старый 23.01.2012, 15:24   #5  
Михаил Андреев is offline
Михаил Андреев
Участник
Компания АМАНД
Лучший по профессии 2009
 
1,296 / 239 (10) ++++++
Регистрация: 09.11.2001
Адрес: Химки, Московская область
"Мьсе знает толк в извращениях"
Если у них эти формы не обновлялись - то можно просто затереть их формы своими.
Если обновлялись - то есть штатная процедура сравнения.

ИМХО, лучше научиться правильной методике обновления (слияния), которая еще для первых версий готовилась Дамгаардами.
Зачем изобретать велосипед, особенно, если есть вероятность, что он не поедет?

P.S. Можно отправлять им только обновления с конкретного слоя. Но для формы это будет не особо актуально - она целиком на слое лежит, в отличие от классов.
__________________
Михаил Андреев
https://www.amand.ru
Старый 23.01.2012, 15:30   #6  
Nikolaich is offline
Nikolaich
Участник
 
238 / 10 (1) +
Регистрация: 15.12.2004
да все понятно - есть слои, переименования и прочие пути. просто хотел сделать с минимальными усилиями с их стороны
Старый 23.01.2012, 15:44   #7  
Nikolaich is offline
Nikolaich
Участник
 
238 / 10 (1) +
Регистрация: 15.12.2004
Цитата:
Сообщение от 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  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от Nikolaich Посмотреть сообщение
Класс ! Работает - спасибо, и , в общем-то быстро все делается!
И на какой слой ложатся изменения?
Старый 23.01.2012, 16:29   #9  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
И на какой слой ложатся изменения?
По логике, изменения должны попасть на тот слой, который указан в настройках сессии, в рамках которой выполняется код.
Старый 23.01.2012, 16:31   #10  
Nikolaich is offline
Nikolaich
Участник
 
238 / 10 (1) +
Регистрация: 15.12.2004
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
И на какой слой ложатся изменения?
на тот, в рамках которого код и был запущен
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axforum blogs: О заполнении Наименования и Кода номенклатуры в печатной форме Накладной (Ax2009 ru7) Blog bot DAX Blogs 0 07.06.2011 09:11
эффективное отображение исполнения кода Evgeniy2020 DAX: Программирование 8 31.07.2008 11:11
как сообщить об ошибках, не прерывая исполнения кода chanchala DAX: Программирование 11 16.07.2008 12:28
проблема с настройкой штрихового кода Nic DAX: Функционал 4 27.12.2004 09:04
Использование штрихового кода (barcode) в Аксапта Pavlo AKA Panok DAX: Функционал 9 17.10.2003 15:13

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

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

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