Übung – Erstellen Sie eine Rollencenter-Seite mit einer Aktivitätsseite

Abgeschlossen

Szenario

Sie sind Entwickler für CRONUS International Ltd. und möchten eine Rollencenter-Seite erstellen sowie einige Cues im Rollencenter anzeigen.

Aufgaben

  • Erstellen Sie eine neue Erweiterung.

  • Erstellen Sie eine neue Cue-Tabelle.

  • Erstellen Sie eine Aktivitätsseite.

  • Erstellen Sie eine Rollencenter-Seite, und fügen Sie die Aktivitätsseite zum Rollencenter hinzu.

  • Erstellen Sie eine Abfrage und fügen Sie damit Daten in ein Feld in der Cue-Tabelle ein.

  • Die Cue-Tabelle aktualisieren

  • Die Seite Aktivitäten aktualisieren

  • Ein Profil erstellen

  • Die Erweiterung herausgeben

Schritte

Eine neue Erweiterung erstellen

  1. Starten Sie Visual Studio Code.

  2. Wählen Sie Ansicht > Erweiterungen (STRG+UMSCHALT+X) aus.

  3. Geben Sie AL Language in das Suchfeld Nach Extensions in Marketplace suchen ein.

  4. Wählen Sie dann die grüne Schaltfläche Installieren aus.

  5. Erstellen Sie ein neues AL-Erweiterungsprojekt. Wählen Sie Anzeigen > Befehlspalette ... (STRG+UMSCHALT+P) aus.

  6. Geben Sie AL: Go! in das Suchfeld ein, und wählen Sie den Befehl aus der Liste aus.

  7. Akzeptieren Sie den vorgeschlagenen Pfad (oder geben Sie einen anderen Pfad ein).

  8. Wählen Sie die Zielplattform neueste (höchste) Version von Business Central aus.

  9. Wählen Sie als Entwicklungsendpunkt Microsoft Cloud Sandbox aus.

  10. Laden Sie die Anwendungssymbole herunter. Wählen Sie Anzeigen > Befehlspalette ... (STRG+UMSCHALT+P) aus.

  11. Geben Sie AL: Symbole herunterladen in das Suchfeld ein, und wählen Sie den Befehl aus der Liste aus.

  12. Geben Sie auf Anfrage Ihre organisatorischen Anmeldeinformationen an (Microsoft 365-Konto oder Microsoft Entra ID-Konto).

  13. Öffnen Sie die Datei app.json, und ändern Sie die Einstellung Name in Rollencenter-Beispiel. Ändern Sie die Einstellung Herausgeber in Cronus International Ltd.

  14. Entfernen Sie die Datei „HelloWorld.al“.

Eine neue Cue-Tabelle erstellen

  1. Wählen Sie Datei > Neue Datei aus, und speichern Sie dann diese Datei durch Auswahl von Datei > Speichern. Verwenden Sie den Dateinamen SalesInvoiceCue.Table.al.

  2. Erstellen Sie eine neue Tabelle in dieser Datei, indem Sie Codeausschnitte verwenden. Geben Sie ttable ein, und drücken Sie dann die TAB-Taste.

  3. Ändern Sie die ID in 50130 und Name in Verkaufsrechnungs-Cue.

  4. Legen Sie die Eigenschaft DataClassification auf CustomerContent und die Eigenschaft Caption auf Verkaufsrechnungs-Cue fest.

  5. Entfernen Sie das Feld MeinFeld.

  6. Erstellen Sie die folgenden Felder in der folgenden Tabelle. Sie können den Codeausschnitt tfield verwenden.

    Feldnr. Feldname Datentyp Länge
    1 Primärschlüssel Code 10
    2 Verkaufsrechnung – Öffnen Ganzzahl
    3 Verkaufsrechnung – Freigegeben Ganzzahl
    4 Umsatz diesen Monat Dezimal
  7. Stellen Sie die Eigenschaft DataClassification für jedes Feld in der Tabelle ein, mit Ausnahme der Felder Verkaufsrechnung – Öffnen und Verkaufsrechnung – Freigegeben auf CustomerContent.

  8. Legen Sie die Eigenschaft Caption für jedes Feld in der Tabelle fest.

  9. Legen Sie den Primärschlüssel auf Primärschlüssel fest.

  10. Stellen Sie die Eigenschaft FieldClass für das Feld Verkaufsrechnung – Öffnen auf FlowField. Legen Sie die Eigenschaft CalcFormula fest auf:

     CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), 
                                              Status = const(Open)));
    
  11. Stellen Sie die Eigenschaft FieldClass für das Feld Verkaufsrechnung – Freigegeben auf FlowField. Legen Sie die Eigenschaft CalcFormula fest auf:

     CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), 
                                              Status = const(Released)));
    
  12. Die Cue-Tabelle sollte nun wie folgt aussehen:

