Vai al contenuto

Formulario casi d'uso

Info

Puoi trovare la sintassi e il ruolo di ciascuna funzione e variabile in Reference Funzioni e Variabili. Consulta la reference per imparare l'uso di ciascuna funzione e variabile.

Il documento Formulario casi d'uso raccoglie i casi d'uso di formule più comuni incontrati nell'uso quotidiano di eLegere. Puoi:

  • Copiare e incollare le formule e adattarle al tuo caso.
  • Usare i casi come schema per scrivere le tue formule.
  • Combinare i casi per usi più complessi.

Indice

Info

Ogni caso d'uso ha il seguente formato:

Titolo caso d'uso

Il titolo dello scenario del caso d'uso.

Scenario

Questo paragrafo spiega lo scenario e quale necessità la formula deve soddisfare.

Dove inserire?

Questo pragrafo spiega dove inserire la formula relativa.

Formula

Questo paragrafo contiene la formula e dove usarla.

Ogni sezione Formula ha in fondo un sommario delle funzioni e variabili di sistema usati nel caso.

Commentario

Questo paragrafo discute come impiegare la formula in casi d'uso simili o eventuali eccezioni.


Aspetto

Questa sezione raccoglie casi d'uso dove l'aspetto dell'applicazione cambia secondo certe condizioni.

La cella cambia colore quando registri una spesa o entrate

Scenario

Un'applicazione di finanza personale registra tutte le spese e le entrate.

L'applicazione colora la cella "Value €" di verde se la riga è un'entrata o rosso se la riga è una spesa.

Dove inserire?

Se vuoi configurare la cella di un tabella per cambiare colore date certe condizioni:

  1. In Design Mode, andare in Layout.

  2. Cliccare sul pulsante Cell Background Color per la cella che vuoi configurare. L'azione apre la finestra Color Settings.

  3. Nella finestra Color Settings, cliccare sul pulsante Set Formula per aprire il Formula Editor.

Formula

La seguente formula controlla se il valore è positivo o negativo.

  • Se positivo, il valore è un'entrata e la cella diventa verde.
  • Se negativo, il valore è una spesa e la cella diventa rossa.

Oltre a entrate e uscite, ci potrebbe essere il caso dove il valore inserito è 0. In caso il valore sia 0, il colore di cella dovrebbe essere grigio.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
/*
Se (=IF)
      l'ammontare del campo Valore ($CURRENTSTORAGE.Valore) è maggiore di (=GT) di 0,
      allora lo sfondo cella diventa verde.
      Altrimenti, se (=IF)
            l'ammontare nel campo Valore ($CURRENTSTORAGE.Valore) è inferiore (=LT) a 0,
            allora lo sfondo della cella diventa rosso.
            Altrimenti, lo sfondo della cella diventa grigio.
*/

=IF(
      =GT($CURRENTSTORAGE.Valore; 0);
      "green";
      =IF(
            =LT($CURRENTSTORAGE.Valore; 0);
            "red";
            "gray"
      )
)

Question

Come si specifica un colore particolare in una formula? Inserisci fra virgolette ("") un codice che specifica il colore. eLegere supporta qualunque standard formato colore HTML

Funzioni e Variabili di Sistema Utilizzati

Commentario

Puoi impiegare lo stesso schema formula anche per altri componenti di Layout in Design Mode.

Per esempio, se vuoi cambiare il colore del testo di cella secondo il suo valore, inserisci la formula cliccando sul pulsante Cell Text Color.

Si possono usare quante formule Comparison si desidera per aggiungere condizioni e i relativi colori. Nel caso si voglia aggiungere più condizioni da soddisfare, aggiungere un =AND() o un =OR() come primo parametro di =IF(). Aggiungere in seguito più funzioni Comparison (es. =GT(), =LT(), =GTE(), =LTE() e =EQ()).

Usare più di due funzioni =IF() innestate l'una dentro l'altra per aggiungere più condizioni all'albero delle condizioni.

Example

Un esempio di condizioni innestate in una formula.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
=IF(
     [Inserire qui una funzioni che controlli il valore];
     "Inserire il nome o codice colore qui";
     =IF(
           ...;
           =IF(
                 ...;
                 =IF(
                       ...;
                       =IF(
                             ...
                       )
                 )
           )
     )
)

Cambiare il colore della riga quando lo stato cambia

Scenario

Un'applicazione gestisce i rimborsi.

Un menù a tendina lookup registra lo stato della richiesta (es. Bozza, Sottomessa, Approvata, Rigettata, Revisione).

L'applicazione deve evidenziare con colori diversi la riga in base allo stato. Per esempio:

  • Bozza è giallo.
  • Revisione o Sottomessa sono bianco.
  • Approvata è verde.
  • Rigettata è rossa.

Dove inserire?

Se vuoi configurare una riga per cambiare colori dati certi criteri:

  1. In Design Mode, andare in Layout.

  2. Attivare l'interruttore Toggle Advanced Settings. Quest'azione apre le impostazioni avanzate.

  3. Cliccare sul pulsante Background (D) sotto Row Colors. L'azione apre la finestra Row background color.

  4. Nella finestra Color Settings, cliccare sul pulsante Set Formula per aprire il formula editor.

Formula

La formula controlla l'opzione scelta nel menù a tendina Lookup Status. Ogni opzione corrisponde a un Id da 1 a 5.

In base al valore di Status, la formula specifica un colore per quello status. L'applicazione mostra dunque la riga usando quel colore.

 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
/*
In base al (=SWITCH)
      valore del campo Status ($CURRENTSTORAGE.Status):
      - in caso (=CASE) sia 1 (es. Bozza), la cella deve essete gialla-
      - in caso (=CASES) sia 1 e 2. (es. Revisione e Sottomessa), bianco.
      - in caso (=CASE) sia 4 (Approvata), verde.
      - in caso (=CASE) sia 5 (Rigettata), rosso.
      - in tutti gli altri casi (=DEFAULT) grigio.

Da notare che
- Si deve specificare almeno un =CASE() o =CASES() dentro =SWITCH().
- Puoi inserire quanti =CASE() e =CASES() si desiderino.
- =DEFAULT() è opzionale.
      Se non si specifica =DEFAULT(), la formula non colorerà la riga
      se il valore non è elencato in uno dei =CASE() o =CASES().
*/

=SWITCH(
    $CURRENTSTORAGE.Status;
    =CASE(1; "yellow");
    =CASES(=LIST(2; 3); "white");
    =CASE(4; "green");
    =CASE(5; "red");
    =DEFAULT("gray")
)

Question

Come si specifica un colore particolare in una formula? Inserisci fra virgolette ("") un codice che specifica il colore. eLegere supporta qualunque standard formato colore HTML

Funzioni e Variabili di Sistema Utilizzati

Commentario

Puoi impiegare lo stesso schema formula anche per altri componenti di Layout in Design Mode.

Per esempio, se vuoi cambiare il colore del testo di cella secondo il suo valore, inserisci la formula cliccando sul pulsante Cell Text Color.

