Miklix

Добавяне на метод за показване или редактиране чрез разширение в Dynamics 365

Публикувано: 16 февруари 2025 г. в 11:54:59 ч. UTC
Последна актуализация: 12 януари 2026 г. в 8:57:14 ч. UTC

В тази статия обяснявам как да използвам разширение на клас, за да добавя метод за показване към таблица и формуляр в Dynamics 365 for Operations, като са включени примери за X++ код.


Тази страница е машинно преведена от английски език, за да бъде достъпна за възможно най-много хора. За съжаление машинният превод все още не е съвършена технология, така че могат да възникнат грешки. Ако предпочитате, можете да видите оригиналната версия на английски език тук:

Add Display or Edit Method via Extension in Dynamics 365

Въпреки че планирането на използването на методи за показване или редактиране в Dynamics е нещо, което обикновено би трябвало да ви накара да се замислите дали бихте могли да проектирате решението си по различен начин, понякога те са най-добрият начин.

В предишни версии на Dynamics и Axapta беше много лесно да се създават методи за показване или редактиране на таблици и формуляри, но когато наскоро се наложи да създам първия си метод за редактиране в Dynamics 365, открих, че процедурата за това е малко по-различна.

Очевидно има няколко валидни подхода, но този, който намирам за най-добър (както по отношение на интуитивността, така и на красотата на кода), е да се използва разширение на клас. Да, можете да използвате разширения на клас, за да добавяте методи към други типове елементи, различни от класове - в този случай таблица, но това работи и за формуляри.

Първо, създайте нов клас. Можете да го наречете както искате, но по някаква причина той трябва да има наставка „_Extension“. Да кажем, че трябва да добавите метод за показване към CustTable, можете например да го наречете MyCustTable_Extension.

Класът трябва да бъде декориран с ExtensionOf, за да може системата да знае какво разширявате, ето така:

[ExtensionOf(tableStr(CustTable))]
public final class MyCustTable_Extension
{
}

Сега можете просто да имплементирате метода си за показване в този клас, както бихте направили директно върху таблицата в по-ранните версии на Dynamics - „това“ дори препраща към таблицата, така че можете да достъпвате полета и други методи.

Например, клас с прост (и напълно безполезен) метод за показване, който просто връща номера на сметката на клиента, може да изглежда така:

[ExtensionOf(tableStr(CustTable))]
public final class MyCustTable_Extension
{
    public display CustAccount displayAccountNum()
    {
        ;

        return this.AccountNum;
    }
}

Сега, за да добавите метода за показване към формуляр (или разширение на формуляр, ако не можете да редактирате формуляра директно), трябва да добавите поле към формуляра ръчно и да се уверите, че използвате правилния тип (низ в този пример).

След това, в контролата, ще зададете DataSource на CustTable (или каквото и да е името на вашия източник на данни CustTable) и DataMethod на MyCustTable_Extension.displayAccountNum (не забравяйте да включите името на класа, в противен случай компилаторът няма да може да намери метода).

И си готов :-)

Актуализация: Вече не е необходимо да се включва името на класа на разширението при добавяне на метода за показване към формуляр, но при първоначалното публикуване беше. Оставям информацията тук, в случай че някои читатели все още използват по-стари версии.

Допълнително четене

Ако ви е харесала тази публикация, може да ви харесат и тези предложения:


Споделете в BlueskyСподелете във FacebookСподелете в LinkedInСподелете в TumblrСподелете в XСподелете в LinkedInЗакачи в Пинтерест

Микел Кристенсен

За автора

Микел Кристенсен
Микел е създател и собственик на сайта miklix.com. Той има над 20 години опит като професионален компютърен програмист/разработчик на софтуер и в момента работи на пълен работен ден в голяма европейска ИТ корпорация. Когато не пише в блога, той прекарва свободното си време в широк спектър от интереси, хобита и дейности, които до известна степен могат да бъдат отразени в разнообразието от теми, обхванати в този уебсайт.