Unofficial Content
  • This documentation is valid for:

Cuando se va a instalar un sistema o con el correr del tiempo, es común que el cliente precise personalizar alguno de sus reportes. Esto es, cambiar la imagen con el logo de la empresa, tener conceptos que se deben imprimir o no (p.e. descuento por línea en la factura), cumplir determinada normativa legal que depende de cada país y muchos otros.

Para solucionar esto, en GeneXus es posible modificar el Layout de los reportes, por ejemplo cuando en el momento de la implantación es necesario adaptarlos a la necesidad del usuario, o incluso luego de implantados ya en tiempo de producción, por parte de los mismos usuarios. Por lo tanto podrán modificarse algunos aspectos de la presentación de la salida, como ser fonts, posiciones de los controles, colores, visibilidad de los controles y algunos más.

Desde el punto de vista del desarrollo en GeneXus, son reportes comunes como los que siempre se desarrollaron que al especificarse, además del objeto en sí, generan una metadata (XML) con información de presentación del reporte (controles, posición, fonts y otros). Esa metadata es tomada en runtime para tomar los valores de las propiedades. Al ser una metadata editable, el usuario (funcional, implantador u otro) puede personalizar la presentación del reporte.

Metadata

Es un archivo XML que contiene la información organizada por print block con la información de las propiedades editables de los controles. La genera el especificador con el nombre <NombreDelReporte>.RPT en el mismo directorio que se genera el reporte.

Editor de metadata

Si bien el XML se podría modificar a mano, a efectos de hacerlo más amigable contamos con un editor de estas metadata llamado GeneXus Report Editor. Este editor se encuentra en la raíz de instalación de GeneXeus X ev2 (GxReportEditor.exe) y permite modificar las propiedades de los controles en los printblocks de cada reporte. Al abrir el archivo .rpt de un reporte, la visualización es igual a la que tenemos en GeneXus en la solapa Layout de un reporte.

GxReportEditor2

A los controles se los puede poner invisibles (o eliminarlos del printblock) o ponerlo visible si fue incluido previamente al momento de desarrollo en GeneXus.

GxReportEditor3

También se puede cambiar la posición de los controles dentro del printblock. Lo que no se puede es cambiar los controles de un printblock a otro ni incluir controles que no fueron previstos originalmente, incluyéndolos en algún printblock, en el momento de diseño del reporte en GeneXus. Esto es debido a que modificando el .rpt del reporte no se puede permitir que se modifique la navegación del mismo.

Accediendo a las propiedades de los controles, las mismas pueden ser modificadas, como ser Font, Color y todas las que puedo modificar desde GeneXus en el momento de diseño de un reporte.

GxReportEditor4

Finalmente, al salvar las modificaciones, en la próxima ejecución del reporte correspondiente al archivo .rpt modificado, estos cambios serán tenidos en cuenta y el reporte quedará con el nuevo layout.

Estas modificaciones se pueden realizar tantas veces como sea necesario.

Objeto reporte

Desde el punto de vista de desarrollo en GeneXus, el reporte es un report como los que siempre se desarrollan en GeneXus, sin ninguna particularidad (a partir de GeneXus X un objeto de tipo procedimiento con Layout, ya que se eliminó en tipo de objeto report).

La diferencia es que a partir de la incorporación de esta nueva funcionalidad, GeneXus genera el reporte de tal forma que en lugar de tener las propiedades de los controles hard coded en el código, las obtiene en runtime de la metadata (el archivo .rpt correspondiente). Este hecho no afecta la performance del reporte sustancialmente.

Se cuenta con un mecanismo en caso de querer generar el reporte de la forma tradicional (perdiendo la posibilidad del dinamismo), que es incluir en el archivo config.gx la cláusula use_dynamic_reports=N antes de generar. Este archivo no existe por lo que debemos Crearlo y copiarlo en la raiz de la Kb a la que le queremos desactivar el dinamismo.

Para generar el archivo .rpt con la metadata del reporte, además de generarse automáticamente al generar el objeto, también se puede regenerar solamente dicha metadata sin necesidad de generar el objeto; esto se hace estando en la solapa Layout del reporte accediendo a File/Save Report Xml. Esta opción puede resultar muy útil si luego de hacer varias modificaciones al .rpt de un reporte se quiere volver al default (al que fue generado cuando se generó el objeto) sin necesidad de tener que regenerar el objeto.

Análoga a esta opción, se puede también, a partir de un archivo rpt dado, generar la solapa Layout de un procedure. Para esto, estando parado en la solapa Layout de un reporte, se accede a la opción File/Load Report Xml

Last update: April 2024 | © GeneXus. All rights reserved. GeneXus Powered by Globant