Miklix

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

Публикувано: 16 февруари 2025 г. в 11:54:59 ч. 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 - "this" дори препраща към таблицата, така че можете да получите достъп до полета и други методи.

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

[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 години опит като професионален компютърен програмист/разработчик на софтуер и в момента работи на пълен работен ден в голяма европейска ИТ корпорация. Когато не пише в блога, той прекарва свободното си време в широк спектър от интереси, хобита и дейности, които до известна степен могат да бъдат отразени в разнообразието от теми, обхванати в този уебсайт.