Как X ++ запускается для формы D365 - PullRequest
0 голосов
/ 25 сентября 2018

В D365 я знаю, как запускать код для DataSource, DataField и Control.Но как я могу запустить код «Выполнить» «Init» для формы?

Если я просто напишу «Выполнить» и «Init» на уровне формы.Будет ли он работать автоматически?Или мне нужно как-нибудь позвонить им?Как я могу запустить «Выполнить» для моей формы?

введите описание изображения здесь

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Что ж, вы можете просто попробовать это самостоятельно с помощью простой формы теста, подобной этой:

[Form]
public class TestForm1 extends FormRun
{
    void run()
    {
        info("test from run()");
        super();
    }
}  

Если вы запустите ее, вы увидите, что появляется сообщение.

Как и в предыдущих выпусках (2009/2012), вы можете просто посмотреть на код, который сгенерирует инструмент, если переопределить метод, как показано ниже:

Tooling

0 голосов
/ 26 сентября 2018

Если вы разрабатываете пользовательскую форму с нуля, то да, как @DAXaholic указал, что вы можете переопределить run и init методы непосредственно в вашей форме, а затем реализовать свою пользовательскую логику там, как вы делали в предыдущих версиях AX.

Однако наложение сильно не рекомендуется в D365 и больше не будет поддерживаться Microsoft.Это означает, что если вы настраиваете стандартную форму или любую другую форму, которая не входит в тот же пакет, вы должны использовать подход расширяемости для реализации пользовательской логики.Это может быть достигнуто с помощью extensions и обработчиков событий .

Предположим, у вас есть форма и вам необходимо выполнить некоторый код до и после инициализации формы.Вместо наложения объекта и переопределения метода init вы можете создать класс обработчика событий и подписаться на события OnInitializing и OnInitialized:

[FormEventHandler(formStr(Test), FormEventType::Initializing)]
public static void Test_OnInitializing(xFormRun sender, FormEventArgs e)
{
    // your code here
}

[FormEventHandler(formStr(Test), FormEventType::Initialized)]
public static void Test_OnInitialized(xFormRun sender, FormEventArgs e)
{
    // your code here
}
0 голосов
/ 26 сентября 2018

Пожалуйста, просмотрите ниже документы.Это применимо для открытия формы D365. Вы можете переопределить методы этой формы. Метод события Последовательности при открытии формы

...