Righe di codice da scrivere per la verifica della sintassi di un indirizzo email all’interno di Microsoft Dynamics AX.
Abbiamo visto in questo articolo come è possibile, utilizzando le funzionalità di AX, spedire una mail a determinati indirizzi. Ma cosa succede se l’indirizzo del destinatario è stato inserito con una sintassi errata? A questa domanda vi è una semplice risposta: il programma, se non correttamente realizzato, andrà in crash. Nel caso di invio notturno dei documenti, come ad esempio ordini, fatture ecc…, in formato EDI l’interruzione del programma potrebbe portare ad un invio incompleto dei dati comportando un disservizio sia per il cliente che per l’azienda.. Avremmo di conseguenza dei clienti/fornitori che non avranno ricevuto il/i documento/i EDI.
Per ovviare a questo problema possiamo percorrere due strade:
- Si inserisce all’interno del programma un try e catch per la gestione delle eccezioni
- Si inserisce un controllo, durante la digitazione dell’indirizzo email, per verificarne la sintassi
Quest’ultimo punto è quello che verrà preso in considerazione in questo articolo. Infatti andremo a vedere come è possibile, in fase di modifica del campo email, verificare che quanto inserito rispetti le regole generali di un indirizzo email.
Tale controllo può essere inserito in varie parte all’interno di un programma, ma è consigliato inserire il controllo:
- Nel metodo ValidateWrite della tabella
- Nel metodo ModifiedField della tabella
Per il controllo sfrutteremo il metodo ValidateEmail della classe SysEmailDistributor(funzione standard di ax).
In questo primo esempio abbiamo modificato il metodo ValidateWrite della tabella per non permettere il salvataggio del record in caso in cui vi sia un errore di sintassi, relativo all’email, all’interno del caso MyField.
public boolean validateWrite() { boolean ret; if (!SysEmailDistributor::validateEmail(this.MyField) && this.MyField) checkFailed("@SYS99572"); ret = super(); return ret; }
In questo secondo ed ultimo esempio abbiamo effettuato il controllo sulla sintassi di un indirizzo email modificando il metodo ModifiedField della tabella in questo modo:
public void modifiedField(fieldId _fieldId) { super(_fieldId); switch(_fieldId) { //Controllo formato email se in errore imposto valore precedente alla modifica case fieldnum(MyTable, MyField) : if (!SysEmailDistributor::validateEmail(this.MyField) && this.MyField) { checkFailed("@SYS99572"); this.MyField = this.orig().MyField; } break; default : break; } }
*Metodo creato e testato sulla versione 4 di Microsoft Dynamics AX.
Commenta per primo