Buscar en este blog

domingo, 25 de noviembre de 2012

Reportes SQL Reporting services (SSRS) en Microsoft Dynamics Ax 2012


En este post vamos a ver lo básico de los reportes:
1. Verificar instalación
2. Editar reportes
3. Crear reportes (AutoDesing)

Antes de crear reportes SQL Reporting Services (SSRS) con Dynamics, lo primero es tener instalados los componentes de BI y Visual Studio Tools. Esto se realiza cuando se instala Ax como se muestra en la siguiente pantalla.
Para verificar que se instalaron correctamente los BI Componentes y el Visual Studio tool, y que el servidor de reporte esta correctamente configurado debemos ir a Herramientas -> Herramientas BI -> Servidores de reportes. Nos debe mostrar la siguiente pantalla:
Aquí debemos verificar que los valores estén llenos y que el nombre del servidor sea el de nuestra maquina.


Una vez hecho esto, cuando abramos el visual studio 2010 y creemos un nuevo proyecto, nos debe aparecer el tipo de proyecto: Microsoft Dynamics AX. No se necesita un tools adicional o librería adicional, simplemente con que hayamos hecho lo de los párrafos de arriba ya Visual Studio se integra con AX.

Editar reportes SSRS 

Lo primero que vamos a ver es cómo editar un reporte existente.
Vamos al AOT de Ax -> Visual Studio Projects -> Dynamics AX Model Projects. En este nodo vamos a encontrar soluciones de visual studio y proyectosque han sido desarrollados usando claro visual studio.

Para editar una solución de las que tenemos en el nodo de Dynamics AX Model, hacemos clic derecho en el que queramos modificar y seleccionamos "Editar". Esto abre el Visual Studio con esa solución y los reportes que contenga.

Después de hacer las modificaciones en el proyecto, guardamos, compilamos y  seleccionamos el proyecto en el explorador de solución, clic derecho sobre el proyecto,  seleccionamos la opción "Implementar" y esto agregará los cambios en Dynamics.

Si no se vieran reflejados, solo hacemos clic en "actualizar" y después en compilar el elemento en el AOT y listo.


Importante: Cuando estamos modificando un reporte en Visual Studio, debemos tener cuidado con la opción "Delete" del menú emergente cuando hacemos clic derecho sobre el reporte. Si hacemos clic en esta opción el reporte sera borrado el AOT de la capa actual donde el usuario este loggeado, si este reporte existe en capas mas bajas lo que pasara es que este reporte sera reestablecido a la capa previa. Ojo con esta opción, esa opción "Delete" NO solo es borrarlo del proyecto de visual studio. Para esto, mejor ocupen "Excluir del proyecto".


Crea reportes SSRS con Query

Para crear un reporte, abrimos Visual Studio 2010 y seleccionamos "nuevo proyecto", en el tipo seleccionamos "Microsoft Dynamics Ax" y en la plantilla seleccionamos "Report Model".
Los reportes necesitan una fuente de datos (datasource), esta puede ser de tres tipos:
- Query
- RDP (report data provider)
- Business logic

Cuando se usa un query como datasource para el reporte SSRS entonces el reporte es llamado "query based report".

Ahora, veamos cómo se hace un reporte basado en Query.

Antes que otra cosa, necesitamos un query creado. Para este ejemplo, vamos a mostrar todos los registros de la tabla CustTable, que es la tabla de clientes de Ax. 

Para crear el query, en el AOT, en la división de "query" hacemos clic derecho y seleccionamos "nuevo query", le ponemos nombre, en este caso "QueryEjemplo".

Arrastramos al DataSources del query la tabla CustTable. Con esto incluimos todos los campos de la CustTable al query. Y en la propiedad "Dynamic" de los campos lo cambiamos a "yes", esto es para que se agreguen al query todos los campos de la tabla CustTable.

Abrimos Visual Studio -> nuevo proyecto -> microsoft dynamics Ax -> Report Model. Con el nombre: PruebaReporteSSR

La solución del proyecto se verá así:
Esto solo nos da el tipo de solución, ahora necesitamos agregar un nuevo reporte, clic derecho sobre la solución y seleccionamos "agregar" y luego "nuevo reporte", le damos nombre y nuestra solución debe verse así:
Nota: Se pueden agregar cuantos reportes necesitemos, ya que cada reporte agregado en VS es un reporte en el AOT, así que pongamos nombres mas específicos que yo uso para el ejemplo.

