2.3Informes y reporting (editor de informes)
Lo esencial en 30 segundos
- Los informes son los documentos impresos o exportados que produce la aplicación (facturas, albaranes, listados, estadísticas, etiquetas); WinDev ofrece un editor de informes visual específico.
- Un informe se divide en bloques que se imprimen en momentos distintos: inicio de documento, cabecera de página, cuerpo (repetido para cada registro), pie de página y fin de documento.
- Las rupturas son EL mecanismo del reporting: una agrupación (por cliente, mes, categoría) crea un bloque de inicio y un bloque de fin de ruptura donde se colocan los subtotales — siempre que los datos estén ordenados.
Mini-caso hilado — Yacine edita la factura del negocio
Yacine, desarrollador WinDev en una pyme de venta de material eléctrico en Orán, debe producir las facturas de clientes de la aplicación de gestión. Crea un informe en el editor de informes y lo vincula a un origen de datos: una consulta preparada de antemano (pedido + líneas + cliente), filtrada y ordenada. Coloca los campos en el bloque cuerpo (repetido para cada línea), la cabecera de factura en el bloque inicio de documento, el logotipo y el título en la cabecera de página, y el total general en el fin de documento. Como las facturas a veces listan varios pedidos por cliente, crea una ruptura por cliente para obtener subtotales. Por último, prevé la exportación a PDF para el envío por correo electrónico y parámetros (número de pedido) para reutilizar el informe.
Caso autónomo de esta sección: reaparece en el curso, el esquema, el guion y el reto de 48 h de la sección 2.3.
1. Documentos, no código
Los informes son los documentos impresos o exportados que produce la aplicación: facturas, albaranes, listados, estadísticas, etiquetas, extractos. Es un ámbito en el que WinDev destaca especialmente, con un editor de informes visual específico. Se dibuja el informe, se vincula a un origen de datos (un archivo del análisis, una consulta, una variable), y WinDev gestiona la paginación, las rupturas y los totales.
2. Los bloques de un informe
La noción clave es la de los bloques: zonas impresas en momentos distintos. Inicio de documento (una sola vez: portada, cabecera de factura), cabecera de página (en cada página: logotipo, título), cuerpo (repetido para cada registro — es el núcleo), pie de página (número de página, menciones), fin de documento (totales generales, firma).
3. Rupturas y exportación
Se añaden los bloques de ruptura: cuando se agrupa (por cliente, por mes, por categoría), un bloque de inicio de ruptura introduce el grupo y un bloque de fin de ruptura muestra sus subtotales — con la condición imperativa de que los datos estén ordenados por ese campo. Puntos prácticos: el informe puede visualizarse, imprimirse o exportarse (en particular a PDF, muy solicitado), y se le pueden pasar parámetros (periodo, cliente). Buena práctica: preparar los datos mediante una consulta en lugar de multiplicar los cálculos en el informe.
🔎 Ejemplo concreto — 🔎 Ejemplo concreto — Ruptura y exportación a PDF
Obtener subtotales por cliente y luego difundir: Yacine combina rupturas, parámetros y exportación.
// Lancer l'apercu de l'etat facture pour une commande donnee
iApercu("ETAT_Facture", {pNumCommande})
// Structure des blocs
Debut de document -> en-tete (raison sociale, coordonnees)
Haut de page -> logo + titre
Corps -> une ligne par article
Rupture client -> sous-total par client (donnees TRIEES)
Fin de document -> total general
Lecture : le corps se repete par enregistrement ; les ruptures font les sous-totaux
Reflexe : preparer les donnees via une REQUETE triee + prevoir l'export PDF
Lectura: el bloque cuerpo repite cada línea, y la ruptura por cliente coloca los subtotales al final del grupo.
Lección: los datos deben estar ordenados para que las rupturas sean correctas, y el informe es reutilizable gracias al parámetro {pNumCommande}.
Vocabulario de la sección
- Informe
- El documento impreso o exportado que produce la aplicación: factura, albarán, listado, estadística, etiqueta.
Ejemplo sencillo: Yacine crea el informe «Factura de cliente» del negocio.
Lo que no es: una ventana de entrada mostrada en pantalla.
Reflejo: producir un documento → un informe.
- Bloques de un informe
- Las zonas impresas en momentos distintos: inicio de documento (una vez), cabecera de página (cada página), cuerpo (por registro), pie de página, fin de documento.
Ejemplo sencillo: Yacine coloca las líneas de factura en el cuerpo.
Lo que no es: un único bloque impreso de una sola vez.
Reflejo: repetir por registro → el bloque cuerpo.
- Ruptura (agrupación)
- La agrupación por un valor (cliente, mes, categoría): el bloque de inicio introduce el grupo y el de fin muestra sus subtotales.
Ejemplo sencillo: Yacine crea una ruptura por cliente para los subtotales.
Lo que no es: una simple ordenación sin subtotal.
Reflejo: subtotales por grupo → una ruptura.
- Origen de datos
- Aquello en lo que se apoya el informe: un archivo del análisis, una consulta (recomendado) o variables.
Ejemplo sencillo: Yacine vincula la factura a una consulta pedido + líneas + cliente.
Lo que no es: valores introducidos a mano en el informe.
Reflejo: preparar los datos correctamente → una consulta como origen.
- Exportación a PDF
- Un informe puede visualizarse, imprimirse o exportarse — siendo el PDF el formato más solicitado (envío por correo electrónico, archivo, difusión).
Ejemplo sencillo: Yacine envía la factura en PDF por correo electrónico al cliente.
Lo que no es: imprimir solo en papel, sin archivo difundible.
Reflejo: difundir o archivar un documento → la exportación a PDF.
En la práctica — En la práctica — Crear un informe con totales
- Prepare primero una consulta que proporcione exactamente los datos deseados (filtrados, ordenados) en lugar de calcularlo todo en el informe, como Yacine.
- Cree el informe sobre ese origen y coloque los campos en el bloque cuerpo (el que se repite para cada registro).
- Añada los bloques de cabecera de página (logotipo, título) y pie de página (número de página), y luego fin de documento para el total general.
- Defina una ruptura (por cliente, por mes) para obtener subtotales por grupo, y prevea la exportación a PDF así como parámetros (periodo, cliente).
Guion paso a paso — editar la factura como Yacine (5 min)
1) Prepare una consulta pedido + líneas + cliente, filtrada y ordenada por cliente. 2) Cree un informe y vincúlelo a esa consulta. 3) Coloque las líneas en el bloque cuerpo, la cabecera en el inicio de documento y el total general en el fin de documento. 4) Cree una ruptura por cliente para los subtotales. 5) Añada un parámetro {pNumCommande} y pruebe la vista previa (iApercu), y luego exporte a PDF.
Sin ordenación por el campo de agrupación, un grupo puede reaparecer y falsear los subtotales: ordene el origen.
Plantilla para copiar y pegar — mi informe de factura
Source del'etat : REQUETE (commande + lignes + client) filtree et TRIEE
Debut de document : en-tete (raison sociale, coordonnees)
Haut de page : logo + titre
Corps : une ligne par article (repete par enregistrement)
Bas de page : numero de page
FIN de document : TOTAL general
Rupture (client) : sous-total par client -> donnees TRIEES imperativement
Parametre : {pNumCommande} Export : PDF
Factura de cliente
Yacine produce la factura con cabecera, líneas y total general, exportable a PDF.
Listado de reaprovisionamiento
Yacine edita el listado de productos por debajo del umbral de stock, ordenado por proveedor.
Estadísticas por mes
Yacine agrupa las ventas por mes con una ruptura y subtotales.
Etiquetas de productos
Yacine genera pliegos de etiquetas para los artículos del negocio.
✓ Buenas prácticas
- Preparar los datos mediante una consulta (filtrada, ordenada) en lugar de calcularlo todo en el informe.
- Colocar las líneas en el bloque cuerpo y el total en fin de documento.
- Prever la exportación a PDF y parámetros para la reutilización.
✗ Errores frecuentes
- Olvidar la ordenación antes de una ruptura → subtotales falsos.
- Poner las líneas en otro sitio que no sea el bloque cuerpo.
- Multiplicar los cálculos en el informe en lugar de preparar una consulta.
Puntos clave
- Los informes producen los documentos de la aplicación (facturas, listados, estadísticas, etiquetas).
- Un informe se divide en bloques: inicio de documento, cabecera de página, cuerpo (por registro), pie de página, fin de documento.
- Las rupturas son el mecanismo del reporting: subtotales por grupo, siempre que se ordenen los datos.
- Buena práctica: preparar los datos mediante una consulta, prever parámetros y exportación a PDF.
Reto 48 h — aplícalo mañana
Como Yacine, cree un informe vinculado a una consulta ordenada, coloque las líneas en el bloque cuerpo y el total en fin de documento. Añada una ruptura por cliente (o por mes) para obtener subtotales, y luego exporte el informe a PDF. Explique en una frase por qué los datos deben estar ordenados por el campo de agrupación.
- Creo un informe vinculado a una consulta y coloco los campos adecuados en el bloque correcto.
- Sé obtener subtotales por grupo con una ruptura.
- Sé exportar un informe a PDF con parámetros.
Preguntas frecuentes
¿Cómo obtener subtotales por grupo en un informe?
Utilizando las rupturas: se define una agrupación sobre un campo (el cliente, el mes, la categoría), lo que crea un bloque de inicio y un bloque de fin de ruptura — es en el bloque de fin donde se colocan los subtotales. Condición imperativa: los datos deben estar ordenados por ese campo, de lo contrario un grupo reaparece más adelante y los subtotales se vuelven falsos.
¿Hay que calcular los totales en el informe o en el origen?
Prepare los datos mediante una consulta (filtrada, ordenada, eventualmente con agregados): el informe se limita entonces a mostrar y colocar los subtotales en las rupturas. Multiplicar los cálculos en el informe lo hace más complejo y menos reutilizable; la buena práctica es preparar los datos de antemano.
¿Cómo se obtienen subtotales por grupo en un informe?