Romper líneas. ¡Una nueva adición a las tablas 4D Write Pro!

Las tablas de documentos de 4D Write Pro han mejorado mucho en las últimas versiones. De hecho, el equipo 4D está empeñado en hacer de 4D Write Pro un poderoso generador de documentos basado en plantillas, ya hemos lanzado avances como encabezados, fuentes de datos, líneas de arrastre… unas cuantas poderosas funcionalidades que vienen a mi mente.

Ahora, con 4D v20, ¡es el turno de las líneas de ruptura de hacer su entrada!

Señoras y señores, ¡redoble de tambores, por favor!

La funcionalidad en acción

 

El objetivo por alcanzar

Cualquiera que sea su actividad, sin duda necesita crear listas.

Estas listas se ordenan según sus propios criterios y normalmente es necesario crear grupos para cada uno de estos grupos para obtener totales o estadísticas. ¡Esto es lo que le ofrece esta nueva funcionalidad de 4D Write Pro!

¿Cuándo y cómo? He aquí un ejemplo concreto

Cuando una tabla es alimentada por una fuente de datos ordenada, el objetivo es insertar una línea de ruptura cuando el valor correspondiente al criterio de ordenación cambia.

Imagine que conoce a personas de varios continentes, países y ciudades.

Y quiere crear una lista de estas personas agrupadas por continente, país y ciudad.

blank

O quiere crear un informe basado en la relación con la empresa y crear una lista de empleados agrupados por la empresa en cada continente.

blank

 

En ambos casos, primero debe asegurarse de que esta selección esté ordenada según estos tres criterios.

Caso 1

ds.people.all().orderBy("continent asc, country asc, city asc")

Caso 2:

ds.People.all().orderBy("worksFor.name asc, continent asc)

Para cada criterio de ordenación, una línea de ruptura

Una vez asociada la fuente de datos a la tabla, las personas aparecerán en la «línea repetida» y en el orden deseado. Veamos cómo agruparlas por criterios de ordenación.

Uso de la interfaz

Ahora hay nuevos elementos disponibles en el menú de la línea. Son contextuales y sólo aparecerán si el cursor está dentro de una tabla (y debajo del encabezado, si la hay).

blank

 

 

 

 

Por ejemplo, la fórmula puede basarse en un nombre de atributo (This.item.country) o en una ruta de atributo relacionada (ej: This.item.worksFor.name) o en cualquier otra fórmula (Substring(This.item.name;1;1)).

Una vez definido el atributo de ruptura… puede ver su fórmula al pasar el ratón sobre el símbolo de ruptura «S» (como en Sort).

 

blank

¿Por encima o por debajo de BreakS?

Las líneas de ruptura pueden estar por encima o por debajo de la línea repetida (llenada por la fuente de datos de la tabla).

Las rupturas se mostrarán cada vez que cambie el valor devuelto por la fórmula de ruptura, así que asegúrese de que la posición de los saltos coincide con los criterios de ordenación de la fuente de datos.

blank

 

Un nuevo atributo de línea

El atributo wk break formula contiene la fórmula cuyo resultado determinará la visualización de la línea de ruptura. La simple presencia de este atributo hará que una línea se considere línea de ruptura. Puede definir tantas líneas de interrupción como necesite, por ejemplo, Formula(This.item.city) para el nivel de ruptura más bajo y Formula(This .item.continent) para el nivel más alto.

 

WP SET ATTRIBUTES($row; wk break formula; Formula(This.item.country))
WP RESET ATTRIBUTES($row; wk break formula)

TEnga en cuenta:

  • Una línea de ruptura debe estar situada justo encima o debajo de una línea repetida o de otra línea de ruptura si hay varios niveles. De lo contrario, no se tendrán en cuenta.
  • El número de niveles está limitado a cinco. Si añade un sexto nivel, no se producirá ningún error, pero no se renderizará.
  • La inserción de líneas de ruptura en la tabla no ordena la fuente de datos. La fuente de datos debe ordenarse de forma independiente.

¡Eso es todo!

Contenido de las líneas de ruptura

Además de texto, las líneas de ruptura pueden contener dos tipos de fórmulas.

  • La primera posibilidad es utilizar los elementos presentes, o que podrían estar presentes, en las líneas repetidas (Ej: This.item.continent).
    El valor devuelto será el último valor utilizado antes de la ruptura (o el primer valor utilizado si la línea de ruptura precede a las líneas repetidas).
  • La segunda posibilidad es nueva: la propiedad breakItems sólo puede utilizarse en el contexto de las rupturas (Ej: This.breakItems).
    Los breakItems son un subconjunto de los datos fuente de la tabla que corresponden precisamente a las líneas repetidas de la línea de ruptura en cuestión.

    • Para utilizar el ejemplo de rupturas múltiples por continente-país-ciudad, cuando el contenido cambia, el subconjunto corresponde a las personas del continente (antes del cambio) y esto es si la línea de ruptura se coloca antes o después de la línea repetida. Este subconjunto se puede utilizar para realizar cálculos como sum(«salary»), average(«salary»), etc.

 

blank

 

Por último, especifiquemos que estos subconjuntos serán del mismo tipo que los datos de origen de la tabla, es decir, una selección de entidades o una colección.

Más información

Encontrará más información sobre esta función en la documentación.

Conclusión

Esta nueva funcionalidad muestra una vez más el poder de 4D Write Pro en cuanto a la creación automática de documentos.

Con las rupturas, se da un paso más. Háganos saber lo que piensa en el Foro 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.