Vai al contenuto

Come permettere all'utente di aggiungere, editare, vedere, rimuovere o clonare righe se le condizioni sono soddisfatte

Permessi Richiesti

Questa sezione richiede il permesso Application Designer dal tuo amministratore di Dominio.

Consulta Quali sono i compiti di Design? per saperne di più riguardo ai permessi per lavorare con il Design Mode e altri strumenti.

Impara come configurare Formula per abilitare certe azioni sulla tabella di un'applicazione se le sue condizioni sono soddisfatte.

Gli utenti aggiungeranno, modificheranno, rimuoveranno, vedranno o cloneranno righe se e solo se la Formula è soddisfatta. Certi comandi azioni dai Settings (Add Record, Remove Record, Clone Rows, and Recalculation) saranno disponibili ma non cliccabili nell'applicazione finché le condizioni della Formula non saranno soddisfatte. (Consulta Abilitare o disabilitare l'aggiunta, clonazione o eliminazione delle righe per maggiori informazioni riguardo azioni che puoi abilitare per gli utenti per ciascuna tabella dell'applicazione.)

Note

I passi sono gli stessi sia per la tabella di Master che per quelle di Dettaglio.

Restringere l'aggiunta di nuove righe

Segui i passi sotto per inserire una Formula e permettere l'aggiunta di nuove righe se e solo se le sue condizioni sono soddisfatte. Queste sono chiamate Add Restrictions.

  1. Nel Design Mode, cliccare su Settings nella barra laterale sinistra.

  2. Cliccare sulla tab della tabella nella quale vuoi inserire una Formula per gestire l'aggiunta di nuove righe.

  3. Nelle impostazioni del sotto-pannello Settings, cliccare sul pulsante Add sotto le opzioni Restrictions. L'azione apre il Formula Editor per inserire una Formula.

  4. Cliccare sul pulsante Save per salvare tutti i cambiamenti. Troverai il pulsante Save nell'angolo in alto a sinistra del Design Mode.

Success

Gli utenti aggiungeranno righe alla tabella se e solo se le condizioni della Formula sono soddisfatte.

Restringere modifiche a righe esistenti

Segui i passi sotto per inserire una Formula e permettere la modifica di righe esistenti se e solo se le sue condizioni sono soddisfatte. Queste sono chiamate Edit Restrictions.

  1. Nel Design Mode, cliccare su Settings nella barra laterale sinistra.

  2. Cliccare sulla tab della tabella nella quale vuoi inserire una Formula per gestire la modifica di righe esistenti.

  3. Nelle impostazioni del sotto-pannello Settings, cliccare sul pulsante Edit sotto le opzioni Restrictions. L'azione apre il Formula Editor per inserire una Formula.

  4. Cliccare sul pulsante Save per salvare tutti i cambiamenti. Troverai il pulsante Save nell'angolo in alto a sinistra del Design Mode.

Success

Gli utenti modificheranno righe esistenti se e solo se le condizioni della Formula sono soddisfatte.

Example

L'applicazione Warehouse Orders gestisce gli ordini da un magazzino.

