Come sviluppatori, spesso creiamo documenti 4D Write Pro complessi e avanzati. Possiamo generare tabelle che devono essere riempite da un’origine dati e potremmo non essere sicuri delle righe e delle colonne esatte. Riempire manualmente le tabelle con i dati ogni volta è un’operazione laboriosa. Vi abbiamo ascoltato, ed ecco che il contesto dei dati diventa un’opzione preziosa, che apre il mondo di ORDA e dello sviluppo orientato agli oggetti ai documenti di 4D Write Pro.
È ora possibile definire una “fonte di dati” per le tabelle di 4D Write Pro. Che si tratti di una selezione di entità o di una collezione, questa “fonte di dati” alimenterà automaticamente le righe di queste tabelle.
Entriamo nei dettagli!
Riempire dinamicamente le tabelle con selezioni di entità e collezioni
Un’immagine vale più di 1000 parole.
Questa funzione consente di creare documenti come questo:
Una volta completato, il documento può essere esportato(in formato PDF, Docx o qualsiasi altro formato di esportazione disponibile), stampato, modificato, ecc. Vediamo, passo dopo passo, come procedere!
Tabella, riga di intestazione, riga “Modello”, altre righe
In un documento 4D Write Pro, una tabella può ora contenere una o più righe di intestazione. La riga che segue immediatamente l’intestazione sarà considerata una riga modello che verrà ripetuta e riempita dal contenuto degli elementi di origine dati. Le righe successive (se presenti) saranno automaticamente “spinte” verso il basso e potranno contenere ulteriori informazioni, eventualmente anche in base alla fonte dei dati della tabella. Il documento originale utilizzato per generare il report di cui sopra ha il seguente aspetto:
Il primo riquadro, in alto, è riempito con le informazioni fornite dal contesto dei dati. Se non si ha familiarità con questo concetto, si consiglia vivamente di leggere prima questo post del blog. Vediamo come viene definita la tabella stessa.
In questo caso, la tabella contiene tre parti (dettagliate più avanti):
- La prima riga è stata definita come intestazione.
- La seconda riga è la riga del modello.
- Le righe successive contengono informazioni aggiuntive basate sulla fonte dei dati della tabella e sui calcoli.
ASSOCIAZIONE DI UN’ORIGINE DATI A UNA TABELLA
Come suggerisce il nome, un’origine dati fornisce dati a una tabella. Pertanto, questa origine dati dovrebbe essere una formula il cui risultato è una selezione di entità o un insieme. In caso contrario (una formula può restituire qualsiasi cosa), è possibile accedere al risultato della formula nella tabella (vedere sotto), ma nessuna riga verrà utilizzata come modello.
Due modi per procedere
#1: DEFINIRE LA DATASOURCE CON L’INTERFACCIA UTENTE
L’interfaccia utente è stata modificata in modo che una formula possa essere associata direttamente a una tabella.
Immaginiamo una tabella “Azienda” collegata a una tabella “Dipendente” tramite un collegamento “Dipendenti”. Se un’entità Azienda è accessibile tramite un contesto nel documento, allora “dipendenti” sarà la fonte di dati della tabella.
La formula associata alla tabella può essere This.data.company.employees.
… dove This.data (il contesto) sarà fornito (in seguito) dalla programmazione:
$context:=New object("company";$company) // $company is a company entity
WP SET DATA CONTEXT(WParea;$context)
#2: DEFINIRE LA FONTE DEI DATI TRAMITE LA PROGRAMMAZIONE
La fonte dei dati può essere impostata anche con una sola riga di codice.
Ogni tabella può ora contenere un nuovo attributo che può essere definito con il comando WP SET ATTRIBUTES.
WP SET ATTRIBUTES($table;wk data source;Formula(This.data.company.employees))
COME DEFINIRE IL CONTENUTO DELLE RIGHE?
Una volta definita la fonte di dati della tabella, è il momento di riempire le righe!
Nuovi attributi sono disponibili grazie alla parola chiave This, che si basa sugli elementi del datasource.
Nella riga modello, si può usare This.item.xxx dove xxx (cognome, indirizzo, CAP…) saranno gli attributi dell’entità corrente a cui si vuole accedere, come This.item.name o This.item.age. Si può anche accedere all’indice dell’elemento nella selezione (o collezione) con l’attributo This.itemIndex…
Una volta calcolate (usando WP COMPUTE FORMULAS), le righe calcolate possono essere visualizzate come visto nell’introduzione.
Altri attributi di tabella!
Altri attributi possono essere utilizzati in qualsiasi punto della tabella, di solito nelle righe seguenti.
This.table.datasource restituisce la formula associata alla tabella. Tuttavia, probabilmente sarà meglio usare This.tableData, il cui valore è il risultato già valutato di questa formula (di solito una collezione o un’entità di selezione).
Questo ottimizza l’elaborazione e garantisce la coerenza del documento.
Da quest’ultimo attributo (tableData), diventa facile calcolare somme, medie e valori minimi o massimi grazie a formule come queste:
This.tableData.min(age)
This.tableData.average(salary)
Ancora più attributi?
Sono stati aggiunti nuovi attributi che possono essere raggiunti in qualsiasi tabella (anche senza un’origine dati definita). Essi consentono di accedere a:
- La tabella stessa con This.table,
- La riga corrente con This.row,
- Il numero della riga corrente con This.rowIndex.
Stampare rapporti completi in quattro righe di codice!
Una volta creato questo tipo di documento, è possibile utilizzarlo come modello.
For each ($company; $companies)
WP SET DATA CONTEXT($template; New object("company"; $company))
WP PRINT($template) // (before printing, expressions will be recomputed by default)
End for each
PERSONALIZZARE RAPPORTI, ELENCHI, ECC.
È anche possibile utilizzare un modello le cui tabelle sono state riempite con i valori della fonte di dati. Sarà possibile evidenziare le righe, modificare i colori e gli stili e persino rimuovere o aggiungere righe vuote!
Il modo migliore per farlo è congelare prima il documento, in modo che tutti i dati inseriti siano ora righe e testo normali. Il congelamento del documento non è obbligatorio, ma è necessario sapere che tutte le modifiche apportate andranno perse se le formule vengono ricalcolate.
Infine, se il documento deve essere salvato (e non solo stampato o esportato), è necessario utilizzare una copia dei modelli per non perdere i modelli stessi.
MyWorkingDocument :=WP New($template))
Conclusione
Questa nuova funzione consente di generare documenti a partire da modelli. Il loro contenuto può essere basato su ORDA con un minimo di linee di programmazione.
Questi documenti possono essere esportati in formato PDF, Docx, eMail. Possono anche essere utilizzati come miglioramenti ai moduli di elenco e alla selezione di stampa.
La generazione automatica di documenti è ora molto facilitata, sia che si tratti di fatture, cataloghi o inventari.
Maggiori dettagli nel centro di documentazione(qui e qui). E come sempre, sentitevi liberi di contattare i forum 4D.