Informes

Qué es un informe de Flex, sus familias según TipoInformeE, las propiedades de diseño, orden, agrupación y filtro, sus columnas y sus preguntas.

Un informe es una consulta guardada sobre una sección: qué columnas salen, con qué condiciones, en qué orden y agrupadas cómo. Lo abre una persona desde el menú, lo muestra un panel de Play, lo ejecuta una integración por la API o lo consume el SDK. En la Flex API es el tipo FlexObjectTypes.Reports; sus columnas son FlexObjectTypes.ReportColumns.

Antes de empezar

  • Un informe pertenece a una sección principal activa: no a una plantilla base, a una tabla de líneas ni a una sección obsoleta. La sección no se cambia después de crearlo.
  • La pantalla donde se crea y se edita: FlexHub → Informes. Desde el SDK, Flex_CreateObjectAsync(FlexObjectTypes.Reports, sectionId, patch).
  • Un informe no se elimina desde FlexHub. Sus columnas sí.

Las familias

La columna destino guarda el enum TipoInformeE. Todo informe hecho a mano es Ordinario (12) y no cambia de tipo; los otros valores los crea el motor para su propio uso y no se editan a mano.

ValorTipoInformeEQué es
12OrdinarioUn informe hecho a mano para consultar. FlexObjectLiteDTO.IsOrdinaryReport = true.
2PrincipalEl listado principal de una sección.
3ComboDesplegableAutomaticoEl desplegable de un campo de relación.
1AutoWidget01El widget de un panel.
6ValoresMemorizadosLos valores memorizados de un campo.
7, 8Destinador_Ver, Destinador_AgregarLos listados de un destinador.
14CarrilProcesoLos carriles de una vista de proceso.

El servidor envía el tipo resuelto en IsOrdinaryReport y su etiqueta legible en KindLabel, para que ningún cliente tenga que interpretar el enum.

FlexHub reparte los informes en tres pestañas con esos datos: Negocio (los ordinarios que abre una persona), API (los de la categoría Funcionalidad, que consumen integraciones, SDK y procesos internos) y * (todos, incluidos los que genera el motor). Ver Informes API.

Identidad

ColumnaRótulo en FlexHubQué hace
nombreNombreMínimo 3 caracteres. Dos informes de la misma sección y categoría no se llaman igual: el servidor desambigua y devuelve el nombre que puso. De aquí sale la palabra clave con la que lo llaman el SDK y las integraciones.
categoria, subcategoriaCategoría, SubcategoríaDónde se archiva y desde dónde se pide en el menú. Sin categoría existe, pero no hay pantalla que lo ofrezca. La pareja Funcionalidad y API lo convierte en informe de API y exige consolidar.
descripcionDescripciónTexto libre.
comentario, iconoEl comentario y el icono. FlexHub no los muestra.

En FlexHub, el Nombre va encima de las pestañas y el resto en la pestaña General, card Datos del informe.

Diseño

En FlexHub están en la pestaña Diseño, que sale con el informe ya creado.

ColumnaRótulo en FlexHubValores
rppFilas por páginaCuántas filas trae el servidor de una vez. Vacío al crear, el servidor pone 1.000.
modorenderizadoVistaRejilla normal (0), Gráfica de tarta (1), Gráfica lineal (2), Gráfica de barras (3), Gráfica polar (4), Board (tarjetas por columnas) (5). Calendario y Gantt no se ofrecen; si el informe ya los tiene, se respetan.
renderizadofijoNo dejar cambiar la vistaSí/No.
npcpOcultar la paginaciónSí/No.
boardcolgrupo1, boardcolgrupo2Board: columna que hace las calles, Board: columna que las subdivideColumnas del informe. Solo con Board.
graficacolgrupoGráfica: columna que agrupaColumna del informe. Solo con una gráfica.
avisomsg, avisotipoMensaje de aviso, Tipo de avisoEl texto que se muestra encima del listado y InformeTipoMensajeE: Sin Aviso (0), Ocultable (1), Fijo (2). Card Aviso encima del listado.
infrelacionado, infrelacionetiquetaInforme relacionado, Rótulo del informe relacionadoEl informe que se ofrece al lado del listado, y con qué texto. Card Informe relacionado.

