Esercizio - Creazione di una pagina Gestione ruolo utente con una pagina Attività
Scenario
In qualità di sviluppatore presso CRONUS International Ltd. si desidera creare una pagina Gestione ruolo utente e visualizzare alcune pile per Gestione ruolo utente.
Attività
Creazione di una nuova estensione.
Creazione di una tabella Pila.
Creazione di una pagina di attività.
Creazione di una pagina Gestione ruolo utente e aggiunta della pagina di attività alla Gestione ruolo utente.
Creazione di una query e utilizzo della stessa per aggiungere dati in un campo nella tabella Pila.
Aggiornamento della tabella Pila
Aggiornamento della pagina Attività
Creazione di un profilo
Pubblicazione dell'estensione
Passaggi
Creazione di una nuova estensione
Avviare Visual Studio Code.
Selezionare Visualizza > Estensioni (CTRL+MAIUSC+X).
Immettere AL Language nella casella di ricerca Cerca le estensioni nel Marketplace.
Selezionare il pulsante verde Installa.
Creare un nuovo progetto di estensione AL. Selezionare Visualizza > Riquadro comandi... (CTRL+MAIUSC+P).
Immettere AL: Go! nella casella di ricerca e selezionare il comando dall'elenco.
Accettare il percorso suggerito (o immettere un altro percorso).
Selezionare la piattaforma di destinazione versione più recente (aggiornata) di Business Central.
Selezionare Microsoft cloud sandbox come endpoint di sviluppo.
Scaricare i simboli dell'applicazione. Selezionare Visualizza > Riquadro comandi... (CTRL+MAIUSC+P).
Immettere AL: Download symbols nella casella di ricerca e selezionare il comando dall'elenco.
Se richiesto, fornire le credenziali dell'organizzazione (account Microsoft 365 o account Microsoft Entra ID).
Aprire il file app.json e modificare l'impostazione nome in Esempio di Gestione ruolo utente. Modificare l'impostazione editore in Cronus International Ltd.
Rimuovere il file HelloWorld.al.
Creazione di una tabella Pila
Selezionare File > Nuovo file, quindi salvare questo file selezionando File > Salva. Usare il nome file SalesInvoiceCue.Table.al.
Creare una nuova tabella in questo file usando frammenti di codice. Immettere ttable e premere TAB.
Modificare ID in 50130 e nome in "Pila fatture di vendita".
Impostare la proprietà DataClassification su CustomerContent e la proprietà Caption su Pila fatture di vendita.
Rimuovere il campo MyField.
Creare i campi seguenti nella tabella. È possibile usare il frammento tfield.
Nr. campo Nome campo Tipo di dati Lunghezza 1 Chiave primaria Codice 10 2 Fattura di vendita - Aperta Integer 3 Fattura di vendita – Rilasciata Integer 4 Vendite mese corrente Decimale Impostare la proprietà DataClassification di ciascun campo nella tabella, eccetto i campi Fattura di vendita - Aperta e Fattura di vendita - Rilasciata, su CustomerContent.
Impostare la proprietà Caption per ogni campo della tabella.
Impostare la chiave primaria su Primary Key.
Impostare la proprietà FieldClass su FlowField per il campo Fattura di vendita - Aperta. Impostare la proprietà CalcFormula su:
CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), Status = const(Open)));Impostare la proprietà FieldClass su FlowField per il campo Fattura di vendita - Rilasciata. Impostare la proprietà CalcFormula su:
CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), Status = const(Released)));La tabella Pila ora dovrebbe avere un aspetto simile al seguente:
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;
}
}
}
Creazione di una pagina di attività
Selezionare File > Nuovo file, quindi salvare questo file selezionando File > Salva. Usare il nome file SalesInvoiceActivities.Page.al.
Creare una nuova pagina in questo file usando frammenti di codice. Immettere tpage e premere TAB.
Modificare l'ID in 50130 e il nome in Attività fatture di vendita.
Impostare la proprietà SourceTable su Sales Invoice Cue, quindi impostare la proprietà Caption su Attività fatture di vendita.
Impostare la proprietà PageType su CardPart. Rimuovere le proprietà UsageCategory e ApplicationArea.
Verificare che sia stata creata un'area content nella sezione del layout. In caso contrario, creare un'area denominata content.
Modificare il nome del primo gruppo in Fattura di vendita. Modificare il controllo group in cuegroup. Impostare la proprietà Caption del cuegroup in Fattura di vendita.
Aggiungere tutti i campi nel cuegroup. Impostare la proprietà ApplicationArea su Tutti. Non aggiungere li campo Chiave primaria alla pagina.
Assicurarsi che ogni campo abbia una proprietà ToolTip.
Aggiungere il codice seguente al trigger OnOpenPage.
if not Rec.Get() then begin Rec.Init(); Rec.Insert(); end;Rimuovere la sezione delle azioni dalla pagina.
La pagina Attività ora dovrebbe avere un aspetto simile al seguente:
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;
}
Creazione di una pagina Gestione ruolo utente e aggiunta della pagina di attività alla Gestione ruolo utente
Selezionare File > Nuovo file, quindi salvare questo file selezionando File > Salva. Usare il nome file MyRoleCenter.Page.al.
Creare una nuova pagina in questo file usando frammenti di codice. Immettere tpage e premere TAB.
Modificare l'ID in 50131 e il nome in Gestione ruolo utente personale.
Rimuovere la proprietà SourceTable e modificare la proprietà PageType in RoleCenter.
Rimuovere l'area content nella sezione del layout e aggiungere una nuova area rolecenter nella sezione del layout.
Rimuovere la sezione actions, quindi rimuovere la variabile globale myInt.
Aggiungere una parte con nome Attività fatture di vendita della pagina Attività fatture di vendita all'area rolecenter.
layout
{
area(RoleCenter)
{
part("Sales Invoice Activities"; "Sales Invoice Activities")
{
ApplicationArea = All;
}
}
}
Creazione di una query e utilizzo della stessa per aggiungere dati in un campo nella tabella Pila
Selezionare File > Nuovo file, quindi salvare questo file selezionando File > Salva. Usare il nome file CustomLedgEntrySales.Query.al.
Creare una nuova pagina in questo file usando frammenti di codice. Immettere tquery, quindi premere il tasto TAB.
Modificare l'ID in 50130 e il nome in Movimenti contabili vendite personalizzati.
Impostare la proprietà QueryType su Normale.
Impostare dataitem su Mov. contabili clienti.
Aggiungere colonne filtro per Tipo di documento e Data di registrazione.
Aggiungere una colonna per Vendite (VL) e specificare il metodo Somma.
Rimuovere il 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")
{
}
}
}
}
Aggiornamento della tabella Pila
Aprire il file SalesInvoiceCue.Table.al e creare una procedura pubblica con nome CalcSalesThisMonth. Restituire una variabile Importo con tipo di dati Decimale.
Aggiungere il codice seguente alla funzione.
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;
Aggiornamento della pagina Attività
Aprire la pagina SalesInvoiceActivities.Page.al.
Creare il trigger OnAfterGetRecord nella pagina e aggiungere il codice seguente nel trigger:
Rec."Sales This Month" := Rec.CalcSalesThisMonthAmount();Impostare la proprietà DrillDownPageID del campo Vendite mese corrente su Movimenti contabili clienti.
Creazione di un profilo
Selezionare File > Nuovo file, quindi salvare questo file selezionando File > Salva. Usare il nome file MyProfile.Profile.al.
Creare una nuova pagina in questo file usando frammenti di codice. Immettere tprofile, quindi premere il tasto TAB.
Modificare il codice come illustrato di seguito:
profile MyProfile
{
Caption = 'My Profile';
RoleCenter = "My Role Center";
}
Pubblicazione dell'estensione
Pubblicare l'estensione nella sandbox. Selezionare Visualizza > Riquadro comandi... (CTRL+MAIUSC+P).
Immettere AL: Publish nella casella di ricerca (o premere il tasto di scelta rapida F5) e selezionare il comando dall'elenco.
Aprire Impostazioni personali dall'icona delle impostazioni.
Modificare Ruolo in Mio profilo per testare la pagina Gestione ruolo utente appena creata.