Creazione di elenchi di Gestione ruolo utente
Quando si sviluppa un nuovo Gestione ruolo utente, è possibile usare i relativi elenchi per presentare alle persone i dati che possono usare quotidianamente. Nell'elenco Clienti personali gli utenti possono accedere ai clienti con i quali collaborano di frequente.
Molti di questi elenchi Elementi personali sono disponibili nell'applicazione. A seconda delle personalizzazioni, si potrebbe voler presentare all'utente elenchi diversi.
Per usare un elenco di Gestione ruolo utente, è necessaria anche una tabella per l'archiviazione dei dati. Il frammento di codice seguente mostra una tabella Cliente personale di esempio, usata per l'elenco Clienti personali. Quando aggiunge un cliente all'elenco, l'utente riceverà i dettagli del cliente e sarà possibile impostare i campi corrispondenti tramite la procedura SetCustomerFields.
table 9150 "My Customer"
{
fields
{
field(1; "User ID"; Code[50])
{
TableRelation = User."User Name";
}
field(2; "Customer No."; Code[20])
{
NotBlank = true;
TableRelation = Customer;
trigger OnValidate()
begin
SetCustomerFields();
end;
}
field(3; Name; Text[100])
{
Editable = false;
}
field(4; "Phone No."; Text[30])
{
Editable = false;
}
field(5; "Balance (LCY)"; Decimal)
{
CalcFormula = Sum ("Detailed Cust. Ledg. Entry"."Amount (LCY)"
where("Customer No." = field("Customer No.")));
Editable = false;
FieldClass = FlowField;
}
}
keys
{
key(Key1; "User ID", "Customer No.")
{
Clustered = true;
}
...
}
procedure SetCustomerFields()
var
Customer: Record Customer;
begin
if Customer.Get("Customer No.") then begin
Name := Customer.Name;
"Phone No." := Customer."Phone No.";
end;
end;
}
La chiave primaria è una chiave combinata con i campi ID utente e Nr. cliente. Pertanto, più utenti possono selezionare lo stesso cliente preferito nei propri elenchi. Anche la pagina corrispondente è semplice da creare. Nel frammento che segue, i campi Name e Phone No. vengono confrontati ogni volta con il record corrente nel database. Se il campo Name o Phone No. del record del cliente è cambiato, viene aggiornato nella tabella My Customer. Nel trigger OnOpenPage il set di dati viene filtrato per mostrare solo i record per l'utente corrente.
page 9150 "My Customers"
{
PageType = ListPart;
SourceTable = "My Customer";
layout
{
area(content)
{
repeater(Control1)
{
field("Customer No."; "Customer No.")
{
trigger OnValidate()
begin
SyncFieldsWithCustomer();
end;
}
field(Name; Name)
{
}
field("Phone No."; "Phone No.")
{
}
field("Balance (LCY)"; "Balance (LCY)")
{
}
}
}
}
actions
{
area(processing)
{
action(Open)
{
RunObject = Page "Customer Card";
RunPageLink = "No." = field("Customer No.");
RunPageMode = View;
RunPageView = Sorting("No.");
}
}
}
trigger OnAfterGetRecord()
begin
SyncFieldsWithCustomer();
end;
trigger OnNewRecord(BelowxRec: Boolean)
begin
Clear(Customer);
end;
trigger OnOpenPage()
begin
SetRange("User ID", UserId());
end;
var
Customer: Record Customer;
local procedure SyncFieldsWithCustomer()
var
MyCustomer: Record "My Customer";
begin
Clear(Customer);
if Customer.Get("Customer No.") then
if (Name <> Customer.Name) or
("Phone No." <> Customer."Phone No.") then begin
Name := Customer.Name;
"Phone No." := Customer."Phone No.";
if MyCustomer.Get("User ID", "Customer No.") then
Modify();
end;
end;
}