AL per sviluppatori dinosauri: la codeunit Confirm Management

Questo post prende ispirazione da una sessione, a cui ho partecipato all’ultima Directions EMEA 2023 a Lyon, riguardo le novità del linguaggio AL rivolto ai “vecchi” sviluppatori Nav (chiamati scherzosamente dinosauri). Tale sessione, tenuta dai mitici Arend-Jan Kauffmann ed Eric “waldo” Wauters ,era rivolta a chi ha sempre sviluppato in Nav e raccontavano alla platea le opportunità che offre il linguaggio AL per Business Central.  

Ci ho partecipato, fondamentalmente, per l’ammirazione che ho di questi di membri attivi della community, ma anche per vedere le facce di chi era in platea, perché alcuni, effettivamente, erano basiti dalle enormi potenzialità del linguaggio e anche sorpresi nel vedere che un qualcosa che facevano prima ora lo possono fare diversamente e forse anche meglio (e per meglio intendo ottimizzato).

Mi capita spesso di andare su codice scritto da altri e notare che ci sono vecchi retaggi di C/AL. Non mi definisco di certo un giovincello di Business Central (e prima di Nav) sono quasi 20 anni che lavoro su questo gestionale, ma non mi sento nemmeno così vecchio (alla mia età Gianluigi Buffon ancora giocava a calcio) dal rimanere indifferente alle nuove caratteristiche introdotte da Business Central e dal linguaggio AL.

Una di queste è come gestire i messaggi di conferma alle azioni utente, i cosiddetti Confirm.

Siamo sempre stati indottrinati che i messaggi di interazione utente venivano gestiti con del codice del tipo:

IF CONFIRM(‘Some question?’, FALSE) THEN

// do something

Con Business Central e AL language, possiamo gestire tutte le nostre interazioni con domanda a risposta Sì o No tramite la codeunit 27 “Confirm Management”. Questa codeunit ha solo due funzioni, una chiamata GetResponseOrDefault che gestisce con il valore di default passato come parametro se il codice che la contiene è, ad esempio, eseguito sotto NAS (quindi gestisce l’istruzione IF Guiallowed); mentre l’altra funzione GetResponse ritorna FALSE se la funzione è invocata senza UI.

In realtà questa codeunit è sviluppata per essere chiamata esternamente. Il lavoro sporco lo fa l’altra codeunit “Confirm Management Impl.” che è identificata con l’ID 27.

Un esempio di codice che possiamo fare, utilizzando, appunto la codeunit “Confirm Management” è tipo questo:

In pratica con questo frammento di codice, passiamo alla funzione GetResponseOrDefault il messaggio contenuto nella costante WhseShipShowWarningQst e poi passiamo false, come valore di default qualora la funzione venga eseguita sotto NAS.

Con questa codeunit possiamo dimenticarci di “farcire” il nostro software con l’istruzione IF GUIALLOWED, è pur sempre una riga di codice in meno da scrivere e più tempo per pensare a quella prossima da scrivere 😉

Questo post ha trattato un argomento di per sé semplice, ma vuole anche far riflettere lo sviluppatore software di Business Central: il gestionale è cambiato, l’interfaccia è cambiata, i cambiamenti sono stati sia per gli utenti che per chi deve fare formazione, ma il cambiamento è anche sotto il cofano; quindi lo sviluppatore moderno di Business Central non deve rimanere un dinosauro, ma evolversi in qualcosa di diverso.

Lascia una risposta