Power Platform Pills #7: User Defined Functions
Power Platform Pills #7: User Defined Functions

Power Platform Pills #7: User Defined Functions

Autore: Jljch Nicosia

La serie “PowerPlatform Pills” è dedicata alla piattaforma progettata per fornire soluzioni intelligenti e flessibili per affrontare le sfide aziendali. Esploreremo diverse funzionalità e tecniche avanzate per massimizzare il potenziale di Power Platform

La Power Platform di Microsoft offre un ecosistema integrato di strumenti, tra cui Power Apps, Power Automate e Power BI, progettati per semplificare e potenziare la creazione di soluzioni aziendali personalizzate.

PowerPlatform Pills” è stata pensata per fornire approfondimenti dettagliati e una guida pratica su argomenti chiave, dedicati a un pubblico di sviluppatori, con differenti livelli di esperienza nella piattaforma.

Dopo più di quattro anni di esperienza con Power Apps, ho esplorato varie possibilità per creare soluzioni che consentono di risparmiare tempo per esigenze future simili. Oggi voglio parlarvi di una funzionalità di Power Apps che potrebbe semplificare il nostro modo di sviluppare applicazioni con questa tecnologia: le User Defined Functions (UDF).

Nonostante le attuali limitazioni, riconosco l'impegno di Microsoft nel fornire strumenti sempre più avanzati per migliorare l'efficienza e la qualità del lavoro.

User Defined Functions (UDF): cosa sono

Sono funzioni create dall’utente che possono essere definite in un punto centrale con un nome specifico, accettare parametri di input e restituire un risultato. 
Una volta creata, una UDF può essere richiamata da qualsiasi parte dell’app, proprio come le funzioni predefinite di Power Apps.
Se ti è capitato di dover riscrivere lo stesso codice più volte (e non ci credo che non vi sia mai capitato!) o a gestire funzioni complesse e ripetitive, allora questo articolo fa per te.

Immagina di poter creare funzioni personalizzate che possono essere riutilizzate in diverse parti della tua applicazione, semplificando sia il processo di sviluppo, che la manutenzione del codice. 
Le UDF ti permettono di fare proprio questo, offrendo una soluzione efficace per migliorare l’efficienza e la leggibilità del vostro codice.

I benefici riscontrati includono una maggiore modularità del codice e una facilità di manutenzione. Tuttavia, è importante notare che questa funzionalità potrebbe essere ancora in fase iniziale e presenta alcuni limiti, che verranno descritti a breve. Si consiglia comunque di eseguire test indipendenti sull'argomento.

User Defined Functions (UDF): come abilitarle

È importante "ricordare" che le UDF sono attualmente una funzionalità sperimentale, quindi dovremo attivarle manualmente:

  1. Accedi a Power Apps Studio: Apri Power Apps e accedi all’app che desideri modificare.
  2. Vai alle impostazioni: Clicca sull’icona dell’ingranaggio in alto a destra per accedere alle impostazioni dell’app.

Power_Platofrom_Pills_UDF1

3.   Attenzione alla versione: Vai alla scheda Supporto e assicurati che la versione di creazione sia 3.24013 o successiva

Power_Platofrom_Pills_UDF2

4. Abilita la funzionalità sperimentali: Nella sezione “Funzionalità”, scorri verso il basso fino a trovare la sezione “Funzionalità sperimentali”. Qui, cerca l’opzione “User Defined Functions” e attivala.

Power_Platofrom_Pills_UDF3

5.  Salva e ricarica: Dopo aver abilitato le UDF, salva le modifiche e ricarica l’app per applicare le nuove impostazioni.

Sintassi delle UDF in PowerFx

Per creare una funzione definita dall’utente in PowerFx, utilizziamo la seguente sintassi:

FunctionName (Parameter:Type, Parameter:Type):OutputType = [Your Formula here]

Questa struttura permette di definire il nome della funzione, i parametri con i rispettivi tipi di dati di input e il tipo di output. Di seguito ti presenterò un esempio pratico. 

Calcolo del prezzo totale con sconti personalizzati

Immagina di avere un'app Power Apps che il tuo team di vendita usa per calcolare i prezzi totali degli ordini dei clienti, tenendo conto di sconti personalizzati basati su vari criteri (come quantità acquistata, tipo di cliente, promozioni stagionali, ecc.). 

