Le tabelle dei documenti di 4D Write Pro sono state notevolmente migliorate nelle ultime versioni. In effetti, il team di 4D ha investito così tanto nel rendere 4D Write Pro un potente generatore di documenti basati su modelli, da aver già rilasciato innovazioni come intestazioni, fonti di dati, righe di riporto… alcune potenti funzionalità che mi vengono in mente.
Ora, con 4D v20, è il turno delle righe di interruzione a fare il loro ingresso!
Signore e signori, rullo di tamburi, prego!
L’obiettivo da raggiungere
Qualunque sia la vostra attività, avete sicuramente bisogno di creare elenchi.
Questi elenchi sono ordinati in base ai vostri criteri e di solito è necessario creare gruppi per ognuno di questi gruppi per ottenere totali o statistiche. Questa è la nuova funzione di 4D Write Pro che vi offre!
Quando e come? Ecco un esempio concreto
Quando una tabella è alimentata da un’origine dati ordinata, l’obiettivo è inserire una riga di interruzione quando cambia il valore corrispondente al criterio di ordinamento.
Immaginate di conoscere persone di diversi continenti, paesi e città.
Si vuole creare un elenco di queste persone raggruppate per continente, paese e città.
Oppure si vuole creare un report basato sulla relazione con l’azienda e creare un elenco di dipendenti raggruppati per azienda in ogni continente.
In entrambi i casi, è necessario assicurarsi che la selezione sia ordinata in base a questi tre criteri.
Caso 1:
ds.people.all().orderBy("continent asc, country asc, city asc")
Caso 2:
ds.People.all().orderBy("worksFor.name asc, continent asc)
Per ogni criterio di ordinamento, una riga di interruzione
Una volta associata la fonte di dati alla tabella, le persone saranno visualizzate nella “riga ripetuta” e nell’ordine desiderato. Vediamo come raggrupparle in base ai criteri di ordinamento.
Utilizzo dell’interfaccia
Nel menu delle righe sono ora disponibili nuove voci. Sono contestuali e appaiono solo se il cursore si trova all’interno di una tabella (e sotto l’eventuale intestazione).
Ad esempio, la formula può essere basata sul nome di un attributo (This.item.country) o su un percorso di attributi correlati (es: This.item.worksFor.name) o su qualsiasi altra formula (Substring(This.item.name;1;1)).
Una volta impostato l’attributo di interruzione… si può vedere la sua formula passando il mouse sul simbolo di interruzione “S” (come in Ordinamento).
Sopra o sotto BreakS?
Le righe di interruzione possono essere sopra o sotto la riga ripetuta (riempita dalla fonte di dati della tabella).
Le interruzioni saranno rese ogni volta che il valore restituito dalla formula dell’interruzione cambia, quindi assicuratevi che la posizione delle interruzioni corrisponda ai criteri di ordinamento della fonte di dati.
Un nuovo attributo di riga
L’attributo wk break formula contiene la formula il cui risultato determinerà la visualizzazione della riga di interruzione. La sola presenza di questo attributo fa sì che una riga sia considerata una riga di interruzione. Si possono definire tutte le righe di interruzione necessarie, ad esempio Formula(This.item.city) per il livello di interruzione più basso e Formula(This .item.continent) per il livello più alto.
WP SET ATTRIBUTES($row; wk break formula; Formula(This.item.country))
WP RESET ATTRIBUTES($row; wk break formula)
Tenere presente che:
- Una riga di interruzione deve trovarsi appena sopra o sotto una riga ripetuta o un’altra riga di interruzione se ci sono più livelli. In caso contrario, non verranno prese in considerazione.
- Il numero di livelli è limitato a cinque. Se si aggiunge un sesto livello, non viene generato alcun errore, ma non viene reso.
- L’inserimento di righe di interruzione nella tabella non ordina la fonte di dati. L’origine dati deve essere ordinata in modo indipendente.
Questo è tutto!
Contenuto delle righe di interruzione
Oltre al testo, le righe di interruzione possono contenere due tipi di formule.
- La prima possibilità è quella di utilizzare gli elementi presenti – o che potrebbero essere presenti – nelle righe ripetute (ad esempio: This.item.continent).
Il valore restituito sarà l’ultimo valore utilizzato prima dell ‘interruzione (o il primo valore utilizzato se la riga di interruzione precede le righe ripetute). - La seconda possibilità è nuova: la proprietà breakItems può essere utilizzata solo nel contesto delle interruzioni (Es: This.breakItems).
Il breakItems è un sottoinsieme dei dati di origine della tabella che corrisponde esattamente alle righe ripetute della riga di interruzione interessata.- Per usare l’esempio delle interruzioni multiple per continente-paese-città, quando il contenuto cambia, il sottoinsieme corrisponde alle persone del continente (prima della modifica), e questo sia che la riga di interruzione sia posizionata prima o dopo la riga ripetuta. Questo sottoinsieme può essere utilizzato per eseguire calcoli come sum(“salary”), average(“salary”), ecc.
Infine, specifichiamo che questi sottoinsiemi saranno dello stesso tipo dei dati di origine della tabella, cioè una selezione di entità o una collezione.
Ulteriori informazioni
Ulteriori informazioni su questa funzione sono disponibili nella documentazione.
Conclusione
Questa nuova funzione dimostra ancora una volta la potenza di 4D Write Pro per quanto riguarda la creazione automatica di documenti.
Con le interruzioni si compie un ulteriore passo avanti. Fateci sapere cosa ne pensate del Forum 4D.