Creazione di documenti dinamici con 4D Write Pro nell’applicazione Qodly

Tradotto automaticamente da Deepl

In un ambiente professionale in cui la gestione e la produzione di documenti sono fondamentali, disporre di strumenti potenti e flessibili è essenziale. Immaginate di poter progettare modelli di documenti dinamici direttamente dal vostro client Desktop, integrando formule e dati dal vostro database e generando poi questi documenti con un solo clic attraverso un’interfaccia web intuitiva. Questo è esattamente ciò che 4D Write Pro e 4D Qodly Pro vi permettono di fare!

Nel blog di questa settimana esploreremo come queste due soluzioni si completino perfettamente per automatizzare e ottimizzare i processi documentali. Scoprirete come creare modelli personalizzati in 4D Write Pro e come, grazie a 4D Qodly Pro, gli utenti web possano inserire i dati necessari, attivare la generazione dei documenti e persino scegliere di memorizzarli nel database o restituirli tramite un attributo calcolato.

Per dimostrare questo processo, utilizzeremo l’applicazione Performance Review, disponibile per il download. Preparatevi a trasformare il vostro modo di creare e gestire i documenti, semplificando i flussi di lavoro e aumentando l’efficienza.

Applicazione Performance Review

Creazione di modelli nel client desktop

4D Write Pro è un potente strumento di elaborazione del testo il cui principale punto di forza è la capacità di creare modelli di documenti collegati al database. Questa funzionalità consente di generare automaticamente vari tipi di documenti: lettere, contratti, fatture, cataloghi, note spese e molto altro.

Nell’applicazione Performance Review vengono utilizzati diversi modelli di documento a seconda del reparto coinvolto. Ad esempio:

Modello di PO

 

Modello QA

blank

Questi modelli incorporano formule dinamiche direttamente collegate al database, facilitando la creazione di documenti personalizzati per ogni reparto.

Un modulo nell’applicazione Desktop consente di creare questi modelli in modo semplificato.Per aggiungere facilmente le formule, un elenco a discesa suggerisce tutte le formule pertinenti al modello.

blank

Queste formule sono definite in un file JSON chiamato “WPexpression.json”.

Ecco un estratto:

{
    "expression": [{
            "nome": "Cognome",
            "formula": "Questo.data.review.Employee.Lastname".
        }, {
            "nome": "Firstname",
            "formula": "Questo.dati.recensione.Impiegato.Nome".
        }, {
            "nome": "NomeCollaboratore",
            "formula": "Questo.data.review.Impiegato.Nome+nome". \"+Questo.dato.recensione.Dipendente.Cognome"
        }
    ]
}

Per saperne di più su 4D Write Pro e ORDA, leggete questo blog: ORDA e 4D Write Pro: La coppia vincente!

Per semplificare la creazione delle tabelle, la procedura guidata per le tabelle integrata nel componente di interfaccia di 4D Write Pro è l’ideale.

blank

Affinché funzioni perfettamente con la nostra struttura di database, abbiamo aggiunto dei file di configurazione contenenti le formule necessarie per i documenti di Performance Review. Ad esempio:

{
    "tableDataSource": "This.data.review.Skills.orderBy(\"Group asc\")",
    "columns": [{
            "check": true,
            "header": "SkillName",
            "source": "This.item.Name"
        }, {
            "check": false,
            "header": "CheckCodeI",
            "source": "Choose(This.item.ID_Score=1; \"X\"; \"\")".
        }, {
            "check": false,
            "header": "CheckCodeP",
            "source": "Choose(This.item.ID_Score=2; \"X\"; \"\")".
        },{
            "check": false,
            "header": "CheckCodeR",
            "source": "Choose(This.item.ID_Score=3; \"X\"; \"\")".
        },{
            "check": false,
            "header": "CheckCodeE",
            "source": "Choose(This.item.ID_Score=4; \"X\"; \"\")".
        },{
            "check": true,
            "header": "ScoreName",
            "source": "Questo.elemento.Punteggio.Nome"
        },{
            "check": true,
            "header": "ScoreCode",
            "source": "This.item.Score.Code"
        }
    ],
    "rotture": [{
            "label": "SkillGroup",
            "source": "This.item.Group"
        }
    ],
    "breakFormulas": [{
            "label": "GroupName",
            "source": "This.item.Group"
	}
    ],
    "extraFormule": [{
            "label": "ScoreSkillName",
            "source": "This.data.review.ScoreSkill.Name"
        },{
            "label": "ScoreSkillCode",
            "source": "This.data.review.ScoreSkill.Code"
        },{
            "label": "CheckSkillScoreCodeI",
            "source": "Choose(This.data.review.ID_ScoreSkill=1; \"X\"; \"\")".
        }, {
            "label": "CheckSkillScoreCodeP",
            "source": "Choose(This.data.review.ID_ScoreSkill=2; \"X\"; \"\")".
        }, {
            "label": "CheckSkillScoreCodeR",
            "source": "Choose(This.data.review.ID_ScoreSkill=3; \"X\"; \"\")".
        }, {
            "label": "CheckSkillScoreCodeE",
            "source": "Choose(This.data.review.ID_ScoreSkill=4; \"X\"; \"\")".
        }
    ]
}

