Miklix

Adăugați o metodă de afișare sau de editare prin extensie în Dynamics 365

Publicat: 16 februarie 2025 la 11:56:02 UTC
Ultima actualizare: 12 ianuarie 2026 la 08:57:27 UTC

În acest articol, explic cum se utilizează o extensie de clasă pentru a adăuga o metodă de afișare la un tabel și un formular în Dynamics 365 for Operations, inclusiv exemple de cod X++.


Această pagină a fost tradusă automat din limba engleză pentru a o face accesibilă cât mai multor persoane. Din păcate, traducerea automată nu este încă o tehnologie perfecționată, astfel încât pot apărea erori. Dacă preferați, puteți vizualiza versiunea originală în limba engleză aici:

Add Display or Edit Method via Extension in Dynamics 365

Deși planificarea utilizării metodelor de afișare sau editare în Dynamics este un aspect care ar trebui să vă facă, în general, să vă gândiți dacă ați putea proiecta soluția într-un mod diferit, uneori acestea sunt cea mai bună soluție.

În versiunile anterioare de Dynamics și Axapta, era foarte ușor să creezi metode de afișare sau editare în tabele și formulare, dar când recent a trebuit să creez prima mea metodă de editare în Dynamics 365, am descoperit că procedura pentru a face acest lucru este oarecum diferită.

Evident, există mai multe abordări valide, dar cea pe care o consider cea mai bună (atât din punct de vedere al intuitivității, cât și al aspectului frumos al codului) este utilizarea unei extensii de clasă. Da, poți folosi extensii de clasă pentru a adăuga metode și la alte tipuri de elemente decât clasele - în acest caz, un tabel, dar funcționează și pentru formulare.

Mai întâi, creați o clasă nouă. O puteți numi cum doriți, dar dintr-un anumit motiv trebuie să aibă sufixul „_Extension”. Să presupunem că trebuie să adăugați o metodă de afișare la CustTable, ați putea, de exemplu, să o numiți MyCustTable_Extension.

Clasa trebuie decorată cu ExtensionOf pentru a anunța sistemul ce extindeți, astfel:

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

Acum poți implementa metoda de afișare în această clasă, așa cum ai fi făcut direct în tabel în versiunile anterioare de Dynamics - „this” face referire chiar și la tabel, astfel încât să poți accesa câmpuri și alte metode.

De exemplu, o clasă cu o metodă de afișare simplă (și complet inutilă) care returnează doar numărul de cont al clientului ar putea arăta astfel:

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

        return this.AccountNum;
    }
}

Acum, pentru a adăuga metoda de afișare la un formular (sau la o extensie de formular, dacă nu puteți edita formularul direct), trebuie să adăugați manual un câmp la formular și să vă asigurați că utilizați tipul corect (șir de caractere în acest exemplu).

Apoi, pe control, ați seta DataSource la CustTable (sau oricare ar fi numele sursei de date CustTable) și DataMethod la MyCustTable_Extension.displayAccountNum (asigurați-vă că includeți numele clasei, altfel compilatorul nu poate găsi metoda).

Și ai terminat :-)

Actualizare: Nu mai este necesar să includeți numele clasei de extensie atunci când adăugați metoda de afișare la un formular, dar la momentul publicării inițiale, era necesar. Las informațiile aici în cazul în care unii cititori încă folosesc versiuni mai vechi.

Lectură suplimentară

Dacă ți-a plăcut această postare, s-ar putea să-ți placă și aceste sugestii:


Distribuie pe BlueskyDistribuie pe FacebookDistribuie pe LinkedInDistribuie pe TumblrDistribuie pe XDistribuie pe LinkedInPin pe Pinterest

Mikkel Christensen

Despre autor

Mikkel Christensen
Mikkel este creatorul și proprietarul miklix.com. El are peste 20 de ani de experiență ca programator de calculatoare/dezvoltator software profesionist și este în prezent angajat cu normă întreagă pentru o mare corporație europeană de IT. Atunci când nu scrie pe blog, își petrece timpul liber cu o gamă largă de interese, hobby-uri și activități, care se pot reflecta într-o anumită măsură în varietatea de subiecte abordate pe acest site.