Miklix

Afegiu un mètode de visualització o d'edició mitjançant l'extensió al Dynamics 365

Publicat: 5 de març del 2025, a les 19:28:53 UTC
Última actualització: 12 de gener del 2026, a les 8:57:54 UTC

En aquest article, explico com utilitzar una extensió de classe per afegir un mètode de visualització a una taula i un formulari al Dynamics 365 for Operations, amb exemples de codi X++ inclosos.


Aquesta pàgina es va traduir automàticament de l'anglès per tal de fer-la accessible al màxim de persones possible. Malauradament, la traducció automàtica encara no és una tecnologia perfeccionada, de manera que es poden produir errors. Si ho prefereixes, pots veure la versió original en anglès aquí:

Add Display or Edit Method via Extension in Dynamics 365

Tot i que planificar l'ús de mètodes de visualització o edició a Dynamics és una cosa que generalment us hauria de fer considerar si potser podríeu dissenyar la vostra solució d'una manera diferent, de vegades són la millor opció.

En versions anteriors de Dynamics i Axapta, era molt fàcil crear mètodes de visualització o edició en taules i formularis, però quan recentment vaig haver de crear el meu primer mètode d'edició al Dynamics 365, vaig descobrir que el procediment per fer-ho és una mica diferent.

Evidentment, hi ha diversos enfocaments vàlids, però el que trobo millor (tant pel que fa a la intuïció com a la bellesa del codi) és utilitzar una extensió de classe. Sí, podeu utilitzar extensions de classe per afegir mètodes a altres tipus d'elements que no siguin classes; en aquest cas, una taula, però també funciona per a formularis.

Primer, crea una classe nova. Pots anomenar-la com vulguis, però per alguna raó ha de tenir el sufix "_Extension". Per exemple, diguem que necessites afegir un mètode de visualització a CustTable, per exemple, podries anomenar-lo MyCustTable_Extension.

La classe ha d'estar decorada amb ExtensionOf per tal que el sistema sàpiga què esteu estenent, així:

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

Ara podeu implementar el vostre mètode de visualització en aquesta classe, tal com ho hauríeu fet directament a la taula en versions anteriors de Dynamics: "això" fins i tot fa referència a la taula, de manera que podeu accedir a camps i altres mètodes.

Per exemple, una classe amb un mètode de visualització simple (i completament inútil) que només retorna el número de compte del client podria tenir aquest aspecte:

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

        return this.AccountNum;
    }
}

Ara, per afegir el mètode de visualització a un formulari (o a una extensió de formulari, si no podeu editar el formulari directament), heu d'afegir un camp al formulari manualment i assegurar-vos d'utilitzar el tipus correcte (cadena en aquest exemple).

Aleshores, al control, definiríeu DataSource a CustTable (o qualsevol que sigui el nom de la vostra font de dades CustTable) i DataMethod a MyCustTable_Extension.displayAccountNum (assegureu-vos d'incloure el nom de la classe, ja que si no, el compilador no podrà trobar el mètode).

I ja està :-)

Actualització: Ja no cal incloure el nom de la classe d'extensió quan s'afegeix el mètode de visualització a un formulari, però en el moment original de la publicació, sí que ho era. Deixo la informació aquí en cas que alguns lectors encara utilitzin versions anteriors.

Lectures addicionals

Si t'ha agradat aquesta publicació, també et poden agradar aquests suggeriments:


Comparteix a BlueskyComparteix a FacebookComparteix a LinkedInComparteix a TumblrComparteix a XComparteix a LinkedInPin a Pinterest

Mikkel Christensen

Sobre l'autor

Mikkel Christensen
Mikkel és el creador i propietari de miklix.com. Té més de 20 anys d'experiència com a programador/desenvolupador de programari informàtic professional i actualment treballa a temps complet per a una gran corporació informàtica europea. Quan no fa blocs, dedica el seu temps lliure a una gran varietat d'interessos, aficions i activitats, que fins a cert punt es poden reflectir en la varietat de temes tractats en aquest lloc web.