Funzioni AL che restituiscono un record: bene ma non benissimo

Salve lettore, in questo articolo voglio porre la tua attenzione a un aspetto del linguaggio AL che da qualche versione  è presente.

Mi riferisco alla possibilità di creare funzioni AL con valori di ritorno oggetti complessi. Da un paio di versioni è possibile sviluppare una funzione AL che ha come valore di ritorno un record. Apparentemente potrebbe essere una possibilità interessante, ma ti voglio spiegare come questo aspetto non sempre è utilizzabile.

Proviamo a costruire una funzione che restituisce un set di record della tabella Item Ledger Entry filtrata per articolo.

Ora la funzione di cui sopra, proviamola ad innestare all’interno di un loop tramite un repeat-until.

Se questo codice venisse eseguito, ti renderai conto che il repeat-until sarà un ciclo infinito e dovresti trovare un qualche modo per uscire dal loop. Potresti, allora, utilizzare la funzione copy, come segue.

Ma anche in questo caso, quando verrà eseguita la funzione verrà emesso del tipo A ‘var’ argument must be an assignable variable. E allora quando potremmo usare una funzione che restituisce un record? Consiglio di utilizzarlo come costruttore, cioè come una funzione che restituisce un record e la funzione, passarla poi a una variabile dello stesso record in modo che il puntatore sia su quel record. In tutti gli altri casi ha sempre senso passare tramite var il record nei parametri della funzione.

Altri oggetti, come ad esempio le pagine o le codeunit, hanno un senso ad essere restituite da una funzione, ma i record utilizza ancora la vecchia modalità che è più utile e performante.

Spero che questo piccolo articolo sulla programmazione in AL ti abbia dato uno spunto in più per i tuoi prossimi progetti AL.

Lascia una risposta