Orden y agrupación

El orden son hasta nueve niveles, colorden1 a colorden9, cada uno con su columna y su sentido (colorden1desc a colorden9desc). El primero ordena todas las filas y el segundo solo ordena las que empatan en el primero. Sin niveles, las filas salen en el orden que devuelva la base de datos, que no está garantizado.

La agrupación son hasta nueve niveles, campoagrupacion1 a campoagrupacion9, cada uno con su modo en campoagrupacionmodo1 a campoagrupacionmodo9.

En FlexHub son las cards Cómo se ordena y Cómo se agrupa de la pestaña Diseño. Añadir un nivel elige una columna del informe; en un nivel de orden, De mayor a menor da el sentido, y en uno de agrupación, Qué se considera lo mismo da el modo, enum AgrupacionesCriteriosE:

ValorMiembroQué considera lo mismo
0NoAgruparNada: el nivel no hace nada.
1IgualesValores iguales.
2, 3ParteEntera, ParteDecimalLa parte entera o la decimal de un número.
4ParEImparPares e impares.
5, 6, 7Intervalo, IntervaloInclusionSuperior, IntervaloInclusionInferiorIntervalos numéricos.
8, 9, 10, 11, 12, 13, 14DiaDeLaSemana, Horas, Dias, Meses, Trimestre, Bimensual, AnoTramos de una fecha.
15, 16, 17, 18LetraInicial, LetraFinal, PalabraInicial, PalabraFinalTramos de un texto.
19VaciosVacíos frente a rellenos.

La lista sale entera aunque no todos los modos encajen con todas las columnas: agrupar un texto por trimestre no significa nada.

Filtrado

Tres mecanismos determinan qué filas salen. En FlexHub están en la pestaña Filtrado:

ColumnaRótulo en FlexHubQué hace
filtro20Añadir condición, Añadir alternativaLas condiciones guardadas. Cada una es un dato, una comprobación y un valor. Dentro de un bloque deben cumplirse todas; Añadir alternativa abre otro bloque y basta con que se cumpla uno. Sin condiciones salen todas las filas que el rol del usuario deje ver.
algoritmodefiltradoAlgoritmo de compatibilidadUn algoritmo de tipo Búsqueda determina a qué sección pertenece cada fila. Desde FlexHub solo se quita.
filtropermisosEl filtro por permisos. FlexHub no lo muestra.

Las comprobaciones son el enum TipoFiltradoE. Cuáles admite cada clase de dato lo publica el servidor en su catálogo; la familia de esta tabla sigue el nombre del miembro:

FamiliaMiembros de TipoFiltradoE
GeneralesIgual, Distinto, Vacios, NoVacios, En
TextoContiene, NoContiene, ContienePalabras, NoContienePalabras, EmpiezaPor, TerminaPor, NoEmpiezaPor, NoTerminaPor, CoincideRegex, NoCoincideRegex, LogitudTextoSuperiorA, LogitudTextoInferiorA
NúmeroMayorQue, MenorQue, MayorOIgualQue, MenorOIgualQue
Sí/NoSi, No, SiYNo
FechaFechaIgual, FechaDistinta, FechaMenor, FechaMayor, FechaMenorOIgual, FechaMayorOIgual, AnoIgual, AnoDistinto, FechaIntervaloPersonalizado, ReferenciaHaciaIntervaloDinamico
HoraHoraIgual, HoraDistinta, HoraMenor, HoraMayor, HoraMenorOIgual, HoraMayorOIgual

Una condición con lista admite hasta 20 valores: la fila sale si coincide con cualquiera.

Un valor de condición puede ser una constante o un valor que se calcula al abrir el informe: el usuario que lo abre, o la respuesta a una pregunta. FlexHub conserva y muestra esos valores calculados, con la nota Se calcula al abrir el informe., pero no los edita ni ofrece uno nuevo. Una condición que el servidor no puede descomponer se conserva tal cual y sale marcada Solo lectura.

Columnas

Una columna es un dato que el informe saca por pantalla. Al crear el informe, el servidor pone la primera, la de identidad (id de la sección); el resto las añade quien lo diseña. Un informe no tiene dos columnas con el mismo dato. En FlexHub, la ventana de una columna lleva el Título encima de las pestañas General, Cómo se ve y Agrupación. Su contrato, Flex_GetEditablesAsync(FlexObjectTypes.ReportColumns), más el dato con el que se crea:

