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 cómo se agrupan. Lo abre una persona desde el menú, lo muestra un panel, lo ejecuta una integración o lo consume el SDK. En la Flex API es el tipo FlexObjectTypes.Reports; sus columnas, FlexObjectTypes.ReportColumns.
Antes de empezar
- Un informe pertenece a una sección principal activa y no cambia de sección.
- La pantalla: FlexHub → Informes. Desde el SDK,
Flex_CreateObjectAsync(FlexObjectTypes.Reports, sectionId, patch). - FlexHub no elimina informes, solo sus columnas.
Las familias
La columna destino guarda el enum TipoInformeE. Todo informe hecho a mano es Ordinario (12); los demás los crea el motor y no se editan.
| Valor | TipoInformeE | Qué es |
|---|---|---|
| 12 | Ordinario | Un informe hecho a mano. FlexObjectLiteDTO.IsOrdinaryReport = true. |
| 2 | Principal | El listado principal de una sección. |
| 3 | ComboDesplegableAutomatico | El desplegable de un campo de relación. |
| 1 | AutoWidget01 | El widget de un panel. |
| 6 | ValoresMemorizados | Los valores memorizados de un campo. |
| 7, 8 | Destinador_Ver, Destinador_Agregar | Los listados de un destinador. |
| 14 | CarrilProceso | Los carriles de una vista de proceso. |
El servidor envía el tipo resuelto en IsOrdinaryReport y su etiqueta en KindLabel. La categoría Funcionalidad con subcategoría API convierte un informe en informe API.
Identidad
| Columna | Rótulo en FlexHub | Qué hace |
|---|---|---|
nombre | Nombre | Mínimo 3 caracteres. Si dos informes de la misma sección y categoría coinciden, el servidor cambia el nombre y devuelve el que puso. De aquí sale la palabra clave. |
categoria, subcategoria | Categoría, Subcategoría | Dónde se archiva y desde dónde se pide en el menú. Sin categoría, ninguna pantalla lo ofrece. |
descripcion | Descripción | Texto libre. |
comentario, icono | FlexHub no los muestra. |
Diseño
En FlexHub, pestaña Presentación.
| Columna | Rótulo en FlexHub | Valores |
|---|---|---|
rpp | Filas por página | Cuántas filas trae el servidor de una vez. Vacío al crear, 1.000. |
modorenderizado | Vista | Rejilla 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, pero se respetan si el informe ya los tiene. |
renderizadofijo | No dejar cambiar la vista | Sí/No. |
npcp | Ocultar la paginación | Sí/No. |
boardcolgrupo1, boardcolgrupo2 | Board: columna que hace las calles, Board: columna que las subdivide | Columnas del informe. Solo con Board. |
graficacolgrupo | Gráfica: columna que agrupa | Columna del informe. Solo con una gráfica. |
avisomsg, avisotipo | Mensaje de aviso, Tipo de aviso | El texto encima del listado y InformeTipoMensajeE: Sin Aviso (0), Ocultable (1), Fijo (2). |
infrelacionado, infrelacionetiqueta | Informe relacionado, Rótulo del informe relacionado | El informe que se ofrece junto al listado, y con qué texto. |
Orden y agrupación
- Orden: hasta nueve niveles,
colorden1acolorden9, con su sentido encolorden1descacolorden9desc. Cada nivel desempata el anterior. Sin niveles, el orden no está garantizado. - Agrupación: hasta nueve niveles,
campoagrupacion1acampoagrupacion9, con su modo encampoagrupacionmodo1acampoagrupacionmodo9.
En FlexHub son las cards Cómo se ordena y Cómo se agrupa. El modo de agrupación (Qué se considera lo mismo) es el enum AgrupacionesCriteriosE:
| Valor | Miembro | Qué considera lo mismo |
|---|---|---|
| 0 | NoAgrupar | Nada: el nivel no hace nada. |
| 1 | Iguales | Valores iguales. |
| 2, 3 | ParteEntera, ParteDecimal | La parte entera o la decimal de un número. |
| 4 | ParEImpar | Pares e impares. |
| 5, 6, 7 | Intervalo, IntervaloInclusionSuperior, IntervaloInclusionInferior | Intervalos numéricos. |
| 8 a 14 | DiaDeLaSemana, Horas, Dias, Meses, Trimestre, Bimensual, Ano | Tramos de una fecha. |
| 15 a 18 | LetraInicial, LetraFinal, PalabraInicial, PalabraFinal | Tramos de un texto. |
| 19 | Vacios | Vacíos frente a rellenos. |
La lista no se filtra por el tipo de la columna: elige un modo que encaje con el dato.
Filtrado
En FlexHub, pestaña Filtro.
| Columna | Rótulo en FlexHub | Qué hace |
|---|---|---|
filtro20 | Añadir condición, Añadir alternativa | Las condiciones: un dato, una comprobación y un valor. Dentro de un bloque se cumplen 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 deja ver. |
algoritmodefiltrado | Algoritmo de compatibilidad | Un algoritmo De búsqueda decide qué filas entran. Desde FlexHub solo se quita. |
filtropermisos | El filtro por permisos. FlexHub no lo muestra. |
Las comprobaciones son el enum TipoFiltradoE; cuáles admite cada tipo de dato lo publica el servidor.
| Familia | Miembros de TipoFiltradoE |
|---|---|
| Generales | Igual, Distinto, Vacios, NoVacios, En |
| Texto | Contiene, NoContiene, ContienePalabras, NoContienePalabras, EmpiezaPor, TerminaPor, NoEmpiezaPor, NoTerminaPor, CoincideRegex, NoCoincideRegex, LogitudTextoSuperiorA, LogitudTextoInferiorA |
| Número | MayorQue, MenorQue, MayorOIgualQue, MenorOIgualQue |
| Sí/No | Si, No, SiYNo |
| Fecha | FechaIgual, FechaDistinta, FechaMenor, FechaMayor, FechaMenorOIgual, FechaMayorOIgual, AnoIgual, AnoDistinto, FechaIntervaloPersonalizado, ReferenciaHaciaIntervaloDinamico |
| Hora | HoraIgual, HoraDistinta, HoraMenor, HoraMayor, HoraMenorOIgual, HoraMayorOIgual |
- Una condición con lista admite hasta 20 valores: la fila sale si coincide con cualquiera.
- El valor puede ser una constante o calcularse al abrir el informe (el usuario que lo abre, la respuesta a una pregunta). FlexHub muestra los calculados con Se calcula al abrir el informe., pero no los edita ni crea.
- Una condición que el servidor no puede descomponer se conserva y sale marcada Solo lectura.
- Con una fecha, FlexHub ofrece además las funciones relativas del motor (
EventStartedLessThanXDaysAgo_Datey sus hermanas en minutos, horas, días, meses y años),IsYear,IsQuartereInDynamicRange_*, que compara con un periodo de Intervalos. El valor que pide cada condición sale del parámetro de su función: un número en «en los últimos», un periodo en «está en el periodo». Al ejecutar el informe, una relativa con un número escrito se convierte en una comparación entre fechas, que puede usar el índice de la columna.
Columnas
Una columna es un dato que el informe saca por pantalla. Al crear el informe, el servidor pone la de identidad (id). Un informe no repite dato en dos columnas. Su contrato es Flex_GetEditablesAsync(FlexObjectTypes.ReportColumns):
| Columna | Rótulo en FlexHub | Valores |
|---|---|---|
dato | Dato | Un campo de la sección o uno al que se llega por una relación. Una relación entera guarda su identificador. No se cambia después de crear la columna. |
titulo | Título | La cabecera de la rejilla. Obligatorio. |
posicion | Reordenar | El orden de izquierda a derecha. |
visibilidade | Visibilidad | InfCol_VisibilidadE. |
rolcolumnae | Rol | InfCol_RolE. |
modofecha | Representación de la fecha | ModoFechaE: Defecto (0), Nombre (1), Por tiempo (2), Estándar (3), dd/mm/yyyy (4). Solo en columnas de fecha. |
modoagrupacion20 | Representación agrupada | ModoRepresentacionGrupalE, el resumen en la fila de grupo. |
criterioagrupaciondinamica | Agrupación dinámica | AgrupacionesCriteriosE, la misma lista que la agrupación del informe. |
colorcol | Color en la gráfica | El color de la serie. Vacío, automático. |
resumenpredeterminadopielista | CalculosResumenesEnInformesE, el resumen del pie: Ninguno (0), Resultados (1), Suma (2), Vacíos (3), Con dato (4), Media (5), Sí (6), No (7), Distintos (8). FlexHub no lo muestra. |
| Valor | InfCol_VisibilidadE | Rótulo | Qué hace |
|---|---|---|---|
| 0 | SiempreVisible | Visible | Sale siempre. |
| 1 | SiempreOculto | Oculta | No se muestra, pero sirve para cálculos, orden, agrupación y filtros. |
| 2 | Auto | Indefino | Sale o no según el contexto. |
| 3 | OcultarEnComplementos | Oculta en complementos | Se oculta cuando el informe va dentro de otra vista. |
| Valor | InfCol_RolE | Rótulo | Qué hace |
|---|---|---|---|
| 0 | Automatico | Indefino | Lo decide el tipo del campo. |
| 1 | Ninguno | Ninguno | Sin trato especial. |
| 2 | Moneda | Moneda | Un importe: decimales, símbolo y suma como dinero. |
| 3 | Porcentaje | Porcentual | Un tanto por ciento. |
| 4 | Cantidad_DestinadorInforme | Cantidad Dest. Informe | La cantidad que un destinador toma del informe. |
| 5 | UltimaVezVisto | UltimaVezVisto | La fecha de última actividad del registro. |
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), Sumar distintos (9). Solo con constantes: Contar vacíos (10), Contar sí (11), Contar no (12) y Contar Rellenado (13).
Quitar una columna no borra datos y se puede restaurar. Si el informe ordenaba o agrupaba por ella, esas referencias se limpian.
Añadir columnas
En FlexHub, Añadir columnas en la pestaña Columnas. Los pasos: Columnas.
- Agregar todos pone una columna por cada campo que el informe no muestra, salvo los Botón y los que rellena el motor (
ubicacion,posicion,fecha,fecham,fechasyn,usuarioid,modificado). - El título propuesto es la etiqueta del campo; con un campo de una relación, la etiqueta de la relación («Cliente», no «Nombre»).
- Una columna cuyo dato es la relación entera tiene que terminar en «ID» («Cliente ID»). Si no, FlexHub avisa Falta «ID» en el título.
Por la Flex API, Flex_CreateObjectAsync(FlexObjectTypes.ReportColumns, informeId, patch): el padre es el informe. El patch lleva dato (la ruta) o campoid, y titulo. Con consolidar a 0, crea todas y llama una vez a Flex_ConsolidateAsync.
Preguntas
Una pregunta es lo que el informe pide antes de sacar filas: una fecha, un importe, un registro. Es FlexQuestionDTO, igual en informes, documentos y algoritmos; se lee con Flex_GetQuestionsAsync y se escribe con Flex_SetQuestionsAsync. En FlexHub van al final de la pestaña Filtro.
Añadir intervalo crea dos preguntas Fecha, «Desde» y «Hasta», con los nombres internos dinaup_desdef y dinaup_hastaf, que el motor reconoce. Cabe un intervalo por informe.
| Propiedad | Rótulo en FlexHub | Qué es |
|---|---|---|
Keyword | Keyword | El nombre interno, sin v.. Se propone desde la etiqueta («Fecha de envío» da FechaDeEnvio) y no se cambia después de guardar. Vacío, lo deriva el servidor. |
Label | Etiqueta | Lo que lee el usuario. Obligatoria. |
Info | Ayuda debajo del campo (opcional) | Texto libre. |
Format | Tipo de respuesta | FieldFormatE: Texto, Entero, Decimal, Sí/No, Fecha, Fecha y hora, Hora o Relación. |
RelatedSectionID | Sección | Solo con Relación. Obligatoria. |
DropdownReportID | Informe del desplegable | Solo con Relación. Vacío, el informe principal de la sección. |
DynamicDateRange | Preguntar un rango, no un día suelto | Solo con fechas. El usuario elige «este mes» o «trimestre pasado». |
Role | RoleFieldE. Ordinario es sin rol. | |
CreatedBySystem | La creó el motor, como la pregunta Trimestre de un balance trimestral. |
Las preguntas se pasan por posición (p1, p2, p3). Por eso un informe publicado o en uso llega con FlexQuestionsDTO.Frozen = true: no se añaden, quitan ni mueven, ni cambian de formato, sección o rango. Se cambian la etiqueta, la ayuda, el desplegable y, por la Flex API, el rol.
Para filtrar por periodo, usa una pregunta Fecha con rango y compárala con un campo Fecha (sin hora). Un campo Fecha y hora se guarda en UTC: un registro de las 23:00 del último día cae en el día siguiente para un usuario de 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ía | Cómo |
|---|---|
| Play | Desde el menú, por su categoría y subcategoría, o en un panel. |
| FlexHub | Consultar abre Consultar informe con el informe tal como está guardado. |
| API REST | POST /api/reports?id=<GUID> con variables, filtros y orden en el cuerpo. Ver Informes y documentos por la API. |
| SDK .NET | Los métodos de informes del Cliente Dinaup y DnzReportView de DinaZen. |
| PG Sync | Una tabla por informe API sincronizable. Ver Informes API. |