Senza le UDF, dovresti ripetere il codice per il calcolo degli sconti in ogni schermata o componente dove è necessario fare questo calcolo. Questo non solo aumenta la complessità del codice, ma rende anche più difficile la manutenzione e l'aggiornamento. 

Definizione della Funzione: 
Crea una UDF chiamata CalcolaPrezzoTotale che accetta i seguenti parametri: 
•    Prezzo unitario (Number)
•    Quantità (Number)
•    Sconto (Number)

La funzione calcolerà il prezzo totale applicando lo sconto e restituirà il valore risultante.

Power_Platofrom_Pills_UDF4Tecnica di gestione degli errori per le funzioni definite dall'utente

Le funzioni definite dall'utente possono generare errori, quindi è fondamentale includere la gestione degli errori nella loro definizione. Nel mio esempio CalcolaPrezzoTotale, ho utilizzato la funzione IfError per restituire 0 nei casi in cui il codice generi un errore, come quando le variabili prezzo unitario, quantità o sconto sono vuote.

CalcolaPrezzoTotale(prezzoUnitario: Number, quantità: Number, sconto: Number): Number =

IfError(

   prezzoUnitario * quantità * (1 - sconto / 100),

   0

);

 

Utilizzo della Funzione

Da ogni schermata o componente in cui è necessario calcolare il prezzo totale, puoi semplicemente richiamare la UDF CalcolaPrezzoTotale con i parametri appropriati necessari al calcolo. 

Power_Platofrom_Pills_UDF5

User Defined Functions (UDF): perché utilizzarle

  • Runtime: L’esecuzione avviene a runtime, migliorando sensibilmente l'esperienza utente (UX).
  • Riutilizzabilità: La funzione CalcolaPrezzoTotale può essere richiamata ovunque nell’applicazione, riducendo la duplicazione del codice.
  • Manutenzione Semplificata: Qualsiasi modifica alla logica di calcolo degli sconti deve essere fatta solo nella UDF, rendendo più facile aggiornare e mantenere il codice.
  • Chiarezza: Il codice diventa più leggibile e modulare, facilitando la comprensione e la collaborazione tra i membri del team. 

Limiti da tenere in considerazione

Seppur offendo molti vantaggi, è importante notare che questa tecnica non è priva di limitazioni:

  1. Funzionalità sperimentali: Le funzioni definite dall’utente di Power Apps sono attualmente una funzionalità sperimentale. Questo significa che potrebbero non essere completamente stabili e potrebbero subire modifiche o miglioramenti futuri; inoltre potrebbero non essere compatibili con tutte le versioni di Power Apps.
  2. Parametri obbligatori: Tutti i parametri sono al momento obbligatori e non c’è modo di impostare parametri facoltativi. Questo può rendere le funzioni meno flessibili, poiché ogni volta che si chiama una funzione, è necessario fornire tutti i parametri richiesti.
  3. Tipologie dati limitate: Mancano i tipi di dati per record e tabella, il che significa che non possono essere utilizzati come input o output. Questo può limitare la complessità delle funzioni che puoi creare e utilizzare. 
  4. Accessibilità agli oggetti limitata: All’interno di un componente, non è possibile accedere ad oggetti dell’app ospitante. Questo può limitare l’interazione e l’integrazione con parti dell’app, rendendo più complessa la gestione dei dati e delle funzionalità.

Queste limitazioni possono rappresentare un ostacolo in alcuni scenari, ma con una buona progettazione, le User Defined Functions possono comunque offrire grandi vantaggi.

Spero che le User Defined Functions vi siano utili e che possano semplificare il vostro lavoro con Power Apps! 

Power Platform Pills: i precedenti articoli 

  1. Child Flow
  2. How to debug
  3. La delega dell'attività
  4. La gestione delle eccezioni in Power Automate
  5. Environment Variables
  6. Email di approvazione inviate dalla Shared Mail Box
Jljch Nicosia

Jljch Nicosia

Nel settore IT da oltre 20 anni, ha maturato una solida esperienza con 9 di sviluppo di Document Management Systems e 7 di sviluppo di sistemi di wordprocessing.
E' laureato in Informatica, ma si ritiene in “ continuous improvement ”. Ha conseguito diverse certificazioni Microsoft e ha competenze in SQL querying, MS600, PL200, PL400 e PL600.
In Impresoft 4ward è Software Solution Analyst da 4 anni. Si occupa Power Platform, SharePoint e trasformazione digitale.