Ciascuna riga della tabella di Master è un ordine. Ciacuna riga ha un menù a tendina Lookup chiamato Order Status. Order Status registra l'Id univoco per ciascun stato possibile dell'ordine. (E.g. Lo stato "Placed" ha l'Id 1 e lo stato "Cancelled" ha lo stato Id 2.)

Order Status traccia lo stato dell'ordine registrando lo stato dell'Id dallo Storage che contiene i nomi dei vari stati (e.g. "Placed", "Waiting for Payment", "In Preparation" e così via). Un'applicazione specifica permette di registrare i differenti stati per Order Status.

Quando un ordine ha lo stato "Cancelled" o "Completed", gli utenti non dovrebbero essere in grado di fare nessun altro cambiamento: l'ordine è già partito o è archiviato.

In questo caso, sarebbe utile bloccare interamente l'editabilitù quando Order Status è o "Cancelled" o "Completed". Una formula di Restrizione per l'editabilità (Edit) è la soluzione migliore in questo caso.

Il Designer va in Design Mode e nel pannello Settings. Clicca sulle restrizioni Edit per inserire la seguente Formula:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 /*
 Una Edit Restriction permette di modificare una riga quando la
 Formula verifica che tutte le condizioni siano verificate.
 Questa formula permette di editare le righe se e solo se lo stato
 dell'ordine differisce da "Cancelled" o "Completed".

 OrderStatusId è il campo numerico (Numeric) che registra 
 l'Identity delle differenti opzini del menù a tendina.

 $CURRENTSTORAGE.OrderStatusId è la variabile di sistema che si
 riferisce al valore del mneù a tendina Lookup OrderStatusId.

 La funzione =NEQ() controlla che due valori NON siano uguali.

 In particolare, =NEQ($CURRENTSTORAGE.OrderStatusId;2) significa
 che OrderStatusId NON DEVE essere uguale all'Id 2. Id 2 è lo status
 "Cancelled".

 In particolare, =NEQ($CURRENTSTORAGE.OrderStatusId;6) significa
 che OrderStatusId NON DEVE essere uguale all'Id 6. Id 6 è lo status
 "Completed".        

 La funzione =AND() accetta come parametri quante formule e valori si
 desiderano. =AND() verifica che tutti i suoi parametri siano 
 soddisfatti.

 In questo caso, la Formula controlla che Order Staus NON SIA o
 "Cancelled" o "Completed". Se "Cancelled" o "Completed", la
 formula bloccherà qualunque modifica. 
 */

 =AND(
     =NEQ($CURRENTSTORAGE.OrderStatusId;2);
     =NEQ($CURRENTSTORAGE.OrderStatusId;6)
  )

Il Designer salva la configurazione e i cambiamenti in Design Mode.

Ora, l'applicazione non permetterà cambiamenti a qualunque riga con lo stato "Cancelled" o "Completed".

Restringere la clonazione di righe

Segui i passi sotto per inserire una Formula e permettere la clonazione di righe esistenti se e solo se le sue condizioni sono soddisfatte. Queste sono chiamate Clone Restrictions.

  1. Nel Design Mode, cliccare su Settings nella barra laterale sinistra.

  2. Cliccare sulla tab della tabella nella quale vuoi inserire una Formula per permettere la clonazione di righe.

  3. Nelle impostazioni del sotto-pannello Settings, cliccare sul pulsante Clone sotto le opzioni Restrictions. L'azione apre il Formula Editor per inserire una Formula.

  4. Cliccare sul pulsante Save per salvare tutti i cambiamenti. Troverai il pulsante Save nell'angolo in alto a sinistra del Design Mode.

Success

Gli utenti cloneranno righe se e solo se le condizioni della Formula sono soddisfatte.

Restringere la cancellazione delle righe

Segui i passi sotto per inserire una Formula e permettere la cancellazione di righe se e solo se le sue condizioni sono soddisfatte. Queste sono chiamate Delete Restrictions.

  1. Nel Design Mode, cliccare su Settings nella barra laterale sinistra.

  2. Cliccare sulla tab della tabella nella quale vuoi inserire una Formula per gestire la modifica di righe esistenti.

  3. Nelle impostazioni del sotto-pannello Settings, cliccare sul pulsante Delete sotto le opzioni Restrictions. L'azione apre il Formula Editor per inserire una Formula.

  4. Cliccare sul pulsante Save per salvare tutti i cambiamenti. Troverai il pulsante Save nell'angolo in alto a sinistra del Design Mode.

Success

Gli utenti potranno cancellare righe se e solo se le condizioni della Formula sono soddisfatte.

Example

L'applicazione Warehouse Orders gestisce gli ordini da un magazzino.

Ciascuna riga della tabella di Master è un ordine. Ciascuna rifa ha un menù a tendina Lookup chiamato Order Status. Order Status registra l'Id unico di ciascun possibile stato dell'ordine (e.g. Lo stato "Placed" ha l'Id 1 e lo stato "Cancelled" ha l'Id 2.)

Order Status traccia lo stato di un ordine registrando l'Id dello Stato da uno Storage contente i nomi dei vari stati. (e.g. "Placed", "Waiting for Payment", "In preparation", e così via.) Un'applicazione dedicata permette di registrare i differenti stati di Order Status:

Ciscun utente appartiene a uno o più gruppi utente (User Groups) per classificare i loro ruoli e operazioni (E.g. Operatore, Coordinatore Magazzino, Addetto Rifornimenti, Operatore Carrello Elevatore e così via.)

Gli utenti dovrebbero cancellare le righe degli ordini solo sotto certe circostanze:

  1. Lo stato dell'ordine è "Cancelled".
  2. L'utente è o un Operatore (Clerk) o un Coordinatore Magazzino (Warehouse Coordinator). Se l'amministrazione gli ha assegnato questi ruoli, sanno cosa fanno: possono cancellare liberamente le righe.

In altri casi, gli utenti non dovrebbero cancellare le righe. Una Restrizione per la cancellazione (Delete) è la soluzione migliore in questi casi.

Il Designer va in Design Mode e nel pannello Settings. Cliccano sulle restrizioni Delete per inserire la seguente Formula:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 /*
 Una restrizione di cancellazione (Delete) per cancellare una
 riga quando tutte le condizioni sono soddisfatte. 

 Questa formula permette di cancellare una riga quando almeno
 una delle condizioni è soddisfatta:

      - se lo stato dell'ordine è diverso da "Cancelled" (Id 2).
      - se l'utente è CLerk o Warehouse Coordinator.

 La funzione =CONTAINSLIST() accetta due list di elementi come
 parametri.
 =CONTAINSLIST() controlla se la lista del primo parametro 
 contiene almeno un elemento della lista del secondo parametro.

 Il primo parametro di =CONTAINSLIST() è la variabile di sistema
 $CURRENTUSER.GROUPNAMES. $CURRENTUSER è la variable di sistema che
 si riferisce all'utente attualmente loggato. $CURRENTUSER.GROUPNAMES 
 è l'opzione che si riferisce alla lista dei gruppi dell'utente. La
 variabile $CURRENTUSER.GROUPNAMES si riferisce già a una lista di 
 valori.

 Il secondo parametro di =CONTAINSLIST() è la funzione =LIST(). 
 =LIST() è impiegato come parametro di una formula per inserire
 liste di valori a mano. In questa formula, il Designer inserisce
 una lista specifica di valori,  =LIST("Clerk"; "Warehouse Coordinator");
 i.e. i nomi dei gruppi utente fra virgolette ("").

 OrderStatusId è il campo che registra l'Identity delle differenti
 opzioni del menù a tendina Lookup.

 $CURRENTSTORAGE.OrderStatusId è la variabile di sistema che si riferisce
 al valore del menù a tendina Lookup OrderStatusId delle righe.

 La funzione =EQ() controllache due valori siano gli stessi.

 In particolare, =NEQ($CURRENTSTORAGE.OrderStatusId;2) significa
 che OrderStatusId NON DEVE essere uguale all'Id 2. Id 2 è lo status
 "Cancelled".

 La funzione =OR() accetta come parametri qualunque numero di formule.
 =OR() verifica che almeno uno dei suoi parametri sia soddisfatto.

 La formula permette la cancellazione dlele righe se lo stato dell'ordine
 è "Cancelled" o la lista dei gruppi utenti contiene o Clerk o Warehouse
 Coordinato o entrambe le condizioni siano vere.
 */

 =OR(
      =CONTAINSLIST(
            $CURRENTUSER.GROUPNAMES;
            =LIST("Clerk"; "Warehouse Coordinator")
            );
      =EQ($CURRENTSTORAGE.OrderStatusId;2)
   )

Il Designer salva la confituazione e i cambiamenti in Design Mode.

Ora, l'applicazione non permetterà di cancellare ordini se e solo se lo stato è "Cancelled" o l'utente è Operatore (Clerk) o un Coordinatore Magazzino (Warehouse Coordinator).

In altre circostanze, una notifica spiega che l'operazione non è permessa per la riga.

Restringere il ricalcolo delle righe

Segui i passi sotto per inserire una Formula e permettere il ricalcolo dei valori delle righe se e solo se le sue condizioni sono soddisfatte. Queste sono chiamate Recalculate Restrictions.

  1. Nel Design Mode, cliccare su Settings nella barra laterale sinistra.

  2. Cliccare sulla tab della tabella nella quale vuoi inserire una Formula per permettere la clonazione di righe.

  3. Nelle impostazioni del sotto-pannello Settings, cliccare sul pulsante Recalculate sotto le opzioni Restrictions. L'azione apre il Formula Editor per inserire una Formula.

  4. Cliccare sul pulsante Save per salvare tutti i cambiamenti. Troverai il pulsante Save nell'angolo in alto a sinistra del Design Mode.

Success

Gli utenti potranno ricalcolare righe se e solo se le condizioni della Formula sono soddisfatte.

Restringere quali righe mostrare

Segui i passi sotto per inserire una Formula e mostrare solo certe righe sulla tabella se e solo se le sue condizioni sono soddisfatte. Queste sono chiamate Row Restrictions.

Attention

Controlla l'eccezioni da considerare quando si usano Formule nelle restrizioni di riga (Row Restrictions) al passo 4.

  1. Nel Design Mode, cliccare su Settings nella barra laterale sinistra.

  2. Cliccare sulla tab della tabella nella quale vuoi inserire una Formula per permettere la clonazione di righe.

  3. Nelle impostazioni del sotto-pannello Settings, cliccare sul pulsante Recalculate sotto le opzioni Restrictions. L'azione apre il Formula Editor per inserire una Formula.

    Attention

    Non puoi fare riferimento a una Colonna Logica (i.e. $$logicalColumnName) in una restrizione di riga (Row Restriction). Il Formula Editor non validerà le Formule che usano riferimenti a Colonne Logiche nelle restrizione di riga (Row Restriction)

    Attention

    Le restrizioni di riga (Row Restrictions) funzionano differentemente da altri posti dove puoi inserire Formule (e.g. campi calcolati, colori Layout e così via). Il contesto dove si filtrano e recuperano righe per la tabella è la motivazione di quest'eccezione. Questo significa che un Formula che funziona come al solito in campi calcolati potrebbe non funzionare e richederebbe alcuni cambiamenti. Segui le regole sotto quando scrivi formule per restrizioni di riga (Row Restrictions):

    a. Tutte le condizioni di visibilità delle formule Devono riferirisci a campi delle righe sulla tabella e applicazione correnti.

    1
    2
    3
    4
    5
    6
    7
      // Qualche esempio.
    
      // No. Questa non funzionerà perché non si riferisce a valori sulla tabella corrente.
      =EQ($CURRENTUSER.EMAIL; "j.doe@vesenda.com")
    
      // Sì. Questa funzionerà perché si riferisce a valori sulla tabella corrente.
      =EQ($CURRENTSTORAGE.taskOwnerEmail; "j.doe@vesenda.com")
    

    b. Funzioni come =LOOKUP(), =LOOKUPLIST() e altre funzioni che recuperano informazioni da altri Storage non possono riferirsi a valori della tabella corrente nell'applicazione. =LOOKUP() e =LOOKUPLIST() devono riferirsi o a valori costanti o variabili di sistema.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
      // No. La =EQ() si riferisce a un valore sulla tabella; i.e. $CURRENTSTORAGE.Id_Project. 
      =CONTAINS( 
            =LOOKUPLIST(
                  #sProjectManagers;
                  #sProjectManagers.Email;
                  =EQ(sProjectManagers.Id_Project; $CURRENTSTORAGE.Id_Project)
            );
            $CURRENTUSER.EMAIL
      )
    
      // Sì. =EQ() si riferisce solo a costanti o varliabili di sistema come $CURRENTUSER.EMAIL.
      =CONTAINS( 
            =LOOKUPLIST(
                  #sProjectManagers;
                  #sProjectManagers.Id_Project;
                  =EQ(#sProjectManagers.Email; $CURRENTUSER.EMAIL)
            );
            $CURRENTSTORAGE.Id_Project
      )
    

    c. Quando impieghi funzioni =IF(), devi rispettare gli stessi requisiti di (b); solo valori costanti e variabili di sistema.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
      // Esempio 1. No. =EQ($CURRENTSTORAGE.Completed; $TRUE) si riferisce a un valore di un campo sulla tabella.
      =IF(
            =EQ($CURRENTSTORAGE.Completed; $TRUE);
            =EQ($CURRENTSTORAGE.isApproved; $TRUE);
            =EQ($CURRENTSTORAGE.isApproved; $FALSE)               
      )
    
      // Esempio 2. Sì. Nella condizione di =IF() ci stanno solo variabili di sistema e costanti ("Managers").
    
      =IF(
            =CONTAINS($CURRENTUSER.GROUPNAMES; "Managers");
            =EQ($CURRENTSTORAGE.isApproved; $TRUE);
            =EQ($CURRENTSTORAGE.isApproved; $FALSE)
      )
    

    d. In una restrizione di riga (Row Restriction) di un Dettaglio, la variabile di sistema $CURRENTSTORAGE.$MASTER.fieldName si comporta come una costante e pui usarla. $CURRENTSTORAGE.$MASTER.fieldName non varia per le righe di Dettaglio della tabella di Master.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
      /* 
      Le seguenti formule come restrizioni di riga per i Dettagli sono valide.
      Le formule usano $CURRENTSTORAGE.$MASTER.fieldName per riferirsi ai valori.
      */
    
      // Primo esempio
    
      =IF(
            =EQ($CURRENTSTORAGE.$MASTER.isArchived; $TRUE);
            =NEQ($CURRENTSTORAGE.taskStatusLookupId; 2)
      )
    
      // Secondo esempio
    
      =CONTAINS( 
            =LOOKUPLIST(
                  #sProjectManagers;
                  #sProjectManagers.Id_Project;
                  =EQ(#sProjectManagers.Email; $CURRENTSTORAGE.$MASTER.Email)
            );
            $CURRENTSTORAGE.Id_Project
      )
    

  4. Cliccare sul pulsante Save per salvare tutti i cambiamenti. Troverai il pulsante Save nell'angolo in alto a sinistra del Design Mode.

Success

Gli utenti vedranno righe solo le righe che soddisfano le condizioni della Formula.