Exercice : utiliser des instructions de manipulation de données
Vous êtes développeur pour CRONUS International Ltd. Vous avez découvert comment utiliser les instructions de manipulation de données dans AL et souhaitez maintenant mettre en pratique cette nouvelle compétence dans l’environnement de développement. Vous souhaitez être en mesure d’exporter des enregistrements d’écriture comptable vers une table spécifique. Le client doit effectuer cette tâche et le code source afin que vous disposiez d’une vue d’ensemble des montants totaux par client et code source.
Tâches
Créer une extension AL
Créer une table
Créer une page liée à la table
Créer un codeunit pour copier les données de différentes tables vers la table qui vient d’être créée
Étapes
Dans Visual Studio Code, dans le projet que vous avez créé précédemment dans ce parcours d’apprentissage, créez un dossier nommé CustomerOverview.
Créez tous les fichiers .al mentionnés dans les étapes suivantes dans le dossier CustomerOverview.
Cliquez sur Fichier > Nouveau fichier, puis enregistrez ce fichier en cliquant sur Fichier > Enregistrer. Nommez le fichier CustomerOverview.Table.al.
Créez une table dans ce fichier à l’aide d’extraits de code. Saisissez
ttable, puis appuyez sur la touche de tabulation.Redéfinissez le paramètre ID sur 50120 et le paramètre name sur Customer Overview.
Définissez la propriété DataClassification sur CustomerContent et la propriété Caption sur Customer Overview.
Supprimez le champ MyField.
Créez les champs suivants. Vous pouvez utiliser l’extrait de code
tfield.N° de champ Nom du champ Type de données Longueur 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 Définissez la propriété DataClassification pour chaque champ de la table sur CustomerContent.
Définissez la propriété Caption pour chaque champ de la table.
Définissez le champ Clé primaire sur Entry No.
Supprimez la section des variables globales.
Supprimez les déclencheurs de table.
Votre fichier devrait maintenant ressembler à ce bloc de code :
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; } } }Créez un fichier nommé CustomerOverviewList.Page.al.
Créez une page dans ce fichier à l’aide d’extraits de code. Saisissez
tpage, puis appuyez sur la touche de tabulation.Redéfinissez le paramètre ID sur 50120 et le paramètre name sur Customer Overview List.
Définissez la propriété SourceTable sur Customer Overview et la propriété Caption sur Customer Overview List.
Définissez la propriété PageType sur List et la propriété UsageCategory sur Lists. Vérifiez que la propriété ApplicationArea est définie sur All.
Définissez la propriété Editable sur false.
Vérifiez qu’une zone content est créée dans la section Disposition. Sinon, créez une zone nommée content.
Redéfinissez le nom du répéteur sur General.
Ajoutez tous les champs de la table Customer Overview que vous avez créée précédemment dans le répéteur.
Vérifiez que la propriété ApplicationArea est définie sur All pour tous les champs de la page.
Ajoutez des info-bulles parlantes à tous les champs de la page.
Supprimez la zone factboxes.
Supprimez la zone Actions.
Votre fichier devrait maintenant ressembler à ce bloc de code :
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; } } } } }Créez un fichier nommé CustomerOverviewMgmt.CodeUnit.al.
Créez un codeunit dans ce fichier à l’aide d’extraits de code. Saisissez
tcodeunit, puis appuyez sur la touche de tabulation.Redéfinissez le paramètre ID sur 50120 et le paramètre name sur Customer Overview Mgmt.
Ajoutez les variables globales suivantes :
Nom Type de données Sous-type CustomerOverview Enregistrement Présentation client Customer Enregistrement Client SourceCode Enregistrement Source Code GLEntry Enregistrement Écriture comptable NextEntryNo Integer Dans le déclencheur
OnRun, ajoutez le code suivant :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() = 0Ouvrez le fichier CustomerOverviewList.Page.al.
Ajoutez une zone actions à la page.
Dans la zone actions, ajoutez une section Processing.
Dans la section Processing, ajoutez une action.
Redéfinissez le nom de l’action sur Import Records, puis définissez les propriétés suivantes sur l’action :
Caption : Import Records
Image : Import
ApplicationArea : All
Dans le déclencheur
OnAction, créez une variable locale.Nom Type de données Sous-type UpdateCustomerOverview Codeunit Customer Overview Mgmt Appelez le codeunit
RunTriggerà partir du déclencheurOnAction.Votre code devrait maintenant ressembler à ce bloc de code :
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; } } } }Ouvrez le fichier launch.json dans le dossier .vscode. Définissez le paramètre startupObjectId sur 50120 et le paramètre startupObjectType sur Page.
Publiez votre extension dans le bac à sable. Sélectionnez Afficher > Palette de commandes... (Ctrl+Shift+P).
Saisissez AL: Publish dans la zone de recherche (ou appuyez sur la touche F5), puis sélectionnez la commande dans la liste.
Vérifiez que l’application Microsoft Dynamics 365 Business Central démarre et que la page Customer Overview List s’affiche.
Testez votre extension en sélectionnant l’action Importer des enregistrements.