Wave 1 - Development
Vediamo di seguito le novità più salienti e interessanti di questa nuova Wave, partendo con le novità lato sviluppo, che solitamente sono quelle che catturano in primi la mia attenzione.
Debug system application
Con l’introduzione del tipo dati SecureText è stata consentita la possibilità di debuggare la system application. Ciò rappresenta un vantaggio sia per lo sviluppo che per la risoluzione dei problemi, nonché per fornire contributi Open Source.
Multiple file uploads
Finalmente è possibile implementare la gestione di più caricamenti di file per le customizzazioni che lo richiedono.
Define tooltips on table fields
Andiamo con ordine: cosa sono i tooltips?
Anche l’interfaccia utente meglio progettata e pensata può generare confusione negli utenti. I tooltips rappresentano delle descrizioni immediate di un campo o di una funzionalità che permettono agli utenti di rispondere alle principali domande e perplessità (“Quali dati posso inserire?”, “A cosa serve?” …), senza necessariamente accedere a un manuale utente o a una guida online.
Fino alla penultima versione di BC era possibile inserire i tooltips dei campi solo ed esclusivamente all’interno delle pagine: ciò significava che a fronte di una tabella e più pagine, per uno stesso campo il tooltip doveva essere inserito in ciascuna pagina.
Finalmente, dalla BC24 è possibile specificare i tooltip dei campi direttamente in tabella, di modo che questi siano validi per ciascuna pagina creata in cui è esposto il suddetto campo e, non da meno, un notevole risparmio di tempi di sviluppo (che non guasta mai 😊).
InstructionalText functionality
Con la BC24 è arrivata la nuova funzionalità degli InstructionalText, ovvero i segnaposto, solo per i campi testo (BigText, Text, Code, Guid).
Quante volte è capitato di inserire dei campi di testo, magari con significati simili tra loro, e di avere la necessità di informare l’utente che quel campo deve avere un certo valore perché ha un certo significato all’interno della tabella?
Il tooltip aiuta sicuramente molto l’utente, ma per avere un’esperienza d’uso migliore, utilizzare i segnaposto sui campi potrebbe rappresentare una soluzione ancor più ottimale, in quanto permettono di “comunicare” istantaneamente all’utente il valore da inserire o il significato di suddetto campo.
Gli InstructionalText possono essere inseriti all’interno delle pages o pageextensions.

Il risultato ottenuto all’interno del client è, per esempio, il seguente:

Chiaramente non è visibile se il campo contiene già un valore per il record selezionato e, oltre a ciò, non è visibile se la pagina è aperta in modalità di visualizzazione.
Use in-client page scripting tool for acceptance testing
Con lo strumento di scripting delle pagine, clienti e consulenti possono facilmente registrare e riprodurre i test degli utenti direttamente nel client Web di Business Central.
Lo strumento di scripting delle pagine nel client Web Business Central consente di registrare le proprie azioni, come l’apertura di pagine o l’immissione di dati, e di riprodurle. È possibile salvare la registrazione e condividerla con altri per riprodurla in futuro. Un caso d’uso importante per lo strumento è l’acquisizione e l’esecuzione di test di accettazione da parte degli utenti, che rappresenta anche l’obiettivo iniziale di questa ondata di rilascio.
Nel web client, la pagina dello strumento di scripting è accessibile dal menù delle Impostazioni. L’azione dello strumento di scripting, chiaramente, è visibile solo se l’utente ha i permessi di utilizzo del tool.



Durante la registrazione, puoi inserire manualmente passaggi speciali facendo clic con il pulsante destro del mouse su un controllo di pagina, come un campo, e selezionando un’opzione appropriata. Di seguito alcuni esempi: copia e incolla dalla tastiera, incollare informazioni di sessione, convalidare uno specifico risultato/campo, inserimento di passaggi di diramazione condizionata, ecc…
Define extension objects in same app as their base object
Quest’ultima novità è stata volutamente lasciata in coda…
rappresenta una delle novità che mi stanno più a cuore e che ritengo la più importante e significativa.
In realtà questa novità rappresenta due cambiamenti:
- La possibilità di creare un’estensione di un oggetto nella stessa app in cui è stato creato e dichiarato. Quindi, con questa nuova funzionalità, è possibile definire sia l’oggetto base (base object) che gli oggetti estensione (extension object) nella stessa app. Tuttavia, chiaramente, dal base object non è possibile accedere agli elementi definiti nell’extension object.
Secondo me rappresenta la novità meno interessante e ad oggi, personalmente, non ne vedo una concreta applicazione. - La possibilità di dichiarare, all’interno di una stessa app, più estensioni per uno stesso oggetto (target).
Ciò significa che, in una stessa app, posso dichiarare 2 o più tableextension per una stessa tabella (esempio customer) e lo stesso avviene per le pageextension.

Conclusione
Abbiamo impatti differenti lato SQL? Più table? No, perché dalla BC23 tutte le estensioni di tabella sono state “raggruppate” in un’unica tabella contenente la chiave e i campi aggiuntivi delle varie app.
Questa rappresenta una bella novità e sicuramente una facilitazione. Infatti, il motivo principale per la quale è stata introdotta è la possibilità di supportare la separazione dei contenuti dell’app in “argomenti”, soprattutto per le app di grandi dimensioni, così come è avvenuto e sta avvenendo per la nuova Business Foundation Layer (l’avete già aperta per vederne la struttura e il contenuto, vero?! 😁), app che racchiuderà tutte le funzioni di pubblica utilità.
In un’app di grandi dimensioni, in cui si desideri una separazione per moduli, è abbastanza comune l’esigenza di creare un’estensione di una tabella (o altri oggetti) per più moduli. Le novità sopradescritte permettono appunto di effettuare queste separazioni (senza dover specificare l’estensione all’interno di un solo modulo, anche se la stessa extension contiene riferimenti a più argomenti), gestendo l’app in modo più efficiente.

Marica Piazzalunga
Microsoft Dynamics 365 PM & Consultant