Passa al contenuto principale

Auto fields

Gli auto fields sono campi speciali compilati automaticamente secondo una formula. Puoi usarli per calcolare valori automaticamente in base ad altri campi. È una delle funzionalità più potenti di Bobuild.

Quando un campo è impostato su auto, sarà in sola lettura e quindi non modificabile direttamente dagli utenti. Le azioni create/update dei Task che assegnano a un campo automatico (o alla chiave primaria) vengono ignorate a runtime — App Health avvisa se un Task le punta ancora. I campi automatici restano visualizzati nei Widget dove li vuoi vedere e disponibili ovunque imposti condizioni.

Se ti serve solo un calcolo mentre l'utente compila un form (ad esempio il totale riga da prezzo × quantità), usa invece una Live formula nel form — viene eseguita nel browser mentre digita e non richiede un auto field.

Come creare un auto field​

Qualsiasi campo può essere impostato su auto, quindi il primo passo è crearlo come faresti con qualsiasi altro campo. Poi vai nelle impostazioni del campo e apri la sezione "Automatic Value":

Ora clicca su "Enable Automatic Value" e verrà creata la tua prima regola:

Ta-dah! Ora sei pronto a configurare la tua formula.

Formula​

Ci sono diversi tipi di formule che puoi usare.

Queste formule sono disponibili per qualsiasi campo:

  • Set to a given value: è la formula più semplice. Usala per impostare un valore fisso per il campo. È soprattutto utile quando definisci più regole condizionali per lo stesso auto field (vedi sotto)
  • Set to a field value: copia il valore da un altro campo dello stesso tipo. Il campo sorgente può appartenere allo stesso oggetto o a un oggetto collegato

Queste formule sono disponibili per i campi testuali:

  • Set to a text expression: valuta l'espressione fornita e imposta il campo sulla stringa risultante (vedi sotto)
  • Set to the concatenated values of a field: prende tutti i valori di un campo di un oggetto collegato e li concatena in un'unica stringa usando il separatore specificato. Ad esempio, puoi usarla per ottenere i nomi di tutti gli articoli in un ordine. Puoi opzionalmente Order by un campo dell'oggetto correlato (ascendente o discendente) così l'elenco concatenato è stabile e leggibile.
  • Set to the {first, last} value of a field: prende il primo (o l'ultimo) valore di un campo da un gruppo di record collegati. Ad esempio, puoi usarla per ottenere il nome del primo articolo in un ordine

Queste formule sono disponibili per i campi numerici:

  • Set to a numeric expression: valuta l'espressione fornita e imposta il campo sul numero risultante (vedi sotto)
  • Set to the count of records of type: conta i record collegati del tipo specificato e imposta il campo sul numero risultante. Ad esempio, puoi usarla per contare il numero di articoli in un ordine
  • Set to the {sum, average, minimum value, maximum value} of a field: calcola la funzione richiesta su un gruppo di record collegati. Ad esempio, puoi usarla per calcolare il prezzo totale di un ordine

Queste formule sono disponibili per i campi data/ora:

  • Set to a date expression: valuta l'espressione fornita e imposta il campo sulla data/ora risultante (vedi sotto)

Combinare più regole​

Quando un auto field ha più regole condizionali, scegli come combinare i risultati sotto Set this field:

  • to the last rule that matches — comportamento classico: una regola vincente
  • to the aggregated values of all the matching rules — unisce i contributi di ogni regola corrispondente
  • to the aggregated unique values of all the matching rules — come sopra, ma i valori duplicati vengono scartati

Aggregate unique è utile per testo in stile tag costruito da più sorgenti opzionali dove la stessa etichetta non deve comparire due volte.

suggerimento

Tutte le formule che lavorano su record collegati possono essere usate anche su record non collegati, specificando criteri di filtro personalizzati.

Ad esempio, supponi di avere un oggetto chiamato Event e vuoi contare il numero di eventi che si svolgono nello stesso giorno: puoi creare un auto field chiamato events_count e impostare la formula su "Set to the count of records of type Event where start_date is equal to {start_date}".

Espressioni numeriche​

I campi numerici supportano espressioni numeriche. Queste espressioni servono per eseguire calcoli semplici sui valori di altri campi e ottenere il totale risultante. Qualsiasi altro campo numerico può essere usato nell'espressione, così come qualsiasi campo non numerico se trasformato con una funzione placeholder.

Esempi
EspressioneDescrizione
{amount} + {tax}Somma di due campi
({price1} + {price2}) / 2Media di due campi
({end_date:to_seconds}-{start_date:to_seconds})/86400Numero di giorni tra due campi data

Espressioni testuali​

I campi testuali possono essere popolati con espressioni testuali che consentono un'ampia gamma di operazioni usando le funzioni placeholder.

Esempi
EspressioneRisultato di esempioDescrizione
P{id}P42Concatenazione della lettera "P" con l'ID del record
P{id:lpad(5, '0')}P00042Concatenazione della lettera "P" con l'ID del record, con padding
{name} {lastname}John SmithNome completo di una persona
{name:upper} {lastname:upper}JOHN SMITHNome completo di una persona, in maiuscolo

Espressioni data/ora​

I campi data/ora possono essere popolati con espressioni che usano le funzioni placeholder.

Esempi
EspressioneDescrizione
{start_date:sub_days(3)}Calcola una data prima dell'inizio di un evento, utile per inviare un promemoria o impostare una scadenza
{birth_date:add_years(18)}Calcola la data in cui una persona raggiunge la maggiore età (da usare altrove nell'app per eseguire un'azione basata su un controllo dell'età)

Regole condizionali​

Come puoi vedere, la regola ha una sezione "When" che ti permette di definire una condizione. Se non imposti alcuna condizione, la formula verrà sempre applicata. Se imposti una condizione, la formula verrà applicata solo quando la condizione è soddisfatta. Con il pulsante più a destra puoi aggiungere quante regole vuoi. Nota che le regole vengono valutate nell'ordine in cui sono elencate.

Esempio

Supponi di voler applicare uno sconto ai tuoi clienti in base all'età. Puoi creare un auto field chiamato discount e impostare due regole condizionali così:

Se nessuna regola auto corrisponde a un record, il campo verrà popolato con il valore impostato come valore predefinito:

Prestazioni e ricalcolo​

Su app grandi, i campi automatici si ricalcolano quando cambiano i dati sorgente. Per import pesanti o job batch puoi disabilitare temporaneamente i campi automatici in Settings → Advanced, poi riabilitarli e monitorare il Recalculation Log (progresso, ETA, stop) finché i valori non sono di nuovo coerenti.