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!
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.
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.
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).
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).
¿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.
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.
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.