Hacemos doble clic sobre el reporte creado y veremos los elementos del reporte del lado izquierdo.
Los elementos que se muestran son:
Datasets: Todos los campos disponibles en el query que podemos referenciar en el reporte.
Designs: El diseño mismo del reporte.
Images: Cualquier imagen que queramos mostrar en el reporte.
Data Methods: logica de negocio escrita en C#. Esto no es muy recomendado.
Parameters: Parametros que serán vistos en el reporte o para filtros de usuario para el reporte.

Ahora, necesitamos referenciar el query que creamos dentro del AOT de dynamics. Para esto, hacemos clic derecho en "DataSets" y "Add Dataset". Le podemos cambiar el nombre como queramos.

Y en las propiedades del DataSet creado, esta la propiedad "Query", hacemos clic ahi y nos aparece una ventana con todos los querys.
Hacemos clic en "Next" y seleccionamos lo que queramos mostrar en el reporte "All fields", "All Field Group", "All Display Methods". Podemos seleccionar todos los campos, un grupo de campos especifico y algunos metodos display.
Ahora viene lo bueno... el diseño!!!!!! En el nodo de Designs clic derecho "Add", existen dos opciones, "Auto Design" y "Precision Design", el primero es si solo quieres un reporte rápido, sin diseño personalizado.

Por el contrario, si quieres darle forma tu mism@ elegimos "Precision". Vamos a irnos PRIMERO por Auto Design y después por el tipo de Precision.

Como en todo lo anterior, podemos renombrarlo. Se recomienda que sea llamado "Report" o "Desing", yo le voy a poner ReporteAutoDesing.

Ahora arrastramos el query hacia nuestro diseño de reporte, en mi caso, hacia ReporteAutoDesing.
Con esta acción, indicamos que todos los campos del query se mostraran en nuestro reporte en el mismo orden que como aparecen en la tabla que se agrego a nuestro diseño al arrastrar el query.

Ahora veamos la vista previa, con click derecho sobre el diseño y "preview"
El reporte va a aparecer comos sigue:
Es recomendable por supuesto filtrar los datos para que la generación del reporte no sea muy tardada. Esta forma es muy sencilla pero como se puede ver es muuuuuy fea porque no tiene ningun diseño, en el reporte solo se escupen los datos sin ningun orden especifico.

Eso de ponerlo bonito lo veremos en el siguiente post. Finalmente, cómo enviarlo hacia Ax para poder usarlo? Sencillo:

1. Guarda todo
2. Compila la solución completa
3. Sobre la solución, clic derecho y "Add tuSolucion to AOT"
4. Igual sobre la solucón, clic derecho y "Deploy" o "Implementar"
5. Listo!!!! ya esta en el AOT para que lo uses
Y en Ax veriamos en al AOT:
Cómo ver el reporte en Ax?, una forma es desde el servidor de reportes, o sea http://localhost/Reports, otra forma es crear un Output con el reporte y visualizarlo y la última es llamarlo desde código con x++.

Después veremos cómo usar parametros y un diseño personalizado (PrecisionDesing) y no el automático que propone Ax.


Aquí te puedes descargar el proyecto de Ax: http://adf.ly/tTIrL

Y aquí la explicación en video ya disponible en YouTube: http://adf.ly/tTLXc



Por último, te invito a que te unas a la página de facebook recién creada para estar al día con las actualizaciones del blog y que podamos tener más comunicación. La meta? es hacer la comunidad de habla hispana mas grande sobre Dynamics Ax en cuestiones de desarrollo.

Y por cierto, acuerdate de darle click a algún anuncio si el post te sirvio de algo.





<<<<<     Indice de tutorial de Reportes SSRS....



