Creazione dell'oggetto tabella Livello dei premi

Completato

La tabella del livello di premi memorizza diversi livelli di premi e i punti necessari per acquisire un livello di ricompensa per l'estensione.

La tabella è composta da due campi:

  • Livello

  • Punti premio minimi

È possibile che si sia già creata questa tabella svolgendo l'esercizio Creazione dell'oggetto tabella Livello dei premi del modulo precedente. Qui verrà riesaminata e si otterranno informazioni più approfondite.

Per creare una nuova tabella nell'estensione, creare prima un nuovo file selezionando il pulsante Nuovo file nella barra laterale di Visual Studio Code.

Screenshot del pulsante Nuovo file.

Assicurarsi che il nome del file termini con .al. Per questo esempio si userà il nome RewardLevel.Table.al. Sebbene un file .al possa contenere più oggetti, è consigliabile avere un solo oggetto in ogni file. Dopo che il file è stato creato, aprirlo per creare la tabella al suo interno.

Un'estensione è completamente contenuta in una singola cartella. Questa cartella contiene spesso più file, ad esempio i file app.json e launch.json, talora un file immagine che rappresenta il logo dell'estensione, varie cartelle per l'origine, "\src", altre risorse, "\res", e una cartella di test, "\test". L'estensione non ha bisogno di seguire una struttura piatta, il che significa che, a seconda del numero di file dell'applicazione, è possibile usare più cartelle nelle cartelle "src" o "test" per raggruppare oggetti in base alla loro funzionalità. Ciò può aiutare a semplificare la gestione di un grande progetto .al.

Ogni nome di file ha nomi di oggetti formati da soli caratteri [A-Z a-z 0-9], un tipo di oggetto e punto (.) al come tipo di file. Nell'estensione il nome di ogni nuovo oggetto dell'applicazione (tabella, pagina, codeunit), può contenere un prefisso o un suffisso.

Per altre informazioni sulla struttura delle cartelle e sulla denominazione dei file, vedere Procedure consigliate per AL.

Il codice seguente aggiunge una nuova tabella denominata 50100 Livello dei premi per l'archiviazione delle informazioni sul livello di premi impostate dall'utente.

table 50100 "Reward Level"
{
    Caption = 'Reward Level';
    TableType = Normal;
    DataClassification = CustomerContent;

    fields
    {
        field(1; Level; Text[20])
        {
            Caption = 'Level';
            DataClassification = CustomerContent;
        }

        field(2; "Minimum Reward Points"; Integer)
        {
            Caption = 'Minimum Reward Points';
            DataClassification = CustomerContent;
            MinValue = 0;
            NotBlank = true;

            trigger OnValidate();
            var
                RewardLevel: Record "Reward Level";
                tempPoints: Integer;
            begin
                tempPoints := "Minimum Reward Points";
                RewardLevel.SetRange("Minimum Reward Points", tempPoints);
                if not RewardLevel.IsEmpty then
                    Error('Minimum Reward Points must be unique');
            end;
        }
    }

    keys
    {
        key(PK; Level)
        {
            Clustered = true;
        }
        key("Minimum Reward Points"; "Minimum Reward Points") { }
    }

    trigger OnInsert();
    begin

        Validate("Minimum Reward Points");
    end;

    trigger OnModify();
    begin
        Validate("Minimum Reward Points");
    end;
} 

Se si immette il collegamento ttable, si crea il layout di base di un oggetto tabella quando si usa l'estensione AL Language in Visual Studio Code, ma in questo caso è possibile copiare il codice precedente e incollarlo nel file **RewardLevel.Table.al **.

Le sezioni seguenti descrivono più dettagliatamente i differenti elementi della tabella.

