4D Write Pro: Rellene dinámicamente las tablas con selecciones de entidades y colecciones

Traducido automáticamente de Deepl

Como desarrolladores, a menudo creamos documentos complejos y avanzados de 4D Write Pro. Podemos generar tablas que necesitan ser rellenadas desde una fuente de datos, y podemos no estar seguros de las filas y columnas exactas. Llenar manualmente las tablas con datos cada vez es una tarea laboriosa. Le hemos escuchado, y aquí es donde el contexto de datos llega como una opción inestimable, abriendo el mundo de ORDA y el desarrollo orientado a objetos a los documentos de 4D Write Pro.

Ahora es posible definir un «datasource» para las tablas de 4D Write Pro. Ya sea una selección de entidades o una colección, este «datasource» alimentará automáticamente las filas de estas tablas.

¡Profundicemos en los detalles!

Llenar dinámicamente las tablas con selecciones de entidades y colecciones

Una imagen vale más que 1000 palabras.

Esta función le permite crear documentos como éste:

Una vez completado, se puede exportar(como PDF, como Docx, o cualquier otro formato de exportación disponible.), imprimir, modificar, etc. Veamos, paso a paso, cómo proceder.

Tabla, fila de cabecera, fila «Plantilla», Otras filas

En un documento de 4D Write Pro, una tabla puede contener ahora una o varias filas de cabecera. La fila que sigue inmediatamente a la cabecera se considerará una fila de plantilla que se repetirá y rellenará con el contenido de los elementos de la fuente de datos. Las filas siguientes (si las hay) serán automáticamente «empujadas» hacia abajo y pueden contener más información, posiblemente también basada en la fuente de datos de la tabla. El documento original utilizado para generar el informe anterior tiene el siguiente aspecto:

blank

El primer marco, en la parte superior, se rellena con la información proporcionada por el contexto de datos. Si no está familiarizado con este concepto, le recomendamos encarecidamente que lea primero esta entrada del blog. Veamos cómo se define la tabla en sí.

En este caso, la tabla contiene tres partes (detalladas más adelante):

  • La primera fila se ha definido como cabecera.
  • La segunda fila es la fila de la plantilla.
  • Las siguientes filas contienen información extra basada en la fuente de datos de la tabla y los cálculos.

ASOCIACIÓN DE UNA FUENTE DE DATOS A UNA TABLA

Como su nombre indica, una fuente de datos proporciona datos a una tabla. Por lo tanto, esta fuente de datos debe ser una fórmula cuyo resultado sea una selección de entidades o una colección. Si no es el caso (al fin y al cabo, una fórmula puede devolver cualquier cosa), se podrá seguir accediendo al resultado de la fórmula en la tabla (véase más adelante), pero no se utilizará ninguna fila como modelo.

Dos maneras de proceder

#1: DEFINIR EL RECURSO DE DATOS CON LA INTERFAZ DE USO

La interfaz de usuario ha sido modificada para poder asociar directamente una fórmula a una tabla.

Imaginemos una tabla «Empresa» conectada a una tabla «Empleado» a través de un enlace «empleados». Si la entidad «Empresa» es accesible a través de un contexto en el documento, entonces «empleados» será la fuente de datos de la tabla.

La fórmula asociada a la tabla puede ser This.data.company.employees.

blank

blank

… donde This.data (el contexto) va a ser proporcionado (más tarde) por la programación:

$context:=New object("company";$company) // $company is a company entity
WP SET DATA CONTEXT(WParea;$context)

#2: DEFINIR EL DATASOURCE POR PROGRAMACIÓN

La fuente de datos también puede ser establecida usando una sola línea de código.
Cada tabla puede ahora contener un nuevo atributo que puede ser definido con el comando WP SET ATTRIBUTES.

WP SET ATTRIBUTES($table;wk data source;Formula(This.data.company.employees))

¿CÓMO DEFINIR EL CONTENIDO DE LAS FILAS?

Una vez definida la fuente de datos de la tabla, ¡es el momento de rellenar las filas!

Los nuevos atributos están disponibles gracias a la palabra clave This que se basa en los elementos de la fuente de datos.

En la fila de la plantilla , puede utilizar This.item.xxx donde xxx (apellido, dirección, código postal…) serán los atributos de la entidad actual a la que desee acceder como This.item.name o This.item.age. También puede acceder al índice del elemento en la selección (o colección) con el atributo This.itemIndex

blank

Una vez calculado (usando WP COMPUTE FORMULAS), las filas calculadas pueden ser mostradas como se ve en la introducción.

¡Más atributos de la tabla!

Algunos otros atributos también pueden ser utilizados en cualquier parte de la tabla, generalmente en las siguientes filas.

This.table.datasource devuelve la fórmula asociada a la tabla. Aun así, probablemente será mejor utilizar This.tableData, cuyo valor es el resultado ya evaluado de esta fórmula (normalmente una colección o una entidad de selección).

Esto optimiza el procesamiento, por supuesto, y asegura la consistencia del documento.

A partir de este último atributo (tableData), resulta fácil calcular sumas, medias y valores mínimos o máximos gracias a fórmulas como éstas:

This.tableData.min(age)
This.tableData.average(salary)

blank

¿Más atributos?

Se han añadido nuevos atributos a los que se puede acceder en cualquier tabla (incluso sin una fuente de datos definida). Permitirán tener acceso a:

  • La propia tabla con This.table,
  • La fila actual con This.row,
  • El número de fila actual mediante This.rowIndex.

¡Imprima informes completos en cuatro líneas de código!

Una vez creado este tipo de documento, se puede utilizar como plantilla

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 

PERSONALIZAR INFORMES, LISTAS, ETC.

También puede utilizar una plantilla cuyas tablas hayan sido rellenadas con valores de la fuente de datos. Podrá resaltar filas, cambiar colores y estilos, ¡e incluso eliminar o añadir filas vacías!

La mejor manera de hacerlo es congelar primero el documento para que todos los datos insertados sean ahora filas y texto normales. Congelar el documento no es obligatorio, pero debe tener en cuenta que todas sus modificaciones se perderán si se vuelven a calcular las fórmulas.

Por último, si su documento tiene que ser guardado (no sólo impreso o exportado), entonces debe utilizar una copia de sus plantillas para no perder las propias plantillas.

MyWorkingDocument :=WP New($template))

Conclusión

Esta nueva función le permite generar documentos a partir de plantillas. Su contenido puede estar basado en ORDA con un mínimo de líneas de programación.

Estos documentos pueden ser exportados como PDF, Docx, eMail. También se pueden utilizar como mejoras a los formularios de lista y a la selección de impresión.

La generación automática de documentos se ve ahora muy facilitada, ya sea para facturas, catálogos o inventarios.

Más detalles en el centro de documentación(aquí y allí). Y como siempre, no dude en ponerse en contacto en los foros de 4D.

Roland Lannuzel
- Propietario de Producto y Experto en 4D - Después de estudiar electrónica, Roland se dedicó a la informática industrial como desarrollador y consultor, construyendo soluciones para clientes con una variedad de bases de datos y tecnologías. A finales de los años 80 se enamoró de 4D y lo ha utilizado para escribir aplicaciones de negocio que incluyen sistemas de contabilidad, facturación y correo electrónico.Eventualmente se unió a la compañía en 1997, las valiosas contribuciones de Roland incluyen el diseño de especificaciones, herramientas de prueba, demos, así como la formación y hablar con la comunidad 4D en muchas conferencias. Continúa dando forma activamente al futuro de 4D definiendo nuevas características y herramientas de desarrollo de bases de datos.