14 comentarios:

  1. Que tal yercar.

    estoy interesando en seguir tus publicaciones, quiero comentarte las pruebas de instalaciones que he hecho con AX 2012. saludos

    ResponderEliminar
  2. Si están muy buenos los artículos, espero la continuación.
    Saludos.

    ResponderEliminar
  3. Excelente esta serie de artículos, para los aprendices de AX 2012.

    ResponderEliminar
  4. Como se hace para el caso de los archivos .resx Intento subir y no me sal esa opción de añadir al AOT

    ResponderEliminar
  5. Excelente Trabajo, Dios bendiga a quienes comparten el conocimiento

    ResponderEliminar
  6. Ya lo agregue incluso lo puse en un menu pero solo yo lo puedo ver ningun otro usuario puede accesar al menos que sea administrador, ¿como puedo compartirlo?, incluso comparti la ruta y ya lovisualizan otros usuarios pero el reporte les aparece en blanco

    ResponderEliminar
    Respuestas
    1. Verifica las propiedades del menu item: LinkedPermisionType = SSRSReport, LinkedPermissionObjet = modulo donde lo estas poniendo y LinkedPermissionObjectChild = diseño de tu reporte.

      Eliminar
  7. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  8. Hola buenas tardes

    Podrían auxiliarme, estoy realizando una instalación de pruebas sin embargo al realizar el deployment de los reportes me manda el siguiente error:
    Importing AxUtilLib
    Importing AxUtilLib.PowerShell
    Importing Microsoft.Dynamics.Administration
    Importing Microsoft.Dynamics.AX.Framework.Management
    PS C:\Windows\system32> $reports = Get-AXReport -ReportName *
    Get-AXReport : No se encuentra la información de extremo de servicio

    adecuada
    en el objeto de configuración.
    En línea: 1 Carácter: 12
    + $reports = Get-AXReport -ReportName *
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : OpenError:

    (Microsoft.Dynam...etReportCommand:Ge
    tReportCommand) [Get-AXReport], InvalidOperationException
    + FullyQualifiedErrorId : No se encuentra la información de extremo

    de ser
    vicio adecuada en el objeto de

    configuración.,Microsoft.Dynamics.AX.Framew
    ork.Management.Reports.GetReportCommand

    ResponderEliminar
    Respuestas
    1. Si puedes ver cualquier otro reporte estandar de Ax? al parecer no esta bien configurado el servicio de reportes.

      Eliminar
    2. El reporting services esta correcto ya lo he checado 3 veces, y todo esta bien, abre las paginas que se crean y al realizar el deployment de los reportes es cuando manda el error...

      En un caso extremo me recomendarías eliminar todo lo realizado y empezar desde cero, que esto ultimo lo he realizado ya en 4 ocasiones...

      Eliminar
    3. Hola, ese error se refiere a algo con los AIF, trata primero de implementar en lugar todos los reportes un solo reporte, por ejemplo: Publish-AXReport -ReportName CustTransList si uno solo si te deja lo haces por letras Publish-AXReport -ReportName A* pero hay que hacer todo un CIL truncando sysxppassembly
      y eliminando los archivos de XPPIL y del server de reporting eliminar los temporales .auc y .kti, refrescar los WCF del cliente para poder limpiar el caché.

      Eliminar
    4. Al querer implementar un solo reporte como me indicaste me manda el siguiente error...
      PS C:\Windows\system32> Publish-AXReport -ReportName CustTransList
      Implementando Informes y artefactos relacionados.
      Publish-AXReport : No se encuentra la información de extremo de servicio adecuada
      en el objeto de configuración.
      En línea: 1 Carácter: 1
      + Publish-AXReport -ReportName CustTransList
      + ~~~~~~~~~~~~~~~~~~~~~~~~~~
      + CategoryInfo : OpenError: (Microsoft.Dynam...shReportCommand: PublishReportCommand> [Publish-AXReport], InvalidOperationException
      + FullyQualifiedErrorId : No se encuentra la información de extremo de ser
      vicio adecuada en el objeto de configuración.,Microsoft.Dynamics.AX.Framew
      ork.Management.Reports.PublishReportCommand

      En lo que me indicaste si me dejaba implementar uno a uno; pasaría a realizar lo demás que indicas con el CIL; en este paso que no me permite realizar la implementación, que debo de realizar?

      De antemano te agradezco el apoyo.

      Eliminar
  9. Hola, tengo un diario con dos lineas del mismo proveedor, sin embargo algenerar el reporte de pagare solo imprime una linea de este proveedor.
    Alguien sabe como remediar esto y hacer que me imprima albas lineas?
    Saludos.

    ResponderEliminar