Übung – Anweisungen für die Datenmanipulation verwenden
Sie sind Entwickler für CRONUS International Ltd. Sie haben gelernt, wie Anweisungen für die Datenmanipulation in AL verwendet werden, und möchten diese neue Fähigkeit nun in der Entwicklungsumgebung üben. Sie möchten Finanzbuchhaltungs-/Eintragsdatensätze in eine bestimmte Tabelle exportieren. Der Debitor muss diese Aufgabe und Quellcode durchführen, damit Sie einen Überblick über die Gesamtbeträge nach Debitor und Quellcode erhalten.
Aufgaben
Erstellen Sie eine neue AL-Erweiterung.
Erstellen Sie eine neue Tabelle.
Erstellen Sie eine Seite, die mit der Tabelle verknüpft ist.
Erstellen Sie eine Codeunit, um Daten aus verschiedenen Tabellen in die neu erstellte Tabelle zu kopieren.
Schritte
Erstellen Sie in Visual Studio Code in dem Projekt, das Sie vorher in diesem Lernpfad erstellt haben, einen neuen Ordner mit dem Namen: CustomerOverview
Erstellen Sie im Ordner CustomerOverview alle in den nächsten Schritten erwähnten neuen .al-Dateien.
Wählen Sie Datei > Neue Datei aus, und speichern Sie diese Datei anschließend durch Auswahl von Datei > Speichern. Geben Sie der Datei den Namen CustomerOverview.Table.al.
Erstellen Sie eine neue Tabelle in dieser Datei, indem Sie Codeausschnitte verwenden. Geben Sie
ttableein, und drücken Sie dann die TAB-Taste.Ändern Sie die ID in 50120 und name in Customer Overview.
Legen Sie die Eigenschaft DataClassification auf CustomerContent und die Eigenschaft Caption auf Customer Overview fest.
Entfernen Sie das Feld MyField.
Erstellen Sie die folgenden Felder. Sie können den Ausschnitt
tfieldverwenden.Feldnr. Feldname Datentyp Länge 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 Legen Sie die Eigenschaft DataClassification für jedes Feld in der Tabelle auf CustomerContent fest.
Legen Sie die Eigenschaft Caption für jedes Feld in der Tabelle fest.
Legen Sie den Primärschlüssel auf Lfd. Nr. fest.
Entfernen Sie den Abschnitt Globale Variablen.
Entfernen Sie die Tabellentrigger.
Ihre Datei ähnelt jetzt diesem Codeblock:
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; } } }Erstellen Sie eine neue Datei mit dem Namen: CustomerOverviewList.Page.al.
Erstellen Sie in dieser Datei eine neue Seite, indem Sie Codeausschnitte verwenden. Geben Sie
tpageein, und drücken Sie dann die TAB-Taste.Ändern Sie die ID in 50120 und name in Customer Overview List.
Legen Sie die Eigenschaft SourceTable auf Customer Overview und die Eigenschaft Caption auf Customer Overview List fest.
Legen Sie die Eigenschaft PageType auf List und die Eigenschaft UsageCategory auf Lists fest. Überprüfen Sie, ob die Eigenschaft ApplicationArea auf All gesetzt ist.
Legen Sie die Eigenschaft Editable auf false fest.
Stellen Sie sicher, dass im Layoutabschnitt ein Bereich content erstellt wurde. Falls nicht, erstellen Sie einen Bereich mit dem Namen content.
Ändern Sie den Namen des Repeaters in General.
Fügen Sie alle Felder der zuvor erstellten Tabelle Customer Overview im Repeater hinzu.
Stellen Sie sicher, dass die Eigenschaft ApplicationArea für alle Felder auf der Seite auf All gesetzt ist.
Fügen Sie auf der Seite allen Feldern aussagekräftige QuickInfos hinzu.
Entfernen Sie den Bereich factboxes.
Entfernen Sie den Aktionsbereich.
Ihre Datei ähnelt jetzt diesem Codeblock:
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; } } } } }Erstellen Sie eine neue Datei mit dem Namen: CustomerOverviewMgmt.CodeUnit.al.
Erstellen Sie eine neue Codeunit in dieser Datei, indem Sie Codeausschnitte verwenden. Geben Sie
tcodeunitein, und drücken Sie dann die TAB-Taste.Ändern Sie die ID in 50120 und name in Customer Overview Mgmt.
Fügen Sie die folgenden globalen Variablen hinzu.
Name Datentyp Untertyp CustomerOverview Datensatz Debitorenübersicht Debitor Datensatz Debitor SourceCode Datensatz Quellcode GLEntry Datensatz Sachposten NextEntryNo Integer Fügen Sie im
OnRun-Trigger den folgenden Code hinzu.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() = 0Öffnen Sie die Datei CustomerOverviewList.Page.al.
Fügen Sie der Seite einen Bereich actions hinzu.
Fügen im Bereich actions einen Abschnitt Processing hinzu.
Fügen im Abschnitt Processing eine Aktion hinzu.
Ändern Sie den Namen der Aktivität in Import Records, und legen Sie dann die folgenden Eigenschaften für die Aktivität fest:
Caption: Import Records
Image: Import
ApplicationArea: All
Erstellen Sie im Trigger
OnActioneine lokale Variable.Name Datentyp Untertyp UpdateCustomerOverview Codeunit Customer Overview Mgmt Rufen Sie die Codeunit
RunTriggeraus demOnAction-Trigger auf.Ihre Datei ähnelt jetzt diesem Codeblock:
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; } } } }Öffnen Sie die Datei launch.json im Ordner .vscode. Legen Sie die Einstellung startupObjectId auf 50120 und startupObjectType auf Page fest.
Veröffentlichen Sie Ihre Erweiterung in der Sandbox. Wählen Sie Anzeigen > Befehlspalette... (STRG+UMSCHALT+P) aus.
Geben Sie AL: Publish in das Suchfeld ein (oder drücken Sie die F5-Taste), und wählen Sie dann den Befehl aus der Liste aus.
Überprüfen Sie, ob die Microsoft Dynamics 365 Business Central-Anwendung gestartet und die Seite Customer Overview List angezeigt wird.
Testen Sie Ihre Erweiterung, indem Sie die Aktivität Import Records auswählen.