4D Write Pro: Riempire dinamicamente le tabelle con selezioni e collezioni di entità

Tradotto automaticamente da Deepl

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:

blank

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.

blank

blank

… 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

blank

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)

blank

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.

Roland Lannuzel
- Product Owner ed esperto di 4D - Dopo aver studiato elettronica, Roland è passato all'IT industriale come sviluppatore e consulente, realizzando soluzioni per i clienti con una varietà di database e tecnologie. Alla fine degli anni '80 si è innamorato di 4D e lo ha utilizzato per scrivere applicazioni aziendali che includono sistemi di contabilità, fatturazione e posta elettronica. Entrato a far parte dell'azienda nel 1997, Roland ha dato il suo prezioso contributo progettando specifiche, strumenti di test e demo, oltre a formare e parlare alla comunità 4D in occasione di numerose conferenze. Continua a plasmare attivamente il futuro di 4D definendo nuove funzionalità e strumenti di sviluppo di database.