La struttura di una tabella ha quattro sezioni:

  • Sezione Metadata: il primo blocco contiene i metadati per la tabella globale:

      table 50100 "Reward Level"
      {
          Caption = 'Reward Level';
          TableType = Normal;
          DataClassification = CustomerContent;
    

    In questo esempio, alla tabella è stato assegnato il numero 50100 e Name e Caption sono Livello dei premi. Premendo la combinazione di tasti CTRL+BARRA SPAZIATRICE, si avvierà IntelliSense e sarà possibile selezionare altre proprietà nel caso sia necessario usarle. In questo esempio, la proprietà TableType è impostata su Normal. Questa impostazione non è necessaria perché Normal è il valore predefinito della proprietà TableType.

    La proprietà Caption imposta la stringa di testo che viene visualizzata con l'oggetto, il controllo o un altro elemento nell'interfaccia utente per la lingua corrente. Una didascalia è il testo usato per mostrare l'identità di un controllo, ad esempio, nella barra della didascalia di una pagina o di un'etichetta per un altro controllo.

    La proprietà DataClassification imposta la classificazione dei dati nella tabella o nel campo. La classificazione dei dati può essere usata per aderire ai requisiti e ai processi di sicurezza, conformità e privacy per la raccolta, l'archiviazione e l'uso delle informazioni personali di una persona.

  • Sezione Fields: questa seconda sezione descrive gli elementi di dati che compongono la tabella, i relativi nomi e il tipo di dati che possono memorizzare.

      fields
          {
              field(1; Level; Text[20])
              {
                  Caption = 'Level';
                  DataClassification = CustomerContent;
              }
    
              field(2; "Minimum Reward Points"; Integer)
              {
                  Caption = 'Minimum Reward Points';
                  DataClassification = CustomerContent;
                  MinValue = 0;
                  NotBlank = true;
    
                  trigger OnValidate();
                  var
                      tempPoints: Integer;
                      RewardLevel: Record "Reward Level";
                  begin
                      tempPoints := "Minimum Reward Points";
                      RewardLevel.SetRange("Minimum Reward Points", tempPoints);
                      if not RewardLevel.IsEmpty then
                          Error('Minimum Reward Points must be unique');
                  end;
              }
          }
    
    • Questo esempio include due campi, ognuno con un numero, un nome e un tipo di dati. Se un campo ha proprietà, queste possono essere incluse tra parentesi graffe { }.

    • Il campo Punti premio minimi ha anche un trigger OnValidate. Questo trigger viene eseguito dopo il comportamento di convalida predefinito all'immissione di dati in un campo. Durante il comportamento di convalida predefinito, il sistema verifica che il tipo di dati del valore immesso corrisponda a quello definito per il campo. Verifica inoltre che il tipo sia conforme ai vincoli di proprietà impostati in tale campo prima che avvenga la convalida. Se si verifica un errore nel codice trigger, viene visualizzato un messaggio di errore. In tal caso, l'immissione dell'utente non viene scritta nel database.

  • Sezione Keys: la terza sezione contiene le definizioni delle chiavi che la tabella deve supportare.

          keys
          {
              key(PK; Level)
              {
                  Clustered = true;
              }
              key("Minimum Reward Points"; "Minimum Reward Points") { }
          }
    
    • Questo esempio include due chiavi: PK e Punti premio minimi. La prima chiave in questo elenco è sempre la chiave primaria e le altre chiavi sono le chiavi secondarie. La chiave primaria determina ciò che rende un record univoco. Le chiavi possono essere costituite da più campi. È possibile definire il nome della chiave.

    • La chiave primaria determina l'ordine logico in cui vengono archiviati i record, indipendentemente dalla relativa posizione fisica. Logicamente, i record vengono archiviati in sequenza in ordine crescente e ordinati in base alla chiave primaria. Prima di aggiungere un nuovo record a una tabella, SQL Server controlla se le informazioni nei campi della chiave primaria del record sono univoche e solo allora inserirà il record nella posizione logica corretta. I record vengono ordinati in modo dinamico affinché il database sia sempre strutturalmente corretto. Questo approccio consente la manipolazione e il recupero dei dati in tempi brevi.

  • Sezione Triggers: la quarta sezione illustra i trigger e il codice che possono essere eseguiti sulla tabella.

          trigger OnInsert();
          begin
    
              Validate("Minimum Reward Points");
          end;
    
          trigger OnModify();
          begin
              Validate("Minimum Reward Points");
          end;
    

    In questo esempio, quando si verifica un'operazione di inserimento o modifica sulla tabella, la funzione Validate del campo Punti fedeltà minimi deve essere eseguita. La funzione Validate chiama il trigger OnValidate di un campo.

Ora che si è creata la tabella Livello di premi, assicurarsi di salvarla premendo la combinazione di tasti CTRL+S.

Nota

In Visual Studio Code, è possibile abilitare l'opzione Salvataggio automatico.

Screenshot dell'opzione Salvataggio automatico nel menu File.