ColumnaRótulo en FlexHubValores
datoDato, en la card Qué dato muestra de GeneralUn campo de la sección o uno al que se llega por una relación. Una relación se puede elegir entera, que guarda su identificador, o entrar en ella y elegir uno de sus campos. Se elige al crear y no se cambia.
tituloTítuloLa cabecera de la rejilla. Obligatorio.
posicionReordenar, en la lista de columnasEl orden de izquierda a derecha.
visibilidadeVisibilidadInfCol_VisibilidadE. Ver la tabla de visibilidad.
rolcolumnaeRolInfCol_RolE. Ver la tabla de rol.
modofechaRepresentación de la fechaModoFechaE: Defecto (0), Nombre (1), Por tiempo (2), Estándar (3), dd/mm/yyyy (4). Solo cambia algo en una columna de fecha, y FlexHub solo lo muestra en ellas.
modoagrupacion20Representación agrupadaModoRepresentacionGrupalE. Ver la tabla de resúmenes.
criterioagrupaciondinamicaAgrupación dinámicaAgrupacionesCriteriosE, la misma lista que la agrupación del informe.
colorcolColor en la gráficaEl color de la serie. Vacío es automático. Pestaña Agrupación.
resumenpredeterminadopielistaCalculosResumenesEnInformesE: Ninguno (0), Resultados (1), Suma (2), Vacíos (3), Con dato (4), Media (5), Sí (6), No (7), Distintos (8). El resumen del pie de la lista. FlexHub no lo muestra; el motor respeta el valor que ya tenga la columna.

Visibilidad (InfCol_VisibilidadE):

ValorMiembroRótuloComportamiento
0SiempreVisibleVisibleLa columna sale siempre.
1SiempreOcultoOcultaNunca se muestra, pero sigue en el informe: sirve para cálculos y filtros.
2AutoIndefinoSe muestra u oculta según el contexto.
3OcultarEnComplementosOculta en complementosSe ve en el informe principal y se oculta cuando el informe se usa dentro de otra vista.

Rol (InfCol_RolE):

ValorMiembroRótuloComportamiento
0AutomaticoIndefinoEl tipo del campo determina cómo se trata.
1NingunoNingunoSin trato especial.
2MonedaMonedaUn importe: decimales, símbolo y suma como dinero.
3PorcentajePorcentualUn tanto por ciento.
4Cantidad_DestinadorInformeCantidad Dest. InformeLa cantidad que un destinador toma del informe.
5UltimaVezVistoUltimaVezVistoLa fecha de última actividad del registro.

Resumen en la fila de grupo (ModoRepresentacionGrupalE): No agrupar (0), Sumar (1), Contar (2), Valor máximo (3), Valor mínimo (4), Media (5), Primero (6), Último (14), Contar distintos (7), Media distintos (8) y Sumar distintos (9). Los cuatro últimos solo valen con constantes: Contar vacíos (10), Contar sí (11), Contar no (12) y Contar Rellenado (13).

Una columna oculta sigue formando parte del informe: se calcula y sirve para ordenar, agrupar o filtrar. Quitar una columna no borra ningún dato y se puede restaurar; si el informe ordena o agrupa por ella, esas referencias se limpian y hay que volver a ponerlas.

Añadir columnas

La pestaña Columnas del informe tiene dos botones:

  • Nueva columna abre la ventana de una columna. Al elegir el Dato, FlexHub propone el Título.
  • Varias columnas abre Nuevas columnas: una fila por columna, con su Dato y su Título. Columna añade una fila. Agregar todos pone una fila por cada campo de datos de la sección que el informe todavía no muestra, el identificador incluido. Deja fuera los de formato Botón y los que rellena el motor: ubicacion, posicion, fecha, fecham, fechasyn, usuarioid y modificado. Aceptar crea las columnas una detrás de otra y consolida una sola vez.

