Esercizio - Eventi e trigger
Si lavora per CRONUS International Ltd come sviluppatore e si desidera creare una codeunit che esegua una convalida aggiuntiva quando un utente immette un indirizzo nella scheda cliente. Quando l'utente immette un segno più (+) nell'indirizzo, è necessario che gli appaia un messaggio.
Attività
Creazione di una codeunit.
Creazione di una procedura locale denominata CheckForPlusSign.
Verifica della presenza di un segno più (+) nel parametro.
Creazione di un sottoscrittore di eventi che effettua la sottoscrizione di un evento OnBeforeValidate nel campo Indirizzo della scheda cliente.
Passaggi
Selezionare File > Nuovo file, quindi salvare il file selezionando File > Salva. Assegnare a questo file il nome Validations.CodeUnit.al.
Creare una nuova codeunit in questo file usando frammenti di codice. Immettere tcodeunit e premere il tasto TAB.
Modificare l'ID in 50111 e il nome in Validations.
Aggiungere una procedura locale chiamata CheckForPlusSign nella codeunit nella sezione var. A tale scopo è possibile usare il frammento tprocedure.
Rimuovere la sezione var per le variabili globali della codeunit.
Aggiungere un parametro con il nome TextToVerify di tipo Text alla procedura.
Rimuovere la sezione var per le variabili locali della codeunit.
Mostrare una finestra di messaggio se si trova un segno più (+) nel parametro TextToVerify. A tale scopo è possibile usare la funzione Contains.
Confrontare il proprio codice con questo esempio. Il codice dovrebbe essere simile al seguente:
codeunit 50111 Validations { trigger OnRun() begin end; local procedure CheckForPlusSign(TextToVerify: Text) begin if TextToVerify.Contains('+') then Message('A + sign has been found.'); end; }Creare un sottoscrittore di eventi per l'evento OnBeforeValidate nel campo Address della pagina Scheda cliente. Usare il frammento teventsub.
Impostare objecttype su Table.
Impostare la pagina su Database::Customer.
Impostare OnSomeEvent su OnAfterValidateEvent.
Impostare ElementName su Address.
Impostare SkipMissingLicense e SkipOnMissingPermission su false.
Rinominare MyProcedure in TableCustomerOnAfterValidateAddress.
Aggiungere un parametro: Rec: Record Customer
Confrontare il proprio codice con questo esempio. Il codice dovrebbe essere simile al seguente:
codeunit 50111 Validations { trigger OnRun() begin end; [EventSubscriber(ObjectType::Table, Database::Customer, 'OnAfterValidateEvent', 'Address', false, false)] local procedure TableCustomerOnAfterValidateEventAddress(var Rec: Record Customer) begin CheckForPlusSign(Rec.Address); end; local procedure CheckForPlusSign(TextToVerify: Text) begin if TextToVerify.Contains('+') then Message('A + sign has been found.'); end; }Chiamare CheckForPlusSign all'interno del sottoscrittore di eventi. Passare Rec.Address come parametro per la funzione CheckForPlusSign.
Aprire il file launch.json nella cartella .vscode. Impostare startupObjectId su 22 e startupObjectType su Page.
Pubblicare l'estensione nella sandbox. Selezionare Visualizza > Riquadro comandi... (oppure usare i tasti di scelta rapida CTRL+MAIUSC+P).
Immettere AL: Publish nella casella di ricerca (o premere F5) e selezionare il comando dall'elenco.
Verificare che l'applicazione Microsoft Dynamics 365 Business Central sia avviata e che la pagina Lista clienti sia visualizzata.
Aprire una scheda cliente a caso e immettere un segno più (+) nel campo dell'indirizzo del cliente. Premere INVIO. Dovrebbe apparire una finestra di messaggio.