Aggiungere il metodo di visualizzazione o modifica tramite estensione in Dynamics 365
Pubblicato: 16 febbraio 2025 alle ore 11:55:38 UTC
In questo articolo spiego come utilizzare un'estensione di classe per aggiungere un metodo di visualizzazione a una tabella e a un modulo in Dynamics 365 for Operations, inclusi esempi di codice X++.
Add Display or Edit Method via Extension in Dynamics 365
Sebbene pianificare di utilizzare metodi di visualizzazione o modifica in Dynamics sia qualcosa che in genere dovrebbe farti considerare la possibilità di progettare la tua soluzione in un modo diverso, a volte rappresentano la soluzione migliore.
Nelle versioni precedenti di Dynamics e Axapta era molto semplice creare metodi di visualizzazione o modifica su tabelle e moduli, ma quando di recente ho dovuto creare il mio primo metodo di modifica in Dynamics 365, ho scoperto che la procedura per farlo è leggermente diversa.
Ci sono evidentemente diversi approcci validi, ma quello che trovo migliore (sia in termini di intuitività che di bellezza del codice) è usare un'estensione di classe. Sì, puoi usare le estensioni di classe per aggiungere metodi ad altri tipi di elementi oltre alle classi, in questo caso una tabella, ma funziona anche per i form.
Per prima cosa, crea una nuova classe. Puoi chiamarla come vuoi, ma per qualche motivo deve avere il suffisso "_Extension". Diciamo che devi aggiungere un metodo di visualizzazione a CustTable, potresti ad esempio chiamarla MyCustTable_Extension.
La classe deve essere decorata con ExtensionOf per far sapere al sistema cosa si sta estendendo, in questo modo:
public final class MyCustTable_Extension
{
}
Ora puoi semplicemente implementare il tuo metodo di visualizzazione in questa classe, come avresti fatto direttamente sulla tabella nelle versioni precedenti di Dynamics: "this" fa persino riferimento alla tabella, così puoi accedere ai campi e ad altri metodi.
Ad esempio, una classe con un metodo di visualizzazione semplice (e completamente inutile) che restituisce semplicemente il numero di conto del cliente potrebbe apparire così:
public final class MyCustTable_Extension
{
public display CustAccount displayAccountNum()
{
;
return this.AccountNum;
}
}
Ora, per aggiungere il metodo di visualizzazione a un modulo (o a un'estensione del modulo, se non è possibile modificare direttamente il modulo), è necessario aggiungere manualmente un campo al modulo e assicurarsi di utilizzare il tipo corretto (stringa in questo esempio).
Quindi, sul controllo imposterai DataSource su CustTable (o qualunque sia il nome della tua origine dati CustTable) e DataMethod su MyCustTable_Extension.displayAccountNum (assicurati di includere il nome della classe, altrimenti il compilatore non riuscirà a trovare il metodo).
E il gioco è fatto :-)
Aggiornamento: non è più necessario includere il nome della classe di estensione quando si aggiunge il metodo di visualizzazione a un form, ma al momento della pubblicazione originale lo era. Lascio qui le informazioni nel caso in cui alcuni lettori stiano ancora utilizzando versioni precedenti.