El título propuesto es la etiqueta del campo. Si el dato es un campo de una relación, como su nombre, se propone la etiqueta de la relación: «Cliente», no «Nombre». Si el dato es la relación entera, el título termina en «ID»: «Cliente ID». Esto último es una regla de FlexHub: una columna cuyo dato es una relación no se crea si su título no termina en «ID», y el aviso es Falta «ID» en el título. Así se distingue de la columna del nombre.

Por la Flex API, Flex_CreateObjectAsync(FlexObjectTypes.ReportColumns, informeId, patch): el padre es el informe, no la sección. El patch lleva dato (la ruta) o campoid, y titulo. Con consolidar a 0, la columna se crea sin consolidar y el motor no la muestra hasta la siguiente consolidación: crea así todas las columnas y llama una vez a Flex_ConsolidateAsync.

Preguntas

Una pregunta es lo que el informe pide a quien lo abre antes de sacar las filas: una fecha, un importe, un registro. Es FlexQuestionDTO, el mismo tipo en informes, documentos y algoritmos; se lee con Flex_GetQuestionsAsync y se escribe con Flex_SetQuestionsAsync.

En FlexHub, las preguntas van al final de la pestaña Filtrado. Añadir pregunta abre la ventana Añadir pregunta. Añadir intervalo crea de una vez dos preguntas de tipo Fecha, «Desde» y «Hasta», con los nombres internos dinaup_desdef y dinaup_hastaf: el motor las reconoce por ese nombre. Solo cabe un intervalo por informe.

PropiedadRótulo en FlexHubQué es
KeywordKeywordEl nombre interno, sin el prefijo v., y la identidad de la pregunta. FlexHub lo pide al crearla y lo rellena solo desde la etiqueta: «Fecha de envío» da FechaDeEnvio. Guardada, ya no se cambia. Si llega vacío, el servidor lo deriva de la etiqueta.
LabelEtiquetaLo que lee el usuario encima del campo. Obligatoria.
InfoAyuda debajo del campo (opcional)Texto libre.
FormatTipo de respuestaFieldFormatE: Texto, Entero, Decimal, Sí/No, Fecha, Fecha y hora, Hora o Relación. Sin Botón: un botón no recoge ninguna respuesta.
RelatedSectionIDSecciónSolo con Relación. Obligatoria.
DropdownReportIDInforme del desplegableSolo con Relación. Vacío, el informe principal de la sección.
DynamicDateRangePreguntar un rango, no un día sueltoSolo con Fecha o Fecha y hora. El usuario elige «este mes» o «trimestre pasado» en vez de un día.
RoleRoleFieldE. Ordinario es sin rol.
CreatedBySystemLa creó el motor, por ejemplo la pregunta Trimestre de un balance trimestral.

Las preguntas se pasan por posición (p1, p2, p3), no por nombre. Por eso un informe publicado o en uso llega con FlexQuestionsDTO.Frozen = true: no se añade, quita ni mueve ninguna, ni se cambia su formato, su sección o su rango de fechas. Se cambian la etiqueta, la ayuda, el desplegable y, por la Flex API, el rol; FlexHub no ofrece el rol.

Para un informe por periodo, la pregunta es de tipo Fecha con el rango activado, y la condición del filtro compara el campo de fecha con esa pregunta. Filtra por un campo de tipo Fecha (sin hora): el corte del periodo no depende de la zona horaria del usuario. Un campo Fecha y hora se guarda en UTC, y un registro de las 23:00 del último día cae en el día siguiente para un usuario con otra zona horaria. Por la API, cada pregunta se responde con su Keyword en el diccionario variables de POST /api/reports.

Consumir un informe

VíaCómo
PlayDesde el menú, por su categoría y subcategoría, o dentro de un panel. Ver Paneles.
FlexHubConsultar, en el pie de la ventana del informe, abre Consultar informe con el listado tal como está guardado: lo que no se ha guardado todavía no se ve.
API RESTPOST /api/reports?id=<GUID> con las variables, filtros y orden en el cuerpo. Ver Referencia de la API REST.
SDK .NETLos métodos de informes del Cliente Dinaup y los componentes DnzReportView de DinaZen.
PG SyncUna tabla PostgreSQL por informe de API sin preguntas ni relaciones. Ver Informes API y Dinaup PG Sync.

Siguiente: Informes API.

En esta página