Creación de documentos dinámicos con 4D Write Pro en la aplicación Qodly

En un entorno profesional en el que la gestión y la producción de documentos son cruciales, es esencial disponer de herramientas poderosas y flexibles. Imagine poder diseñar plantillas de documentos dinámicos directamente desde su cliente Desktop, integrando fórmulas y datos de su base de datos, y luego generar estos documentos con un solo clic a través de una interfaz web intuitiva. ¡Eso es precisamente lo que 4D Write Pro y 4D Qodly Pro le permiten hacer!

En el blog de esta semana, exploraremos cómo estas dos soluciones se complementan perfectamente para automatizar y optimizar sus procesos documentales. Descubrirá cómo crear plantillas personalizadas en 4D Write Pro y cómo, gracias a 4D Qodly Pro, los usuarios web pueden introducir los datos necesarios, activar la generación de documentos e incluso elegir almacenarlos en la base de datos o devolverlos mediante un atributo calculado.

Para demostrar este proceso, utilizaremos la aplicación Performance Review, que está disponible para su descarga. Prepárese para transformar la forma en que crea y gestiona sus documentos, al tiempo que simplifica sus flujos de trabajo y aumenta la eficiencia.

Aplicación Performance Review

Creación de plantillas en el cliente de escritorio

4D Write Pro es una poderosa herramienta de procesamiento de texto cuya principal fortaleza reside en su capacidad para crear plantillas de documentos vinculadas a su base de datos. Esta funcionalidad le permite generar automáticamente varios tipos de documentos: cartas, contratos, facturas, catálogos, informes de gastos y mucho más.

En la aplicación Performance Review, se utilizan varias plantillas de documentos en función del departamento del que se trate. Por ejemplo

Plantilla de pedidos

 

Plantilla de control de calidad

blank

Estas plantillas integran fórmulas dinámicas directamente vinculadas a la base de datos, lo que facilita la creación de documentos personalizados para cada departamento.

Un formulario de la aplicación Desktop permite crear estas plantillas de forma simplificada. Para añadir fórmulas fácilmente, una lista desplegable propone todas las fórmulas pertinentes para la plantilla.

blank

Estas fórmulas se definen en un fichero JSON llamado «WPexpression.json».

He aquí un extracto:

{
    "expression": [{
            "name": "Apellido",
            "formula": "This.data.review.Employee.Lastname"
        }, {
            "name": "Nombre",
            "formule": "This.data.review.Employee.Firstname"
        }, {
            "name": "NombreColaborador",
            "formula": "This.data.review.Employee.Firstname+\" \"+This.data.review.Employee.Lastname"
        }
    ]
}

Para saber más sobre 4D Write Pro y ORDA, lea este blog: ORDA y 4D Write Pro: ¡La pareja poderosa!

Para simplificar la creación de tablas, el Asistente de tablas integrado en el componente 4D Write Pro Interface es ideal.

blank

Para que funcione perfectamente con nuestra estructura de base de datos, añadimos archivos de configuración que contienen las fórmulas necesarias para los documentos de Performance Review. Por ejemplo:

{
    "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": falso
            "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": "This.item.Score.Name"
        },{
            "check": true
            "header": "ScoreCode",
            "fuente": "This.item.Score.Code"
        }
    ],
    "breaks": [{
            "label": "SkillGroup",
            "source": "This.item.Group"
        }
    ],
    "breakFormulas": [{
            "label": "GroupName",
            "fuente": "This.item.Group"
	}
    ],
    "extraFormulas": [{
            "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 estas fórmulas, crear una tabla de competencias y puntuaciones resulta muy sencillo. Después de personalizar la tabla, este es el resultado:

blank

Para obtener más información sobre la configuración y las posibilidades que ofrece el asistente de tablas, consulte:

Llenado de datos en el Cliente Web

Una vez creada la plantilla, los usuarios ingresan los datos requeridos a través de una interfaz web intuitiva. Gracias a 4D Qodly Pro, este paso se integra perfectamente con su base de datos, asegurando que la información introducida corresponde a los campos definidos en sus plantillas.

Para más detalles sobre la configuración de estas interfaces, no dude en consultar nuestros blogs anteriores sobre:

GeneraR el Documento Final

El documento final se genera directamente desde la interfaz web. Cuando un usuario hace clic en el botón dedicado, el evento «On Click» dispara la función «selectedReview.generatePDF()».

blank

 

A continuación se muestra el código que gestiona la generación 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()

Permiso

En la aplicación web, los usuarios no pueden acceder a la tabla Template. Sin embargo, la función «Review.generatePDF» necesita acceder a estos datos para generar el documento PDF. Para ello, creamos una «promoción» en la función.

  • Creación del privilegio «generatePDF«: en la página Roles y privilegios, definimos un nuevo privilegio denominado 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.

  • Concesión de derechos de lectura: concedemos permiso de lectura a las clases de datos Departamento y Plantilla. Estos derechos son esenciales para localizar la plantilla Write Pro necesaria para generar el documento.
  • Promover la función «Review.generatePDF»: asignamos la opción Promote a la función Review.generatePDF. Con esta promoción, cuando se llama a la función en el servidor, ésta adquiere automáticamente el privilegio generatePDF y puede acceder a los datos típicamente restringidos.

 

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.

Este mecanismo garantiza que sólo los procesos autorizados puedan ampliar temporalmente sus derechos para realizar tareas específicas, manteniendo al mismo tiempo un alto nivel de seguridad y control sobre el acceso a los datos.

¡Listo!

blank

Siguiente paso

Combinando 4D Write Pro y 4D Qodly Pro, puede automatizar la generación de documentos dinámicos fusionando plantillas predefinidas y datos en tiempo real. Este enfoque ofrece muchas ventajas:

  • Automatización de documentos: reduzca las tareas manuales mediante plantillas dinámicas.
  • Optimización del flujo de trabajo: separe claramente la creación de plantillas (cliente Desktop) de la introducción de datos (cliente Web).
  • Ahorro de tiempo y mayor calidad: una solución práctica que mejora la productividad y la calidad de los documentos generados.

 

Le animamos a probar este enfoque en sus proyectos y descubrir los beneficios de integrar 4D Write Pro con 4D Qodly Pro. No dude en comentar para compartir su opinión o consulte nuestros otros recursos para ampliar sus conocimientos.

Vanessa Talbot
• Propietario de producto - Vanessa Talbot llegó al equipo de 4D Program en junio de 2014. Como Propietario de producto, está a cargo de escribir las historias de los usuarios y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Desde su llegada, ha trabajado en la definición de funcionalidades claves en 4D. Ha trabajado en la mayoría de las nuevas funcionalidades de multi hilo apropiativo y también en un tema muy complejo: la nueva arquitectura para la aplicación engined. Vanessa es licenciada por Telecom Saint-Etienne. Comenzó su carrera en el Instituto de Investigación Criminal como desarrolladora del departamento audiovisual. También ha trabajado en medios de comunicación y en el ámbito médico como experta en soporte técnico, producción y documentación de nuevas funcionalidades.