Esercizio - Uso delle istruzioni di manipolazione dei dati
In qualità di sviluppatore per CRONUS International Ltd. si è appreso come usare le istruzioni di manipolazione dei dati in AL e si desidera ora mettere in pratica questa nuova competenza nell'ambiente di sviluppo. Si desidera essere in grado di esportare i record dei movimenti C/G in una tabella specifica. Il cliente deve completare questa attività e il codice sorgente in modo da avere una panoramica degli importi totali per cliente e codice sorgente.
Attività
Creazione di una nuova estensione AL.
Creazione di una nuova tabella.
Creazione di una pagina collegata alla tabella.
Creazione di una codeunit per copiare i dati da tabelle diverse nella tabella appena creata.
Passaggi
In Visual Studio Code, nel progetto creato in precedenza in questo percorso di apprendimento creare una nuova cartella denominata CustomerOverview
Creare tutti i nuovi file .al menzionati nei passaggi successivi nella cartella CustomerOverview.
Selezionare File > Nuovo file, quindi salvare il file selezionando File > Salva. Assegnare al file il nome CustomerOverview.Table.al.
Creare una nuova tabella in questo file usando frammenti di codice. Immettere
ttable, quindi premere TAB.Modificare l'ID in 50120 e il nome in "Customer Overview".
Impostare la proprietà DataClassification su CustomerContent e la proprietà Caption su Customer Overview.
Rimuovere il campo MyField.
Creare i campi seguenti. È possibile usare il frammento di codice
tfield.N. campo Nome campo Tipo di dati Lunghezza 1 Entry No. Integer 2 Customer No. Code 20 3 Customer Name Text 100 4 Source Code Code 20 5 Amount Decimal 6 LastRunDate DateTime Impostare la proprietà DataClassification per ogni campo della tabella su CustomerContent.
Impostare la proprietà Caption per ogni campo della tabella.
Impostare Chiave primaria su Entry No.
Rimuovere la sezione delle variabili globali.
Rimuovere i trigger di tabella.
Il file ora è analogo a questo blocco di codice:
table 50120 "Customer Overview" { DataClassification = CustomerContent; Caption = 'Customer Overview'; fields { field(1; "Entry No."; Integer) { DataClassification = CustomerContent; Caption = 'Entry No.'; } field(2; "Customer No."; code[20]) { DataClassification = CustomerContent; Caption = 'Customer No.'; } field(3; "Customer Name"; Text[100]) { DataClassification = CustomerContent; Caption = 'Customer Name'; } field(4; "Source Code"; Code[20]) { DataClassification = CustomerContent; Caption = 'Source Code'; } field(5; "Amount"; Decimal) { DataClassification = CustomerContent; Caption = 'Amount'; } field(6; "LastRunDate"; DateTime) { DataClassification = CustomerContent; Caption = 'LastRunDate'; } } keys { key(Pk; "Entry No.") { Clustered = true; } } }Creare un nuovo file denominato CustomerOverviewList.Page.al.
Creare una nuova pagina in questo file usando frammenti di codice. Immettere
tpage, quindi premere TAB.Modificare l'ID in 50120 e il nome in Customer Overview List.
Impostare la proprietà SourceTable su Customer Overview e la proprietà Caption su Customer Overview List.
Impostare la proprietà PageType su List e la proprietà UsageCategory su Lists. Verificare che la proprietà ApplicationArea sia impostata su All.
Impostare la proprietà Editable su false.
Verificare che sia stata creata un'area content nella sezione layout. In caso contrario, creare un'area denominata content.
Cambiare il nome del ripetitore in General.
Aggiungere tutti i campi della tabella Customer Overview creata in precedenza al ripetitore.
Verificare che la proprietà ApplicationArea sia impostata su All per tutti i campi nella pagina.
Aggiungere suggerimenti significativi a tutti i campi della pagina.
Rimuovere l'area factboxes.
Rimuovere l'area actions.
Il file ora è analogo a questo blocco di codice:
page 50120 "Customer Overview List" { PageType = List; ApplicationArea = All; UsageCategory = Lists; SourceTable = "Customer Overview"; Caption = 'Customer Overview List'; Editable = false; layout { area(Content) { repeater(General) { field("Entry No."; Rec."Entry No.") { ToolTip = 'Specifies the value of the Entry No. field.'; ApplicationArea = All; } field("Customer No."; Rec."Customer No.") { ToolTip = 'Specifies the value of the Customer No. field.'; ApplicationArea = All; } field("Customer Name"; Rec."Customer Name") { ToolTip = 'Specifies the value of the Customer Name field.'; ApplicationArea = All; } field("Source Code"; Rec."Source Code") { ToolTip = 'Specifies the value of the Source Code field.'; ApplicationArea = All; } field(Amount; Rec.Amount) { ToolTip = 'Specifies the value of the Amount field.'; ApplicationArea = All; } field(LastRunDate; Rec.LastRunDate) { ToolTip = 'Specifies the value of the LastRunDate field.'; ApplicationArea = All; } } } } }Creare un nuovo file denominato CustomerOverviewMgmt.CodeUnit.al.
Creare una nuova codeunit in questo file usando frammenti di codice. Immettere
tcodeunit, quindi premere TAB.Modificare l'ID in 50120 e il nome in Customer Overview Mgmt.
Aggiungere le seguenti variabili globali:
Nome Tipo di dati Sottotipo CustomerOverview Record CustomerOverview Customer Record Customer SourceCode Record Source Code GLEntry Record G/L Entry NextEntryNo Integer Nel trigger
OnRunaggiungere il codice seguente.Clear(SourceCode); Clear(CustomerOverview); Clear(GLEntry); if CustomerOverview.FindLast() then NextEntryNo := CustomerOverview."Entry No." + 1 else NextEntryNo := 1; if SourceCode.FindSet() then repeat if Customer.FindSet() then repeat GLEntry.SetRange("Source Type", GLEntry."Source Type"::Customer); GLEntry.SetRange("Source Code", SourceCode.Code); GLEntry.SetRange("Source No.", Customer."No."); if GLEntry.FindSet() then begin GLEntry.CalcSums(GLEntry.Amount); CustomerOverview."Entry No." := NextEntryNo; CustomerOverview."Customer No." := Customer."No."; CustomerOverview."Customer Name" := Customer.Name; CustomerOverview."Source Code" := SourceCode.Code; CustomerOverview.Amount := GLEntry.Amount; CustomerOverview.LastRunDate := CurrentDateTime(); CustomerOverview.Insert(); NextEntryNo += 1; end; until Customer.Next() = 0; until SourceCode.Next() = 0Aprire il file CustomerOverviewList.Page.al.
Aggiungere un'area actions alla pagina.
Nell'area actions aggiungere una sezione Processing.
Nella sezione Processing aggiungere un'azione.
Modificare il nome dell'azione in Import Records e impostare quindi le proprietà seguenti per l'azione:
Caption: Import Records
Image: Import
ApplicationArea: All
Nel trigger
OnActioncreare una variabile locale.Nome Tipo di dati Sottotipo UpdateCustomerOverview Codeunit Customer Overview Mgmt Chiamare la codeunit
RunTriggerdal triggerOnAction.Il codice ora è analogo a questo blocco di codice:
page 50120 "Customer Overview List" { PageType = List; ApplicationArea = All; UsageCategory = Lists; SourceTable = "Customer Overview"; Caption = 'Customer Overview List'; Editable = false; layout { area(Content) { repeater(General) { field("Entry No."; Rec."Entry No.") { ToolTip = 'Specifies the value of the Entry No. field.'; ApplicationArea = All; } field("Customer No."; Rec."Customer No.") { ToolTip = 'Specifies the value of the Customer No. field.'; ApplicationArea = All; } field("Customer Name"; Rec."Customer Name") { ToolTip = 'Specifies the value of the Customer Name field.'; ApplicationArea = All; } field("Source Code"; Rec."Source Code") { ToolTip = 'Specifies the value of the Source Code field.'; ApplicationArea = All; } field(Amount; Rec.Amount) { ToolTip = 'Specifies the value of the Amount field.'; ApplicationArea = All; } field(LastRunDate; Rec.LastRunDate) { ToolTip = 'Specifies the value of the LastRunDate field.'; ApplicationArea = All; } } } } actions { area(Processing) { action("Import Records ") { Caption = 'Import Records'; ToolTip = 'Import Records'; ApplicationArea = All; Image = Import; trigger OnAction() var CustomerOverviewMgmt: Codeunit "Customer Overview Mgmt"; begin CustomerOverviewMgmt.Run(); end; } } } }Aprire il file launch.json nella cartella .vscode. Impostare startupObjectId su 50120 e startupObjectType su Page.
Pubblicare l'estensione nella sandbox. Selezionare Visualizza > Riquadro comandi... (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 Customer Overview List sia visualizzata.
Testare l'estensione selezionando l'azione Importa record.