table 50130 "Sales Invoice Cue"
{
    DataClassification = CustomerContent;
    Caption = 'Sales Invoice Cue';

    fields
    {
        field(1; "Primary Key"; code[10])
        {
            DataClassification = CustomerContent;
            Caption = 'Primary Key';
        }
        field(2; "Sales Invoice - Open"; Integer)
        {
            Caption = 'Sales Invoice - Open';
            FieldClass = FlowField;
            CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), Status = const(Open)));
        }
        field(3; "Sales Invoice - Released"; Integer)
        {
            Caption = 'Sales Invoice - Released';
            FieldClass = FlowField;
            CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), Status = const(Released)));
        }
        field(4; "Sales this Month"; Decimal)
        {
            DataClassification = CustomerContent;
            Caption = 'Sales this Month';
        }
    }

    keys
    {
        key(Pk; "Primary Key")
        {
            Clustered = true;
        }
    }
}

Eine Aktivitätsseite erstellen

  1. Wählen Sie Datei > Neue Datei aus, und speichern Sie dann diese Datei durch Auswahl von Datei > Speichern. Verwenden Sie den Dateinamen SalesInvoiceActivities.Page.al.

  2. Erstellen Sie in dieser Datei eine neue Seite, indem Sie Codeausschnitte verwenden. Geben Sie tpage ein, und drücken Sie dann die TAB-Taste.

  3. Ändern Sie die ID in 50130 und Name in Verkaufsrechnungsaktivitäten.

  4. Legen Sie die Eigenschaft SourceTable auf Verkaufsrechnungs-Cue und die Eigenschaft Caption auf Verkaufsrechnungsaktivitäten fest.

  5. Legen Sie die Eigenschaft PageType auf Kartenteil fest. Entfernen Sie die Eigenschaften UsageCategory und ApplicationArea.

  6. Stellen Sie sicher, dass im Layoutabschnitt ein Bereich Inhalt erstellt wurde. Falls nicht, erstellen Sie einen Bereich mit dem Namen Inhalt.

  7. Ändern Sie den Namen der ersten Gruppe in Verkaufsrechnung. Ändern Sie das Steuerelement Gruppe in cuegroup. Legen Sie die Eigenschaft Caption der cuegroup auf Verkaufsrechnung fest.

  8. Fügen Sie alle Felder in der cuegroup hinzu. Setzen Sie die Eigenschaft ApplicationArea auf Alle. Fügen Sie das Feld Primärschlüssel nicht zur Seite hinzu.

  9. Stellen Sie sicher, dass jedes Feld eine Eigenschaft ToolTip hat.

  10. Fügen Sie dem Trigger OnOpenPage den folgenden Code hinzu:

     if not Rec.Get() then begin
         Rec.Init();
         Rec.Insert();
     end;
    
  11. Entfernen Sie den Abschnitt „Aktivitäten“ von der Seite.

  12. Die Aktivitätenseite sollte nun wie folgt aussehen:\

page 50130 "Sales Invoice Activities"
{
    PageType = CardPart;
    SourceTable = "Sales Invoice Cue";
    Caption = 'Sales Invoice Activities';

    layout
    {
        area(Content)
        {
            cuegroup("Sales Invoice")
            {
                Caption = 'Sales Invoice';

                field("Sales Invoice - Open"; Rec."Sales Invoice - Open")
                {
                    ToolTip = 'Specifies the value of the Sales Invoice - Open field.';
                    ApplicationArea = All;
                }
                field("Sales Invoice - Released"; Rec."Sales Invoice - Released")
                {
                    ToolTip = 'Specifies the value of the Sales Invoice - Released field.';
                    ApplicationArea = All;
                }
                field("Sales this Month"; Rec."Sales this Month")
                {
                    ToolTip = 'Specifies the value of the Sales this Month field.';
                    ApplicationArea = All;
                }
            }
        }
    }
    trigger OnOpenPage()
    begin
        if not Rec.Get() then begin
            Rec.Init();
            Rec.Insert();
        end;
    end;
}

Eine Seite „Rollencenter“ erstellen, und die Aktivitätsseite zum Rollencenter hinzufügen

  1. Wählen Sie Datei > Neue Datei aus, und speichern Sie dann diese Datei durch Auswahl von Datei > Speichern. Verwenden Sie den Dateinamen MyRoleCenter.Page.al.

  2. Erstellen Sie in dieser Datei eine neue Seite, indem Sie Codeausschnitte verwenden. Geben Sie tpage ein, und drücken Sie dann die TAB-Taste.

  3. Ändern Sie die ID in 50131 und name in Mein Rollencenter.

  4. Entfernen Sie die Eigenschaft SourceTable, und legen Sie die Eigenschaft PageType auf RoleCenter fest.

  5. Entfernen Sie den Bereich Inhalt im Layoutabschnitt, und fügen Sie an dieser Stelle einen neuen Bereich Rollencenter hinzu.

  6. Entfernen Sie den Abschnitt Aktivitäten und die globale Variable myInt.

  7. Fügen Sie einen Teil mit dem Namen Verkaufsrechnungsaktivitäten der Seite Verkaufsrechnungsaktivitäten zum Bereich Rollencenter hinzu.