Se hai bisogno di un colore specifico nel caso il valore non soddisfi nessuna delle condizioni: aggiungi =DEFAULT() come ultimo parametro della funzione =SWITCH(). =DEFAULT() ha solo un parametro che specifica il valore predefinito se nessuna condizione =CASE() è soddisfatta.

Example

1
2
3
4
5
6
=SWITCH(
      $CURRENTSTORAGE.fieldValue;
      =CASE(...; ...);
      ...
      =DEFAULT([Inserire qui il valore predefinito desiderato])
)     

Formattare una cella numerica secondo la valuta

Scenario

Nell'applicazione "Project Tasks", ciascun progetto ha un menù a tendina lookup chiamato Contract's Currency. Gli utenti possono scegliere la valuta del budget disponibile da Contract's Currency. La compagnia deve rendicontare i risultati finanziari in varie valute essendo internazionale. L'applicazione deve formatta il valore numerico di Project Budget secondo la valuta: i paesi in Nord America e UK usano il punto decimale (.) per Dollari ($) e Sterline (£) mentre vari paesi Europeo richiedono la virgola decimale per gli Euro (€).

Dove inserire?

L'opzione Format Type Formula gestisce tutte le condizioni per formattare i campi con dati di tipo numerico (Numeric), data (Date) e data-ora (DateTime).

  1. In Design Mode nel pannello Table, andare al sotto-pannello Restrictions.

  2. Cliccare sul pulsante Format Type Formula in corrispondenza del campo da formattare. (Per questo caso d'uso, è Project Budget.) Trovi il pulsante Format Type Formula sotto la colonna Restrictions.

Formula

La formula ritornma una stringa formato differente secondo l'Id della valuta dal menù a tendina lookup Contract's Currency. Contract's Currency è l'etichetta della colonna nell'applicazione decisa dal Designer. Il nome attuale del campo è currencyLookup.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
/* 
      Controlla il valore della lookup. 

      Se (=IF) l'Id memorizzato nella Lookup ($CURRENTSTORAGE.currencyLookup)  
      è uguale (=EQ) 1 (€), fornisce una stringa ("{1:,#.00##}").
      La stringa contiene l'opzione (1) per invertire virgola  e punto per i numeri decimali più il formato (,#.00##). (Vedere il commentario per maggiori informazioni.)

      Altrimenti, fornisce lo stesso formato ma nessuna opzione per 
      invertire virgola e punto ("{0:,#.00##}"). 
*/

=IF(
    =EQ($CURRENTSTORAGE.currencyLookup; 1);
    "{1:,#.00##}";
    "{0:,#.00##}"
)
Funzioni e Variabili di Sistema Utilizzati

Commentario

La formula è piuttosto semplice: una funzione =IF() verifica il valore della Lookup e fornisce una certa asserzione con il formato all'applicazione.

Quando si forniscono le condizioni per formattare un valore numerico (Numeric), ricordare la seguente sintassi: {0/1:"formato"}. eLegere interpreta il numero inteoro come ON (1)/OFF (0) per l'interruttore nella finestra Custom format. L'interruttore inverte virgola e punto per i numeri decimale e i gruppi di migliaglia (e.g. 1,000,000.55 1.000.000,55).


Calcolo

Questa sezione raccoglie i casi d'uso dove le celle dei campi calcolano i loro valori automaticamente.

Mostrare il numero di task completati in un Task Manager giornaliero

Scenario

L'applicazione è un'applicazione di gestione task dove:

  • Ogni riga è una giornata.
  • Il Dettaglio contiene una riga per ciascun task della giornata.

Per ciascuna giornata, l'applicazione deve mostrare il numero di task completati sul numero totali di task per quella giornata.

Dove inserire?

Se il Designer vuole un campo che si aggiorna in tempo reale, deve inserire la formula in una Colonna Logica (Logical Column). Le Colonne Logiche (Logical Columns) non sono campi che esistono sullo Storage ma entità che calcolano i dati richiesti in tempo reale.

  1. Nel Design Mode, cliccare sul pulsante Add Logical Column sul pannello Master.

  2. Scegliere il tipo Calculation per la Colonna Logica (Logical Column) e dove inserire la Colonna Logica sulla tabella.

  3. Le azioni nei passaggi 1-2 spostano l'utente nel sotto-pannello Logical. Aggiungi un nome alla nuova Colonna Logica (Logical Column) (es. Task Progression)

  4. Spostarsi sul pannello Formula della tabella di Master. Cliccare sull'icona della Colonna Logica per aprire il Formula Editor.

Formula

L'applicazione di gestione task ha un Dettaglio contenente una serie di task per ciascuna giornata. Il Dettaglio si chiama dailyTasks. Ogni riga in dailyTasks ha una spunta per segnare ciascun task come Completato (i.e. il campo Completed).

Ogni riga di Master dovrebbe mostrare la Colonna Logica (Logical Column) con il numero totale di task e il numero di task completati.

Inserire la formula nel Formula Editor della Colonna Logica.

Question

In questo caso, il valore deve essere un testo (String) invece di un numero (Numeric). Questo perché i valori di un campo Numeric non permettono l'inserimento di caratteri o stringhe come \, @, task e così via.

 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
/*
La formula create il testo "X out of Y" unendo (=CONCAT) i valori calcolati sotto:
      - (1) Il numero di task completati nel Dettaglio (=AGGREGATEDETAILS, "COUNT"),
      - (2) Il testo " out of " (un semplice testo fra ""),
      - (3) Il numero totale di task nel Dettaglio (=AGGREGATEDETAILS, "COUNT")

(1) Ottieni il conteggio dei task completati:
      interrogando (=AGGREGATEDETAILS)
            il Dettaglio dailyTasks ($CURRENTSTORAGE.$DETAILS.$dailyTasks.Id_Task)
            chiedendo il numero ("COUNT") di righe
            considerando solo (=EQ)
                  le righe la cui colonna Completato (#dailyTasks.Completato) è contrassegnata ($TRUE)
            Nota: La condizione come terzo parametro in =AGGREGATEDETAILS()
                  deve riferirsi al campo colonna da controllare tramite 
                  il nome dello Storage di Dettaglio (#dailyTasks). 
(2) Notare gli spazi all'inizio e alla fine.
      =CONCAT() unisce qualunque cosa senza spazi, a meno che non si inserisca spazi manualmente.
(3) Hai bisogno solo del numero totale.
=AGGREGATEDETAILS() e "COUNT" senza condizioni è sufficiente.
*/

=CONCAT(
      =AGGREGATEDETAILS(
            $CURRENTSTORAGE.$DETAILS.$dailyTasks.Id_Task;
            "COUNT";
            =EQ(#dailyTasks.Completed;$TRUE)
      );
      " out of ";
      =AGGREGATEDETAILS(
            $CURRENTSTORAGE.$DETAILS.$dailyTasks.Id_Task;
            "COUNT"
      )
)
Funzioni e Variabili di Sistema Utilizzati

Commentario

Se vuoi calcolare dati al volo che non devi registrare, usa una Colonna Logica Calcolata (Calculated Logical Column). Le Colonne Logiche Calcolate (Calculated Logical Columns) calcolano qualunque formula e mostra il loro risultato in tempo reale.

Per creare un testo usando un insieme di valori dai campi cella e testo predeterminato, usare la funzione =CONCAT(). =CONCAT() supporta quanti parametri String il Designer desidera.

Example

Potresti usare =CONCAT() per creare un codice unico partendo da altri campi. Puoi usare funzioni come =RIGHT() e =LEFT() e =SUBSTRING() per prendere stringhe e comporle tramite =CONCAT().

La funzione =AGGREGATEDETAILS() ha svariati impieghi; contare il numero di righe in un Dettaglio è uno di essi. Puoi usare =AGGREGATEDETAILS() per sommare, trovare il valore più alto o basso oppure ottenere la media numerica dei valori di un campo del Dettaglio.

Calcolare il prezzo di un oggetto inclusa l'IVA (%)

Scenario

L'applicazione dovrebbe calcolare il costo finale dell'oggetto incluse le tasse (IVA).

L'utente sceglie un paese dal menù a tendina Lookup. Il prezzo finale dell'articolo deve cambiare secondo l'IVA locale del paese.

Dove inserire?

Nel sotto-pannello Formula, inserire la formula sotto la colonna Calculated Field in corrispondenza della riga del campo.

  1. Nel Design Mode, andare alla tabella contenente il campo con il prezzo incluso IVA.

  2. Cliccare sul sotto-pannello Formula.

  3. Cliccare sull'icona sotto la colonna Calculated Field corrispondente al campo con il prezzo con IVA.

Formula

La formula esegue due calcoli aritmetici prendendo l'IVA dallo Storage dei paesi (chiamato nell'esempio sCountriesInfo.)

Note

Le applicazioni possono rappresentare una percentuale come un numero intero (es. 100%, 50%). Negli Storage, i campi di tipo Numeric registrano le percentuali come numeri decimali. Es. 22% = 0.22, 7% = 0.07

Il campo CountryId_Lookup registra il riferimento di ciascuna nazione (Id) da #sCountriesInfo. #sCountriesInfo contiene il nome della nazione e la sua IVA (%).

Inserire la formula nel campo che registrerà il prezzo finale compreso di IVA.

 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
/*
Per ottenere i prezzi finali, la formula prende il prezzo
dell'articolo o servizio senza IVA ($CURRENTSTORAGE.priceNoVAT)  
e aggiunge (+)
il prezzo senza IVA moltiplicato (*) per la 
percentuale IVA della nazione selezionata (%) (=LOOKUP).
(L'IVA è un numero decimale come 0.22, 0.10)

Da notare che sullo Storage attuale non si 
ha l'IVA della nazione selezionata. 
Bisogna recuperare l'IVA tramite l'Id della nazione scelta ($CURRENSTORAGE.CountryId_Lookup):
      Usando =LOOKUP
            dalla tabella sCountriesInfo (#sCountriesInfo)
            Si identifica la colonna con l'informazione necessaria, i.e. IVA
            (#sCountriesInfo.VAT)
            Si compara (=EQ)
                  il valore del campo IdCountry (#sCountriesInfo.IdCountry)
                  l'Id dell'opzione nazione scelta ($CURRENSTORAGE.CountryId_Lookup)
            Se i due valori sono uguali, questo è il paese selezionato
            e =LOOKUP recupera l'IVA per il calcolo.
*/

$CURRENTSTORAGE.priceNoVAT + ($CURRENTSTORAGE.priceNoVAT * =LOOKUP(
     #sCountriesInfo;
     #sCountriesInfo.VAT;
     =EQ(
           #sCountriesInfo.IdCountry;
           $CURRENSTORAGE.CountryId_Lookup
     )
))

Note

#sCountriesInfo registra l'IVA (%) come numero decimale; quindi, moltiplicare il prezzo senza IVA (i.e. priceNoVAT) per il valore di #sCountriesInfo.VAT è sufficiente per calcolare il valore compreso di IVA.

Funzioni e Variabili di Sistema Utilizzati

Commentario

Puoi usare lo stesso schema formula per ciascun caso dove bisogna recuperare un valore da un altro Storage e usarlo per dei calcoli.

Usa la funzione =LOOKUP() e il terzo parametro per identificare il valore che stai cercando.

Example

Puoi usare lo stesso caso d'uso per imposte IVA differenziate secondo la categoria di prodotto o servizio. (Es. 4% per il cibo, 15% per il libri, 10% elettricità e gas.)

Registrare la data corrente quando si aggiunge un nuova riga

Scenario

In un'applicazione, creare una nuova riga dovrebbe compilare un campo Date o Date-Time con la data corrente automaticamente.

Dove inserire?

La data corrente dovrebbe essere un Default Value: ogni volta che l'utente inserisce una nuova riga nell'applicazione, il campo deve avere quel particolare valore. In questo caso, il valore del Date o Date-Time (se il campo è Date-Time) corrente.

  1. Nel Design Mode, andare alla tabella contenente il campo Date o Date-Time.

  2. Cliccare sulla tab Formula.

  3. Accanto al campo Date o Date-Time desiderato, cliccare sull'icona :fas fa-calculator nella colonna Default Value.

Formula

La formula è solo una variabile che punta alla Date o Date-Time corrente (in base al tipo di campo).

1
2
3
// Recupera la data corrente ed eventualmente l'ora ($CURRENTDATE)

$CURRENDATE
Funzioni e Variabili di Sistema Utilizzati

Commentario

Puoi usare la variabile di sistema $CURRENTDATE dentro campi con formule di tipo String per puntare alla data corrente.

Usa la funzione =CONCAT() se vuoi aggiungere una data a un testo.

Example

La formula sotto crea una frase partendo da un campo di tipo String (i.e. Username) e dalla variabile $CURRENTDATE.

1
=CONCAT($CURRENTSTORAGE.Username; " has registered the request in the following date: "; =FORMATDATE($CURRENTDATE; "dd/mm/yyyy"))
Da notare che è necessario =FORMATDATE()all'interno della funzione =CONCAT(). $CURRENTDATE rappresenta la data corrente nel formato proprietario eLegere. Utilizzare =FORMATDATE() per formattare la data in un formato leggibile; es. dd/mm/yyyy o mm-dd-yyyy.

Puoi trovare una lista di opzioni formato per il terzo parametro di =FORMATDATE() qui.


Notifiche

Questa sezione raccogliere casi d'uso dove puoi configurare il contenuto e il comportamento delle notifiche tramite formule.

Inviare una notifica quando si sottomette una richiesta

Scenario

Un'applicazione permette ai dipendenti di richiedere ferie e permessi.

L'applicazione deve avvisare tramite un'email i supervisori di qualsiasi richiesta sottomessa in attesa di approvazione o rifiuto.

In eLegere, i Designer possono configurare applicazioni per mandare notifiche email automaticamente. I Designer per farlo devono creare una Custom Action di tipo Send Email. I Designer possono definire i destinatari e il contenuto dinamicamente usando le formule.

Dove inserire?

Si deve creare innanzitutto una Custom Action Send Email. Usa le formule per definire dinamicamente i destinatari, l'oggetto (Subject) e il corpo testo (Body) della notifica.

Segui i passi sotto per creare una Custom Action Send Email:

  1. Nel Design Mode, cliccare sull'icona nell'angolo in alto a destra dell'interfaccia.

  2. Cliccare sul menù a tendina New Action e scegliere Send Email come opzione.

  3. Nella barra laterale sinistra con la lista delle Custom Action, cliccare sull'azione appena creata.

  4. Disabilitare l'interruttore Manual. L'azione parte quando un evento innesca l'attivazione.

  5. Scegliere POST ROW INSERT come opzione dal menù a tendina Event. Questa opzione innesca l'azione a ogni nuovo inserimento in tabella.

I Designer possono inserire formule:

  1. Nel campo destinatario To: tramite l'icona .
  2. Nell'oggetto, Subject.
  3. Nel corpo testo, Body.

Note

Inserire formule o nel Subject o nel Body richiede racchiudere la formula fra due parentesi quadre []. All'interno del Subject e del Body delle Custom Action Send Email, le applicazioni interpretano formule fuori dalle parentesi quadre [] come testo standard e non le eseguiranno.

Formula

La Custom Action Send Email impiega tre formule separate nelle tre sezioni To:, Subject e Body.

Devi inserire le formule in queste sezioni del sotto-pannello della Custom Action Send Email.

  1. Per il To:, inserisci una formula per recuperare la lista supervisori.
  2. Per il Subject, inserisci una formula per registrare data e ora della richiesta.
  3. Per il Body, inserisci un link alla richiesta per velocizzare l'approvazione o il rifiuto. È opzionale ma utile.

Funzioni e Variabili di Sistema Utilizzati
Campo To:

Per il To:, inserisci una formula per recuperare la lista supervisori.

Cliccare sull'icona accanto al campo To:.

Note

In questo caso, non serve racchiudere la formula fra due parentesi quadre []. Stai inserendo una formula nel Formula Editor.

La funzione =GROUPUSERSEMAILS() specifica nel To: di prendere tutti gli indirizzi email dei membri del Gruppo Utente "Supervisors".

La Custom Action manderà la mail a chiunque appartenga al Gruppo Utente "Supervisors".

1
=GROUPUSERSEMAILS("Supervisors")
Subject

Per il Subject, inserisci una formula per registrare data e ora della richiesta.

Note

La formula va nel campo Subject. La formula richiede le parentesi quadre per essere interpretata come formula ([]).

Digita un testo standard per l'oggetto (Subject) della mail. Per esempio:

1
  A request needs approval

Aggiungi la formula per inserire la data alla fine del testo predefinito.

Il compito della formula è prendere la data corrente ($CURRENTDATE) e mostrarla (=FORMATDATE) secondo il formato "giorno-mese-anno ora:minuti" ("dd-mm-yy hh:mm").

$CURRENTDATE recupera la data e ora corrente.

La funzione =FORMATDATE() formatta la data e ora corrente secondo il seguente formato: "dd-mm-yy hh:mm".

1
[=FORMATDATE($CURRENTDATE; "dd-mm-yy hh:mm")]
Body

Per il Body, inserisci un link alla richiesta per velocizzare l'approvazione o il rifiuto. È opzionale ma utile.

Note

La formula va nel corpo testo Body. La formula richiede le parentesi quadre per essere interpretata come formula ([]).

Scrivere un testo predefinito per il Body. Per esempio:

1
  A employee has submitted a new request waiting for approval. Click on the link to view the request.

La formula va nel testo del Body.

Crea un link alla riga (=GENERATEROWLINK) specificata nello Storage dell'applicazione (#sHolidayRequests).

La formula genera un link che rimanda all'applicazione e al nuovo inserimento. Punta all'applicazione e allo Storage #sHolidayRequests che contengono le richieste.

1
[=GENERATEROWLINK(#sHolidayRequests)]

Commentario

Puoi usare le stesse formule per le notifiche riguardo modifiche righe, cancellazione o allegati (upload, download o cancellazione). Scegliere un innesco differente dal menù a tendina Event dal pannello Info.

Example

  • POST ROW UPDATE Seleziona questa opzione dal menù a tendina Event se vuoi avvertire il Gruppo Utente dopo una qualunque modifica.
  • POST ROW DELETE Seleziona questa opzione dal menù a tendina Event se vuoi avvertire il Gruppo Utente dopo una qualunque cancellazione.
  • POST ATTACHMENTS INSERT Seleziona questa opzione dal menù a tendina Event se vuoi avvertire il Gruppo Utente dopo l'upload di un qualunque allegato.
  • POST ATTACHMENTS DELETE Seleziona questa opzione dal menù a tendina Event se vuoi avvertire il Gruppo Utente dopo la cancellazione di un qualunque allegato.

Puoi trovare tutti i formati Data/Ora per il terzo parametro della funzione =FORMATDATE() qui.

Se vuoi inserire un link a un'applicazione differente usando =GENERATEROWLINK():

  1. Inserire come primo parametro il nome dello Storage dell'altra applicazione.
  2. Inserire come secondo parametro il campo da considerare dallo Storage.
  3. Inserire come terzo parametro il campo designato come chiave primaria (Primary Key) nell'applicazione.
  4. L'Id dell'applicazione esterna fra virgolette ("").

Example

Un esempio di uso del link a una riga per un'applicazione differente da quella attuale.

1
[=GENERATEROWLINK(#sHolidayRequests; #sHolidayRequests.IdEntry; $CURRENTSTORAGE.IdEntry; "b87e99b5-8757-4443-b61b-ad04de55bb32")]

Restrizione

Questa sezione raccogliere i casi d'uso dove puoi restringere il contenuto mostrato dall'applicazione o le operazioni permesse (es. aggiungere, modificare o cancellare righe).

Disabilitare i cambiamenti quando lo stato del progetto è Completato

Scenario

Un'applicazione di project management deve bloccare qualunque modifica alla riga di un progetto quando il suo stato è Completato (Completed).

Solo i membri del Gruppo Utente "Chief Directors" possono modificare qualunque progetto a qualunque stadio, incluso Completato (Completed).

Dove inserire?

Se vuoi aggiungere una qualunque restrizione alla tabella riguardo aggiungere, modificare, clonare o cancellare righe:

  1. Nel Design Mode, andare al sotto-pannello Settings.

  2. Il sotto-pannello Settings mostra una tab per ciascuna tabella dell'applicazione. Andare sulla tabella desiderata (1) per applicare la restrizione.

  3. Secondo il tipo di restrizione, scegliere Edit, Add, Clone, Delete, Recalculate e Row nella sezione Restrictions (2) dei Settings.

In questo scenario, devi inserire la formula nella restrizione Edit.

Formula

Inserire la formula in Settings > [Tab della Tabella] > Restrictions > Edit.

La formula mostra o tutte le righe o certe righe secondo il Gruppo Utente.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
/*
La riga è modificabile quando almeno una delle condizioni è soddisfatta.

O (=OR):
      - L'utente corrente ($CURRENTUSER.GROUPNAMES) appartiene al Grupppo Utente "Chief Directors" (=CONTAINS). 
      - Lo stato del progetto non è (=NEQ) Completed (5).
*/

=OR(
      =CONTAINS($CURRENTUSER.GROUPNAMES; "Chief Directors");
      =NEQ($CURRENTSTORAGE.projectStatus; 5)
)
Funzioni e Variabili di Sistema Utilizzati

Commentario

Puoi creare condizioni più complesse per la restrizione usando funzioni Comparison come =AND(), =GT(), =GTE(), =LT(), =LTE(), =NEQ() o =EQ().

Rendere obbligatorio il campo Motivazione se il responsabile rifiuta una richiesta

Scenario

Un'applicazione permette ai dipendenti di richiedere ferie e permessi.

Se un supervisore rifiuta una richiesta sottomessa, il supervisore deve riempire il campo Motivazione (Motivation) con una spiegazione.

Dove inserire?

Se vuoi aggiungere una qualunque restrizione a celle di campi specifici, devi andare nel sotto-pannello Restrictions.

  1. Andare alla tabella contenente il campo.

  2. Cliccare sul pulsante del sotto-pannello Restrictions.

  3. Cliccare sul pulsante Cell Mandatory Restriction accanto al campo che vuoi restringere.

Inserire la formula nella Cell Mandatory Restriction per il campo Motivation.

Formula

Il campo Motivazione registra il testo che spiega la motivazione della scelta dello status.

Se lo stato è Rifiutato (Rejected), allora l'utente deve inserire una motivazione per il rifiuto.

1
2
3
4
5
6
/*
Il campo Motivation diventa obbligatorio quando 
lo stato della richiesta ($CURRENSTORAGE.requestStatus) è (=EQ) Rejected (3).
*/

=EQ($CURRENSTORAGE.requestStatus; 3)
Funzioni e Variabili di Sistema Utilizzati

Commentario

Puoi aggiungere una qualsiasi funzione Comparison in una Cell Mandatory Restriction per determinare condizioni che rendono obbligatorio un campo se soddisfatte. Per esempio: =NEQ(), =ISNULL(), =ISNOTNULL(), =GT(), =GTE(), =LT() e =LTE().

I dipendenti possono solo aggiungere righe mentre i Manager possono fare modifiche o cancellare righe

Scenario

In un'applicazione finanziaria, ciascun utente può registrare le spese fatte, ma non possono effettuare cambiamenti né cancellare i loro inserimenti.

In questo scenario, solo i manager del budget possono aggiornare o modificare le righe dell'applicazione.

Dove inserire?

Se vuoi aggiungere una qualunque restrizione alla tabella riguardo aggiungere, modificare, clonare o cancellare righe:

  1. Nel Design Mode, andare al sotto-pannello Settings.

  2. Il sotto-pannello Settings mostra una tab per ciascuna tabella dell'applicazione. Andare sulla tabella desiderata (1) per applicare la restrizione.

  3. Secondo il tipo di restrizione, scegliere Edit, Add, Clone, Delete, Recalculate e Row nella sezione Restrictions (2) dei Settings.

In questo scenario, devi inserire la formula nella restrizione Edit e Delete.

Formula

La seguente formula verifica che l'utente appartenga al gruppo "Managers".

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
/*
La formula controlla che la lista dei Gruppi Utenti dell'utente 
attuale ($CURRENTUSER.GROUPNAMES) contenga (=CONTAINS) "Managers".

$CURRENTUSER è una variabile di sistema che si riferisce alle informazioni dell'utente attivo.
$CURRENTUSER.GROUPNAMES recupera la lista dei Gruppi Utente dell'utente corrente.
=CONTAINS() controlla se "Managers" è nella lista dei Gruppi Utente dell'utente corrente.
*/

=CONTAINS($CURRENTUSER.GROUPNAMES; "Managers")
Funzioni e Variabili di Sistema Utilizzati

Commentario

Nell'esempio sopra, solo gli utenti che appartengono al Gruppo Utente "Managers" posso o modificare o cancellare una qualunque riga della tabella.

Se vuoi abilitare più di un Gruppo Utente per editare o cancellare righe: puoi usare la funzione =CONTAINSLIST() e =LIST() come secondo parametro. =CONTAINSLIST() funziona come la funzione =CONTAINS(), ma =CONTAINSLIST() controlla se una lista contiene uno o più elementi da =LIST().

Example

La formula verifica che l'utente appartenga o al Gruppo Utente "Managers" o "Product Owners" o "Developers". Se l'utente appartiene ad almeno uno di questi gruppi, l'applicazione abilita sia la modifica che la cancellazione.

1
=CONTAINSLIST($CURRENTUSER.GROUPNAMES; =LIST("Managers"; "Product Owners"; "Developers"))

Il caso d'uso prende come esempio una restrizione per modificare e cancellare. Se vuoi restringere Add, Clone e Recalculate per certi Gruppi Utente, la stessa formula funziona anche per queste azioni.

Gli utenti dovrebbero vedere solo le proprie righe

Scenario

In un'applicazione che gestisce il budget domestico, ogni utente deve vedere solo le proprie righe con le proprie spese o entrate. In questo modo, la loro privacy è garantita.

Dove inserire?

Se vuoi aggiungere una restrizione riguardo a quali righe un utente può vedere in un'applicazione:

  1. Nel Design Mode, andare al sotto-pannello Settings.

  2. Il sotto-pannello Settings mostra una tab per ciascuna tabella dell'applicazione. Andare sulla tabella desiderata (1) per applicare la restrizione.

  3. Secondo il tipo di restrizione, scegliere Edit, Add, Clone, Delete, Recalculate e Row nella sezione Restrictions (2) dei Settings.

In questo scenario, devi inserire la formula nella restrizione Row.

Formula

La formula mostra all'utente corrente solo le righe che ha creato.

Question

USER_ID_CREATION è un campo di sistema: ogni Storage creato ha questo campo. Riferisciti a USER_ID_CREATION nelle tue formule se vuoi abilitare azioni o mostrare le righe che l'utente corrente ha creato.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
/* 
La formula verifica se il creatore della riga 
($CURRENTSTORAGE.USER_ID_CREATION) è (=EQ)
l'utente corrente loggato ($CURRENTUSER.LOGONNAME).

Note:
      USER_ID_CREATION è il campo di sistema creato per ciascun Storage.
      USER_ID_CREATION registra chi ha creato la riga nell'applicazione.
      La formula sotto verifica che il creatore registrato in USER_ID_CREATION
      corrisponda all'utente corrente. Se combaciano, 
      allora la riga appare all'utente corrente.
*/

=EQ($CURRENTSTORAGE.USER_ID_CREATION; $CURRENTUSER.LOGONNAME)
Funzioni e Variabili di Sistema Utilizzati

Commentario

Gli utenti dovrebbero vedere solo le proprie righe e i Manager tutte le righe

Scenario

Un'applicazione di gestione task registra quello che ciascun utente ha fatto e quando.

Dipendenti (Employees) e Manager (Managers) vedono insiemi differenti di righe.

Gruppo Utente Riga
Employees Solo le righe che hanno creato.
Managers Tutte le righe di tutti gli utenti.

Ogni riga ha un campo menù a tendina che registra chi ha eseguito il task.

Dove inserire?

Se vuoi aggiungere una restrizione riguardo a quali righe un utente può vedere in un'applicazione:

  1. Nel Design Mode, andare al sotto-pannello Settings.

  2. Il sotto-pannello Settings mostra una tab per ciascuna tabella dell'applicazione. Andare sulla tabella desiderata (1) per applicare la restrizione.

  3. Secondo il tipo di restrizione, scegliere Edit, Add, Clone, Delete, Recalculate e Row nella sezione Restrictions (2) dei Settings.

In questo scenario, devi inserire la formula nella restrizione Row.

Formula

Ogni riga ha un menù a tendina Lookup CompanyMembersId_Lookup per assegnare l'utente a un task specifico. CompanyMembersId_Lookup si riferisce all'anagrafica dei membri della compagnia (#CompanyMembers). Lo Storage #CompanyMembers ha fra i suoi campi il campo Email. La formula utilizza questo campo di #CompanyMembers per identificare le righe degli utenti che non appartengono al gruppo "Managers".

La formula verifica se l'utente è "Managers" (Manager) o "Employees" (Dipendente). La formula garantisce o accesso totale (Managers) o mostra solo certe righe secondo il Gruppo Utente (Employees).

 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
/*
O (=OR)
       L'utente corrente appartiene al Gruppo Utente "Managers" e vede tutto (=CONTAINS)

      O L'utente  appartiene al Gruppo Utente "Employees"  (=CONTAINS) 
      e (=AND) deve vedere solo le righe col proprio nome (=EQ).

L'applicazione identifica dalla lista dei dipendenti l'utente tramite il loro indirizzo email (=LOOKUP).

Se qualcuno accede all'applicazione e non appartiene a nessuno Gruppo Utente, allora vedrà una tabella vuota.
*/

=OR(
      =CONTAINS($CURRENTUSER.GROUPNAMES; "Managers");
      =AND(
            =CONTAINS($CURRENTUSER.GROUPNAMES; "Employees");
            =EQ(
                  $CURRENTSTORAGE.CompanyMembersId_Lookup;
                  =LOOKUP(
                        #CompanyMembers;
                        #CompanyMembers.IdCompanyMembers;
                        =EQ(#CompanyMembers.Email; $CURRENTUSER.EMAIL)
                        )
                  )        
            )
      )
Funzioni e Variabili di Sistema Utilizzati

Commentario

Puoi usare lo schema formula sopra per aggiungere quante restrizioni e condizioni tu desideri.

Aggiungi ai parametri dell'=OR() quanti Gruppi Utenti desideri tramite la funzione =CONTAINS(). Se un Gruppo Utente può vedere solo le righe che soddisfano certe condizioni, racchiudile in una funzione =AND() assieme alla funzione =CONTAINS().

Usa la funzione =LOOKUP() per recuperare qualunque informazione al di fuori dello Storage dell'applicazione corrente.

Example

Un esempio di funzioni =AND() multiple che specificano più casi nella =OR().

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
=OR(
      =CONTAINS($CURRENTUSER.GROUPNAMES; "Inserire qui il nome del Gruppo Utente");
      ...
      =AND(
           =CONTAINS($CURRENTUSER.GROUPNAMES; "Inserire qui il nome del Gruppo Utente");
           [Formula con condizione]
     );
      =AND(
           =CONTAINS($CURRENTUSER.GROUPNAMES; "Inserire qui il nome del Gruppo Utente");
           [Formula con condizione];
           ...;
           [Formula con condizione]
     )
)

Restringere la lista prodotti da un menù a tendina secondo la Categoria scelta

Scenario

Un'applicazione gestisce e traccia gli ordini da un magazzino.

L'utente dovrebbe scegliere una categoria di oggetti ed essere in grado di vedere e scegliere solo gli articoli di quella categoria.

Dove inserire?

productCategory è un campo menù a tendina Lookup. Gli utenti scelgono la categoria di prodotti da questo menù a tendina.

productList è un campo Multiselection che registra uno o più prodotti dallo Storage #Products.

Puoi inserire la formula come una Restriction Formula per la Multiselection.

  1. In Design Mode, vai alla tabella che contiene i due campi.

  2. Clicca sul pulsante Create the Lookup Relation () del campo Lookup a cui vuoi applicare la formula di restrizione.

  3. Nella finestra opzioni, cliccare sull'icona corrispondente alla Restriction Formula.

Formula

La formula mostra nella lista dei prodotti solo gli articoli che appartengono alla categoria scelta.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
La formula mostra solo gli articoli (=LOOKUPLIST) 
che corrispondono (=EQ) alla categoria scelta 
nel campo menù a tendina productCategory.

Non è presente la lista degli oggetti nello Storage attuale.
Bisogna recuperare la lista dallo Storage #Products.

La funzione =LOOKUPLIST() recupera per una lista solo gli oggetti che soddisfano 
la condizione.
L'utente vedrà solo questo insieme di elementi.
=EQ verifica che i due parametri siano uguali.
=LOOKUPLIST deve mostrare solo gli oggetti che appartengono alla stessa categoria
scelta nel menù a tendina productCategory.
*/

=LOOKUPLIST(
    #Products;
    #Products.Id_Product;
    =EQ(#Products.productCategory; $CURRENTSTORAGE.productCategory)
)
Funzioni e Variabili di Sistema Utilizzati

Commentario

Nel caso di due menù a tendina Lookup o di un menù a tendina Lookup e un campo Multiselection, usa la funzione =LOOKUPLIST() per filtrare gli elementi secondo il valore di uno dei due campi.

Come condizione, puoi usare una qualunque funzione che compara due valori; per esempio, =EQ(), =NEQ(), =GT(), =LT(), =GTE() e =LTE(). Puoi unire quante funzioni tu voglia tramite le funzioni =AND() e =OR().

Permettere di scegliere certi stati di progetto secondo lo stato corrente

Scenario

Hai un'applicazione per registrare lo stato di differenti progetti

Una volta che il responsabile progetto ha scelto un nuovo stato per il progetto, non dovrebbe essere possibile riportarlo a stati precedenti.

Dove inserire?

Devi inserire la formula come una Restriction Formula nella finestra opzioni del meù a tendina Lookup.

  1. In Design Mode, vai alla tabella contenente il menù a tendina Lookup.

  2. Cliccare sul pulsante Create the Lookup Relation () del campo Lookup a cui vuoi applicare la formula di restrizione.

  3. Nella finestra opzioni, cliccare sull'icona corrispondente alla Restriction Formula.

Formula

Il menù a tendina Lookup è il campo projectStatus e prende le opzioni dallo Storage sProjectStatuses.

sProjectStatuses contiene i seguenti stati progetto con i relativi Id:

Id Status
1 Bozza
2 Sottomesso
3 Approvato
4 Rigettato

Il valore predefinito (Default Value) è l'Id 1. (i.e. lo status Bozza) in Table > Formula > Default Value per il campo.

Inserire la formula nella Restriction Formula del menù a tendina Lookup.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
se (=IF)
      Lo stato del progetto è (=EQ) BOZZA, allora mostra 
      le opzioni BOZZA e SOTTOMESSO (=LIST).
      Altrimenti, 
            se (=IF) lo stato del progetto è sottomesso, allora 
            mostra le opzioni SOTTOMESSO, APPROVATO E RIGETTATO (=LIST)
            Altrimenti, mostra le opzioni APPROVATO E RIGETTATO (=LIST).

=IF() esegui un azione o fornisce un valore secondo il valore del primo parametro. 
=EQ() compara un campo con un altro valore.
      In questo caso, lo stato attuale del progetto con l'Id 1 di Bozza.
=LIST() supporta l'inserimento manuale di opzioni e valori.
*/

=IF(
      =EQ($CURRENTSTORAGE.projectStatus; 1);
      =LIST(1;2);
      =IF(
            =EQ($CURRENTSTORAGE.projectStatus; 2);
            =LIST(2;3;4);
            =LIST(3;4)
      )    
)

Example

=LIST(1;2) significa che la formula deve mostrare dallo Storage sProjectStatuses solo le opzioni con Id 1 e 2.

Funzioni e Variabili di Sistema Utilizzati

Commentario

Puoi configurare quante condizioni desideri per mostrare certe opzioni dallo Storage in un menù a tendina Lookup.

Come condizione, puoi usare una qualunque funzione che compara due valori; per esempio, =EQ(), =NEQ(), =GT(), =LT(), =GTE() e =LTE(). Puoi unire quante funzioni tu voglia tramite le funzioni =AND() e =OR().

Puoi anche usare la funzione =CONTAINS() e la variabile di sistema $CURRENTUSER.GROUPNAMES per mostrare certi insiemi di opzioni solo a Gruppi Utente specifici.

Example

Un esempio che mostra come differenziare opzioni in un campo Lookup o Multiselection secondo il Gruppo Utente.

1
2
3
4
5
6
7
8
9
=IF(
      =CONTAINS($CURRENTUSER.GROUPNAMES; "Project Manager");
      =LIST(1;2);
      =IF(
            =CONTAINS($CURRENTUSER.GROUPNAMES; "Task Owners");
            =LIST(2;3;4);
            =LIST(3;4)
      )    
)

Centralizzare tramite un'applicazione dedicata chi può editare o vedere dati

Scenario

Un'organizzazione sta usando eLegere come piattaforma per un forum dove gli utenti scambiano suggerimenti e chiedono domande sui propri prodotti. Quest'applicazione si chiama Answers.

Ciascuna riga sulla tabella di Master è il topic di una domanda. Ciascuna domanda sulla tabella di Master ha una tabella di Dettaglio chiamata Thread: contiene le risposte dagli altri utenti. In entrambe le tabelle, c'è una colonna dedicata per segnare e nascondere i post con con contenuto inappropriato.

L'organizzazione preferisce centralizzare la gestione utenti (e.g. moderazione, utenti bannati e così via) e i relativi permessi in un'applicazione invece di usare i Gruppi Utente (User Group).

L'applicazione che gestisce gli utenti si chiama Users List e ha i campi seguenti:

Nome Campo Tipo Descrizione
Name String Il nome dell'utente
Surname String Il cognome dell'utente
Email String Indirizzo email
UserStatus Numeric Campo usato per un menù a tendina Lookup. Registra il riferimento allo Storage che contiene gli stati degli utenti (e.g. Regolare, Sospeso, ecc.)
Permissions Numeric Campo usato per un menù a tendina Lookup. Registra il riferimento allo Storage che contiene i permessi dei ruoli degli utenti.
Secondo i permessi, l'applicazione abilita certe operazioni mettendo i campi Booleani sotto come true.
EnablePostingQuestions Boolean Se true, l'utente può postare domande nell'applicazione. Se false, l'utente non può postare domande.
EnableAnswers Boolean Se true, l'utente può postare risposte alle domande. Se false, l'utente non può postare risposte.
EnableRatingAnswers Boolean Se true, l'utente può valutare le risposte. Se false, l'utente non può valutare le risposte.
IsModerator Boolean Se true, l'utente può moderare domande e risposte e nascondere contenuto inappropriato.
EnableCategoriesEdit Boolean Se true, l'utente può aggiungere nuove categorie e sottocategorie pre i thread in un'applicazione dedicata.
EnableUserManagement Boolean Se true, l'utente può aggiungere utenti e gestire i loro permessi nell'applicazione User List.
IdUserQA Identity Il campo Identity che identifica ciascun utente in modo univoco.

Ciascun campo Booleano sta per un permesso (e.g. Enable Posting Question, Enable Answers).

Assegna un ruolo calcola il permesso assegnato automaticamente. Gli amministratori possono personalizzare i permessi di ciascun utente.

Inoltre, gli amministratori possono sospendere o bannare utenti dalle attività del forum nella stessa applicazione.

Dove inserire?

Devi inserire le formule nel Design Mode di Answers. Da Answers, le formule accederanno allo Storage dell'applicazione Users List e leggeranno ciascun permesso, abilitando o bloccando certe azioni. In particolare, devi inserire le formule nei Settings nella sezione Restriction.

Inoltre, un'altra formula è richiesta nel pannello Restriction per la Column Visibility Restriction. Devi inserire tale formula sia per le colonne Delete this Post (sulla tabella di Master) sia Moderators Delete (sulla tabella di Dettaglio Thread).

Formule

Edit
 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
/*
Se (=IF()) 
      Lo stato dell'utente recuperato nello Storage (=LOOKUP()) di Users List 
      (#QA User List.UserStatus_Id) attraverso l'email dell'utente corrente 
      ($CURRENTUSER.EMAIL) è uguale a "Regular" (Id 1 nella memoria degli stati). 
allora 
      O ()=OR())
           abilita la modifica di righe se il valore del campo dello Storage dell'applicazione 
           Answers che registra il nome utente  del creatore ($CURRENTSTORAGE.USER_ID_CREATION) 
           corrisponde (=EQ()) all'ID dell'utente corrente ($CURRENTUSER.USERID); 
           quindi, è lui o lei il creatore o la creatrice.
      OPPURE
           abilita la modifica se si recupera dallo Storage (=LOOKUP()) di Users Lists
           una riga con l'email dell'utente corrente ($CURRENTUSER.USERID) e il flag del 
           permesso di moderazione (#QA User List.Moderation) spuntato (=EQ()) per 
           l'utente ($TRUE).
In caso contrario
      Non abilitare in nessun caso la modifica per l'utente corrente. 
      ($FALSE, quindi la restrizione riceverà sempre una risposta negativa
      al consentire all'utente di modificare le righe).
*/
=IF(
    =EQ(
            =LOOKUP(
                #QA User List;
                #QA User List.UserStatus_Id;
                =EQ(#QA User List.Email; $CURRENTUSER.EMAIL)
            );
            1
    );
    =OR(
        =EQ($CURRENTSTORAGE.USER_ID_CREATION; $CURRENTUSER.USERID);
        =EQ(
            =LOOKUP(
                #QA User List;
                #QA User List.Moderation;
                =EQ(#QA User List.Email; $CURRENTUSER.EMAIL)
            );
           $TRUE        
        )
    );
    $FALSE
)
Funzioni e Variabili di Sistema Utilizzati
Add
 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
/*
Se (=IF()) 
      Lo stato dell'utente recuperato nello Storage (=LOOKUP()) di Users List 
      (#QA User List.UserStatus_Id) attraverso l'email dell'utente 
      corrente ($CURRENTUSER.EMAIL) è uguale a "Regular" (Id 1 nella memoria degli stati). 
allora 
      O (=OR())
            consente di aggiungere righe se si recupera dallo Storage di Users List (=LOOKUP()) 
            una riga con l'e-mail dell'utente corrente ($CURRENTUSER.EMAIL) e il flag dell'autorizzazione
            a postare domande (#QA User List.PostQuestion) è spuntato (=EQ() per l'utente ($TRUE). 
      OPPURE
           abilita l'aggiunta di righe se si recupera dalla memoria dell'elenco utenti (=LOOKUP()) 
           una riga con l'email dell'utente corrente ($CURRENTUSER.USERID) 
           e il flag del permesso di moderazione (#QA User List.Moderation) spuntato (=EQ()) 
           per l'utente ($TRUE).
In caso contrario
      Non abilitare in nessun caso la modifica per l'utente corrente. 
      ($FALSE, quindi la restrizione riceverà sempre una risposta negativa
      al consentire all'utente di aggiungere le righe).
*/
=IF(
    =EQ(
            =LOOKUP(
                #QA User List;
                #QA User List.UserStatus_Id;
                =EQ(#QA User List.Email; $CURRENTUSER.EMAIL)
            );
            1
    );
    =OR(
        =EQ($CURRENTSTORAGE.USER_ID_CREATION; $CURRENTUSER.USERID);
        =EQ(
            =LOOKUP(
                #QA User List;
                #QA User List.PostQuestion;
                =EQ(#QA User List.Email; $CURRENTUSER.EMAIL)
            );
           $TRUE        
        )
    );
    $FALSE
)
Funzioni e Variabili di Sistema Utilizzati
Delete
 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
/*
Se (=IF()) 
      Lo stato dell'utente recuperato nello Storage (=LOOKUP()) di Users List 
      (#QA User List.UserStatus_Id) attraverso l'email dell'utente corrente 
      ($CURRENTUSER.EMAIL) è uguale a "Regular" (Id 1 nella memoria degli stati). 
allora 
    O (=OR())
      abilita la cancellazione di righe se il valore del campo dello Storage dell'applicazione Answers 
      che registra il nome utente del creatore ($CURRENTSTORAGE.USER_ID_CREATION) corrisponde (=EQ()) 
      all'ID dell'utente corrente ($CURRENTUSER.USERID); quindi, è lui o lei il creatore o la creatrice.
    Oppure
      abilita la cancellazione di righe se si recupera dalla memoria dell'elenco utenti (=LOOKUP()) una 
      riga con l'email dell'utente corrente ($CURRENTUSER.USERID) e il flag del permesso di moderazione 
      (#QA User List.Moderation) spuntato (=EQ()) per l'utente ($TRUE).
In caso contrario
      Non abilitare in nessun caso la cancellazione per l'utente corrente. 
      ($FALSE, quindi la restrizione riceverà sempre una risposta negativa
      al consentire all'utente di cancellare le righe).
*/
=IF(
    =EQ(
        =LOOKUP(
            #QA User List;
            #QA User List.UserStatus_Id;
            =EQ(#QA User List.Email; $CURRENTUSER.EMAIL)
        );
        1
    );
    =OR(
        =EQ($CURRENTSTORAGE.USER_ID_CREATION; $CURRENTUSER.USERID);
        =EQ(
            =LOOKUP(
                #QA User List;
                #QA User List.Moderation;
                =EQ(#QA User List.Email; $CURRENTUSER.EMAIL)
            );
            $TRUE        
        )
    );
    $FALSE
)
Funzioni e Variabili di Sistema Utilizzati
Row
 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
/*
Tutte le condizioni devono essere vere per mostrare righe all'utente. 

Lo stato dell'utente (#QA User List.UserStatus_Id) dallo Storage di Users List  
(#QA User List) recuperato (=LOOKUP()) tramite la mail dell'utente corrente($CURRENTUSER.EMAIL) 
non deve essere ugulae (=NEQ()) a "Banned" (Id 3 dallo Storage degli Stati Utente).

E (=AND())
      O (=OR())
           Lo Storage di Users List contiene  (=LOOKUP()) una riga con l'email dell'utente corrente 
           ($CURRENTUSER.USERID) e il flag del permesso di moderazione (#QA User List.Moderation) 
           spuntato (=EQ()) per l'utente ($TRUE).
      Oppure
            il post non è segnato come Cancellato, i.e. Deleted ($CURRENTSTORAGE.Deleted).
            Quindi il campo Booleano Deleted non deve essere uguale (=NEQ()) a True ($TRUE).
*/
=AND(
    =NEQ(
        =LOOKUP(
            #QA User List;
            #QA User List.UserStatus_Id;
            =EQ(#QA User List.Email; $CURRENTUSER.EMAIL)
        );
        3
    );
    =OR(
        =EQ(
         =LOOKUP(
                #QA User List;
                #QA User List.Moderation;
               =EQ(#QA User List.Email; $CURRENTUSER.EMAIL)
            );
         $TRUE
         );
        =NEQ($CURRENTSTORAGE.Deleted; $TRUE)
    )
)
Funzioni e Variabili di Sistema Utilizzati
Column Visibility Restriction sulle tabelle di Master e Dettaglio

Inserisci la formula sulle tabelle di Master e Dettaglio nei rispettivi pannelli Restriction. Devi inserire la formula nella Column Visibility Restriction per i campi Booleani Delete this Post (sulla tabella di Master) e Moderators Delete (sulla tabella di Dettaglio Thread).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
/*
Mostra la colonna se recuperi una (=LOOKUP()) una riga dallo Storage di Users List
con l'email dell'utente corrente e il permesso Moderatore è segnato per l'utente.
Quindi il permesso Moderatore è (=EQ()) spuntato ($TRUE). 
*/
=EQ(
    =LOOKUP(
        #QA User List;
        #QA User List.Moderation;
        =EQ(#QA User List.Email; $CURRENTUSER.EMAIL)
    );
    $TRUE
)
Funzioni e Variabili di Sistema Utilizzati

Commentario

Puoi usare lo stesso schema formula per:

  • rendere editabili certe colonne (Restrictions > Column Editability Restriction)
  • rendere editabili certe celle (Restrictions > Cell Editability Restriction)
  • permettere l'esecuzione di certe Custom Action (Custom Actions panel > [Choose a Custom Action from the List] > Restrictions > Execution)

solo a specifici stati utenti o opzioni spuntate in un'applicazione dedicata ai permessi. Cambia i nomi delle colonne nei placeholder delle formule del caso d'uso.

In breve, usa lo stesso schema formule quando uno Storage contiene i permessi degli utenti e devi accedere da un'altra applicazione per permettere certa azioni o mostrare solo dati specifici.