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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.10.2017, 16:16   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
А как в ax7 код метода получить?
Занимаюсь апгрейдом класса.
Раньше замечательно работало сравнение с OLD-слоем.
Фиг с ним, сделал себе функцию вывода контента методов в текстовый файл.

Для ax2012 все тупо, просто, быстро.
А вот в ax7 выяснилось, что DictMethod.getSource - obsolete.

хорошо, напрягся, переписал на Metadata.
но и в нем axMethod.Source - пустой.
Хотя axCalss.Declaration - вполне себе X++ код показывает.

Ветку Channel9: Peter Villadsen and Gustavo Plancarte: X++ to MSIL
Мне не нужен .net код, мне нужен X++ код.

как можно получить?


================================
ax2012
X++:
static void Job2(Args _args)
{
    SysDictClass dc = new SysDictClass(classNum(EInvoiceCFDIXMLDocReader_MX));
    TextBuffer text = new TextBuffer();

    SetEnumerator se = dc.methods().getEnumerator();
    SysDictMethod dm;

    Map mm = new Map(Types::String, Types::String);
    MapEnumerator me;

    while( se.moveNext() )
    {
        dm = se.Current();
        mm.insert(dm.name(), dm.getSource());
    }

    me = mm.getEnumerator();
    while( me.moveNext() )
    {
        text.appendText(me.currentValue());
        text.appendText('\n');
    }

    text.toClipboard();
    info("done.");
}

ax7.1 :
X++:
class ClassMethods
{
    public static void main(Args _args)
    {
        TextBuffer text = new TextBuffer();
    
        str packageDir = 'C:\AOSService\PackagesLocalDirectory';

        //or
        var environment = Microsoft.Dynamics.ApplicationPlatform.Environment.EnvironmentFactory::GetApplicationEnvironment();
        packageDir = environment.get_Aos().get_PackageDirectory();

        // it's kind of magic
        var runtimeProviderConfiguration = New Microsoft.Dynamics.AX.Metadata.Storage.Runtime.RuntimeProviderConfiguration(packageDir);
        var metadataProviderFactory =  New Microsoft.Dynamics.AX.Metadata.Storage.MetadataProviderFactory();
        Microsoft.Dynamics.AX.Metadata.Providers.IMetadataProvider provider = metadataProviderFactory.CreateRuntimeProvider(runtimeProviderConfiguration);




        Map mm = new Map(Types::String, Types::String);

        Microsoft.Dynamics.AX.Metadata.MetaModel.AxClass c = provider.Classes.Read('EInvoiceXMLDocReader_MX');
        for(int i=0; i<c.MethodCount(); ++i)
        {
            Microsoft.Dynamics.AX.Metadata.MetaModel.AxMethod m = c.GetMethod(i);
            mm.insert(m.Name, m.Source);
        }

        MapEnumerator me = mm.getEnumerator();
        while( me.moveNext() )
        {
            text.appendText(me.currentValue());
            text.appendText('\n');
        }
        
        File::SendStringAsFileToUser(text.toString(), 'methods.txt');
        info("done.");
    }

}
Миниатюры
Нажмите на изображение для увеличения
Название: ax7.PNG
Просмотров: 398
Размер:	65.7 Кб
ID:	11674  
__________________
полезное на axForum, github, vk, coub.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Tayfun Sertan Yaman: Using 3rd party Web components in AX7; an introduction to extensible controls Blog bot DAX Blogs 0 28.08.2017 13:11
mfp: X++ in AX7: Garbage Collection Blog bot DAX Blogs 0 21.12.2015 11:11
Как получить из элемента enum-а код типа (enum-а)? Romb DAX: База знаний и проекты 12 27.06.2013 16:17
Не найден исполнимый код метода insert Александр Костоусов DAX: Программирование 10 03.09.2004 16:47
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:30.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.