Exercice : créer une page Tableau de bord avec une page Activité
Scénario
Vous êtes développeur pour CRONUS International Ltd. et souhaitez créer une page Tableau de bord, puis afficher certaines piles sur le Tableau de bord.
Tâches
Créer une extension
Créer une table Pile
Créer une page d’activité
Créer une page Tableau de bord et ajouter la page d’activité au Tableau de bord
Créer une requête et ajouter des données dans un champ de la table Pile à l’aide de cette requête
Mettre à jour la table Pile
Mettre à jour la page Activités
Créer un profil
Publier l’extension
Étapes
Créer une extension
Démarrez Visual Studio Code.
Sélectionnez Afficher > Extensions (Ctrl+Maj+X).
Saisissez AL Language dans la zone de recherche Rechercher des extensions dans Marketplace.
Cliquez sur le bouton vert Installer.
Créez un projet d’extension AL. Sélectionnez Afficher > Palette de commandes… (Ctrl+Maj+P).
Saisissez AL: Go! dans la zone de recherche et sélectionnez la commande dans la liste.
Acceptez le chemin suggéré (ou saisissez un chemin différent).
Sélectionnez la plateforme cible dernière version (la plus élevée) de Business Central.
Sélectionnez Bac à sable cloud Microsoft comme point de terminaison de développement.
Téléchargez les symboles d’application. Sélectionnez Afficher > Palette de commandes… (Ctrl+Maj+P).
Saisissez AL: Download symbols dans la zone de recherche et sélectionnez la commande dans la liste.
Si vous y êtes invité, fournissez vos informations d’identification professionnelles (compte Microsoft 365/compte Microsoft Entra ID).
Ouvrez le fichier app.json et redéfinissez le paramètre name sur Exemple Tableau de bord. Redéfinissez le paramètre publisher sur Cronus International Ltd.
Supprimez le fichier HelloWorld.al.
Créer une table Pile
Sélectionnez Fichier > Nouveau fichier et enregistrez ce fichier en sélectionnant Fichier > Enregistrer. Utilisez le nom de fichier SalesInvoiceCue.Table.al.
Créez une table dans ce fichier à l’aide d’extraits de code. Saisissez ttable, puis appuyez sur la touche de tabulation.
Remplacez l’option ID par 50130 et l’option nom par « Pile facture vente ».
Définissez la propriété DataClassification sur CustomerContent, ainsi que la propriété Caption sur « Pile facture vente ».
Supprimez le champ MonChamp.
Créez les champs suivants dans la table. Vous pouvez utiliser l’extrait de code tfield.
N° de champ Nom du champ Type de données Longueur 1 Clé primaire Code 10 2 Facture vente - en cours Entier 3 Facture vente - libérée Entier 4 Ventes ce mois Décimal Définissez la propriété DataClassification pour chaque champ de la table, à l’exception des champs Facture vente - en cours et Facture vente - libérée, sur CustomerContent.
Définissez la propriété Caption pour chaque champ de la table.
Définissez la clé primaire sur Clé primaire.
Définissez la propriété FieldClass sur FlowField pour le champ Facture vente - en cours. Définissez la propriété CalcFormula sur :
CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), Status = const(Open)));Définissez la propriété FieldClass sur FlowField pour le champ Facture vente - libérée. Définissez la propriété CalcFormula sur :
CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), Status = const(Released)));La table Pile devrait maintenant ressembler à ceci :
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;
}
}
}
Créer une page d’activité
Sélectionnez Fichier > Nouveau fichier et enregistrez ce fichier en sélectionnant Fichier > Enregistrer. Utilisez le nom de fichier SalesInvoiceActivities.Page.al.
Créez une page dans ce fichier à l’aide d’extraits de code. Saisissez tpage, puis appuyez sur la touche de tabulation.
Remplacez l’option ID par 50130 et l’option nom par Activités facture vente.
Définissez la propriété SourceTable sur Pile facture vente, ainsi que la propriété Caption sur Activités facture vente.
Définissez la propriété PageType sur ComposantFiche. Supprimez les propriétés UsageCategory et ApplicationArea.
Vérifiez qu’une zone contenu est créée dans la section Disposition. Sinon, créez une zone appelée contenu.
Remplacez le nom du premier groupe par Facture vente. Modifiez le contrôle group dans un cuegroup. Définissez la propriété Caption du cuegroup sur Facture vente.
Ajoutez tous les champs dans le cuegroup. Définissez la propriété ApplicationArea sur All. N’ajoutez pas le champ Clé primaire à la page.
Assurez-vous que chaque champ comporte une propriété ToolTip.
Ajoutez le code suivant au déclencheur OnOpenPage :
if not Rec.Get() then begin Rec.Init(); Rec.Insert(); end;Supprimez la section actions de la page.
La page Activités devrait maintenant ressembler à ceci :
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;
}
Créer une page Tableau de bord et ajouter la page d’activité au Tableau de bord
Sélectionnez Fichier > Nouveau fichier et enregistrez ce fichier en sélectionnant Fichier > Enregistrer. Utilisez le nom de fichier MyRoleCenter.Page.al.
Créez une page dans ce fichier à l’aide d’extraits de code. Saisissez tpage, puis appuyez sur la touche de tabulation.
Remplacez l’option ID par 50131 et l’option nom par Mon Tableau de bord.
Supprimez la propriété SourceTable et modifiez la propriété PageType sur RoleCenter.
Supprimez la zone content dans la section disposition et ajoutez une nouvelle zone rolecenter dans la section disposition.
Supprimez la section actions ainsi que la variable globale myInt.
Ajoutez une partie nommée Activités facture vente de la page Activités facture vente dans la zone rolecenter.
layout
{
area(RoleCenter)
{
part("Sales Invoice Activities"; "Sales Invoice Activities")
{
ApplicationArea = All;
}
}
}
Créer une requête et ajouter des données dans un champ de la table Pile à l’aide de cette requête
Sélectionnez Fichier > Nouveau fichier et enregistrez ce fichier en sélectionnant Fichier > Enregistrer. Utilisez le nom du fichier CustomLedgEntrySales.Query.al.
Créez une page dans ce fichier à l’aide d’extraits de code. Saisissez tquery, puis appuyez sur la touche de tabulation.
Remplacez l’option ID par 50130 et l’option nom par Écriture comptable client Ventes.
Définissez la propriété QueryType sur Normal.
Définissez dataitem sur Écriture comptable client.
Ajouter des colonnes de filtre pour Type de document et Date de comptabilisation.
Ajoutez une colonne pour Ventes (LCY) et spécifiez la méthode Sum.
Supprimez le déclencheur 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")
{
}
}
}
}
Mettre à jour la table Pile
Ouvrez le fichier SalesInvoiceCue.Table.al et créez une procédure publique nommée CalcSalesThisMonth. Retournez une variable Amount du type de données Décimal.
Ajoutez le code suivant à la fonction :
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;
Mettre à jour la page Activités
Ouvrez la page SalesInvoiceActivities.Page.al.
Créez le déclencheur OnAfterGetRecord dans la page et ajoutez-y le code suivant :
Rec."Sales This Month" := Rec.CalcSalesThisMonthAmount();Définissez la propriété DrillDownPageID du champ Ventes ce mois-ci sur Écritures comptables client.
Créer un profil
Sélectionnez Fichier > Nouveau fichier et enregistrez ce fichier en sélectionnant Fichier > Enregistrer. Utiliser le nom de fichier MyProfile.Profile.al.
Créez une page dans ce fichier à l’aide d’extraits de code. Saisissez tprofile, puis appuyez sur la touche de tabulation.
Définissez le code sur la formule suivante :
profile MyProfile
{
Caption = 'My Profile';
RoleCenter = "My Role Center";
}
Publier l’extension
Publiez votre extension dans le bac à sable. Sélectionnez Afficher > Palette de commandes... (Ctrl+Maj+P).
Saisissez AL: Publish dans la zone de recherche (ou appuyez dans le raccourci clavier F5), puis sélectionnez la commande dans la liste.
Ouvrez Mes paramètres à partir de l’icône des paramètres.
Définissez le Rôle sur Mon profil pour tester votre Tableau de bord nouvellement créé.