layout
{
    area(RoleCenter)
    {
        part("Sales Invoice Activities"; "Sales Invoice Activities")
        {
            ApplicationArea = All;
        }
    }
}

Erstellen Sie eine Abfrage, und fügen Sie damit Daten in ein Feld in der Cue-Tabelle ein.

  1. Wählen Sie Datei > Neue Datei aus, und speichern Sie dann diese Datei durch Auswahl von Datei > Speichern. Verwenden Sie den Dateinamen CustomLedgEntrySales.Query.al.

  2. Erstellen Sie in dieser Datei eine neue Seite, indem Sie Codeausschnitte verwenden. Geben Sie tquery ein, und drücken Sie dann die TAB-Taste.

  3. Ändern Sie die ID in 50130 und Name in Debitorenposten Verkauf.

  4. Legen Sie die Eigenschaft QueryType auf Normal fest.

  5. Legen Sie dataitem auf Debitorenposten fest.

  6. Fügen Sie Filterspalten für Dokumentenart und für Buchungsdatum hinzu.

  7. Fügen Sie eine Spalte für Vertrieb (LCY) hinzu, und legen Sie die Methode Sum fest.

  8. Entfernen Sie den Trigger OnBeforeOpen.

query 50130 "Custom Ledg. Entry Sales"
{
    QueryType = Normal;

    elements
    {
        dataitem(CustLedgerEntry; "Cust. Ledger Entry")
        {
            column(SumSalesLCY; "Sales (LCY)")
            {
                Method = Sum;
            }
            filter(DocumentTypeFilter; "Document Type")
            {
            }
            filter(PostingDateFilter; "Posting Date")
            {
            }
        }
    }
}

Die Cue-Tabelle aktualisieren

  1. Öffnen Sie die Datei SalesInvoiceCue.Table.al, und erstellen Sie eine öffentliche Prozedur mit dem Namen CalcSalesThisMonth. Geben Sie eine Variable vom Datentyp „Decimal“ Menge zurück.

  2. Fügen Sie der Funktion folgenden Code hinzu.

    procedure CalcSalesThisMonthAmount() Amount: Decimal
    var
        CustLedgerEntry: Record "Cust. Ledger Entry";
        CustomLedgEntrySales: Query "Custom Ledg. Entry Sales";
    begin
        CustomLedgEntrySales.SetRange(DocumentTypeFilter, CustLedgerEntry."Document Type"::Invoice);
        CustomLedgEntrySales.SetRange(PostingDateFilter, CalcDate('<-CM>', Workdate()), Workdate());

        CustomLedgEntrySales.Open();
        if CustomLedgEntrySales.Read() then
            Amount := CustomLedgEntrySales.SumSalesLCY;
        CustomLedgEntrySales.Close();
    end;

Die Seite Aktivitäten aktualisieren

  1. Öffnen Sie die Seite SalesInvoiceActivities.Page.al.

  2. Erstellen Sie den Trigger OnAfterGetRecord auf der Seite, und fügen Sie den folgenden Code in den Trigger ein:

    Rec."Sales This Month" := Rec.CalcSalesThisMonthAmount();
    
  3. Stellen Sie die Eigenschaft DrillDownPageID des Felds Umsatz diesen Monat auf Debitorenposten ein.

Ein Profil erstellen

  1. Wählen Sie Datei > Neue Datei aus, und speichern Sie dann diese Datei durch Auswahl von Datei > Speichern. Verwenden Sie den Dateinamen MyProfile.Profile.al.

  2. Erstellen Sie in dieser Datei eine neue Seite, indem Sie Codeausschnitte verwenden. Geben Sie tprofile ein, und drücken Sie dann die TAB-Taste.

  3. Ändern Sie den Code folgendermaßen:

profile MyProfile 
{
    Caption = 'My Profile';
    RoleCenter = "My Role Center";
}

Die Erweiterung herausgeben

  1. Veröffentlichen Sie Ihre Erweiterung in der Sandbox. Wählen Sie Anzeigen > Befehlspalette... (STRG+UMSCHALT+P) aus.

  2. 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.

  3. Öffnen Sie über das Einstellungssymbol Meine Einstellungen.

  4. Ändern Sie Rolle in Mein Profil, um Ihr neu erstelltes Rollencenter zu testen.