Con queste formule, la creazione di una tabella di abilità e punteggi diventa molto semplice.Dopo aver personalizzato la tabella, ecco il risultato:

blank

Per saperne di più sulla configurazione e sulle funzionalità offerte dalla Creazione guidata tabella, vedere:

Compilazione dei dati nel client Web

Una volta creato il modello, gli utenti inseriscono i dati richiesti attraverso un’interfaccia web intuitiva. Grazie a 4D Qodly Pro, questa fase si integra perfettamente con il vostro database, garantendo che le informazioni inserite corrispondano ai campi definiti nei vostri modelli.

Per maggiori dettagli sull’impostazione di queste interfacce, consultate i nostri precedenti blog su:

Generazione del documento finale

Il documento finale viene generato direttamente dall’interfaccia web. Quando un utente fa clic sul pulsante dedicato, l’evento “On Click” attiva la funzione “selectedReview.generatePDF()”.

blank

 

Di seguito è riportato il codice che gestisce la generazione del documento PDF:

Function generateDocument()->$doc: Object
var $context : Object
var $template : cs.TemplateEntity

// Create context
$context :=This.createContext()

// Load template
$template :=This.Employee.Departement.Template.Template

// Create 4D Write Pro document
$doc:=WP New($template)
WP SET DATA CONTEXT ($doc; $context)
WP COMPUTE FORMULAS ($doc)

return $doc

exposed Function generatePDF ()
var $WPdoc : Object
var $blob : 4D.Blob

// Generate WP document
$WPdoc:=This.generateDocument()

// Convert to PDF
WP EXPORT VARIABLE ($WPdoc; $blob; wk pdf)

// Save in database
This .DocumentPDF:=$blob
This .save()

Permessi

Nell’applicazione web, gli utenti non possono accedere alla tabella Template. Tuttavia, la funzione “Review.generatePDF” deve accedere a questi dati per generare il documento PDF. A tal fine, abbiamo impostato una “promozione” sulla funzione.

  • Creazione del privilegio “generatePDF”: Nella pagina dei ruoli e dei privilegi, definiamo un nuovo privilegio denominato generatePDF.

 

A dark-themed user interface section with two tabs: "Roles" and "Privileges," with "Privileges" currently selected in purple. Below, a "Privileges" section lists three privilege items:

    "guest" with an info icon.
    "createReview" with edit and delete icons.
    "generatePDF" with edit and delete icons, highlighted with a purple border.

A plus (+) button in the top right allows adding new privileges.

  • Concessione dei diritti di lettura: Si concede il permesso di lettura alle classi di dati Reparto e Modello. Questi diritti sono essenziali per individuare il modello Write Pro necessario per generare il documento.
  • Promuovere la funzione “Review.generatePDF”: Assegniamo l’opzione Promuovi alla funzione Review.generatePDF. Con questa promozione, quando la funzione viene chiamata sul server, acquisisce automaticamente il privilegio generatePDF e può accedere ai dati tipicamente riservati.

 

A dark-themed user interface panel titled "Include a privilege." At the top, several privilege tags such as "createReview," "none," "authentify," "user," and "hr" are displayed. Below, there is a search bar labeled "Search available permissions" and a button to create a permission. Two buttons, "Reset" (red) and "Clear" (purple), are present.

A table lists different permissions with columns for Read, Create, Update, Delete, Execute, and Promote.

    "Department" has no checkboxes selected.
    "Review.generatePDF" has Read and Promote checked.
    "Template" has only Read checked.

On the right, a toggle switch labeled "Show inherited permissions" is set to off.

Questo meccanismo garantisce che solo i processi autorizzati possano estendere temporaneamente i loro diritti per eseguire compiti specifici, mantenendo un’elevata sicurezza e controllo sull’accesso ai dati.

Voilà!

blank

Il prossimo passo

Combinando 4D Write Pro e 4D Qodly Pro, è possibile automatizzare la generazione di documenti dinamici unendo modelli predefiniti e dati in tempo reale. Questo approccio offre numerosi vantaggi:

  • Automazione dei documenti: Riduzione delle attività manuali grazie ai modelli dinamici.
  • Ottimizzazione del flusso di lavoro: Separazione netta tra la creazione dei modelli (client desktop) e l’inserimento dei dati (client Web).
  • Risparmio di tempo e qualità superiore: Una soluzione pratica che migliora la produttività e la qualità dei documenti generati.

 

Vi invitiamo a provare questo approccio nei vostri progetti e a scoprire i vantaggi dell’integrazione di 4D Write Pro con 4D Qodly Pro. Non esitate a commentare per condividere i vostri commenti o a consultare le nostre altre risorse per ampliare ulteriormente le vostre conoscenze.

Vanessa Talbot
- Product Owner - Vanessa Talbot è entrata a far parte del team di 4D Program nel giugno 2014. In qualità di Product Owner, è incaricata di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente. Ha lavorato sulla maggior parte delle nuove funzionalità di multi-threading preemptive e anche su un argomento molto complesso: la nuova architettura per le applicazioni con motore. Vanessa si è laureata presso Telecom Saint-Etienne. Ha iniziato la sua carriera presso il Criminal Research Institute come sviluppatrice per il dipartimento audiovisivo. Ha lavorato anche nei settori dei media e della medicina come esperta di supporto tecnico, produzione e documentazione di nuove funzionalità.