18/8/15

Enlazar a un informe estático desde un formulario

A veces hay requisitos de usuario que parecen sencillos y que sin embargo requieren mucho trabajo de desarrollo. Lo que técnicamente (en España al menos) se conoce como una chorrada que luego nos lleva horas o días de investigación y desarrollo (= buscar en Google muy fuerte). Esta es una de ellas: imaginad un formulario en CRM con unos cálculos tan complejos que su explicación requiere un PDF de varias páginas. Algo que no podemos simplemente enchufar como una ristra de HTML porque visualmente no encaja. El primer pensamiento es: no pasa nada, creo un webresource con el PDF y otro webresource con el enlace que apunte al primero. Pero hay un problema: los tipos de webresource son:

  • HTML
  • CSS
  • Javascript
  • XML, XSL
  • Imagen (jpg, gif, png)
  • Silverlight
  • Icono

¿Dónde está el tipo PDF? Pues no está, punto. Si creamos un PDF, le cambiamos la extensión, lo subimos como un CSS... muy complicado.

La solución viene de nuestros amigos los informes. La opción más habitual al crear un informe es cargar ficheros RDL con la opción Cargar un fichero existente. Pero nada impide que este fichero existente sea de otros tipos (PDF, DOC, PPT etc.) siempre que el navegador de nuestro cliente sepa qué hacer con él. Una vez subido el fichero, nos fijamos en la URL del formulario de edición del informe. Tendrá aproximandamente este aspecto:

..../CRMReports/reportproperty.aspx?id=%7bFAFAFAFA-AAFA-FAFA-FAFA-111111111111%7d

Nos apuntamos el código GUID del informe, en este caso: FAFAFAFA-AAFA-FAFA-FAFA-111111111111

Y creamos un webresource de tipo HTML con el siguiente código, que incluye una llamada a crmreports/download.aspx que hace justo lo que su nombre sugiere.

<a href="/crmreports/download.aspx?id=%7bFAFAFAFA-AAFA-FAFA-FAFA-111111111111%7d">Descargar PDF</a>

Ojo, no olvidéis el %7b y el %7d, de otra manera no funcionará. Otra buena noticia es que este código sigue funcionando entre distintos entornos, de modo que si incluimos informe y webresource en una solución, exportamos e importamos, el enlace seguirá funcionando.

2 comentarios:

Anónimo dijo...

No me acaba de funcionar, siguiendo tus pasos he realizado todo lo que comentas en el articulo pero a la hora de añadir el recurso web en el formulario no refleja ningún cambio.

Adicionalmente he probado de acceder a la url del fichero, pero aparece error conforme no lo encuentra o no existen suficientes permisos.

Podrías explicar un poco más en detalle la última parte, es decir, tengo el PDF subido, he cogido el GUID, he creado el recurso web incrustando en el texto origen el enlace con el GUID copiado pero ahora me falta añadir el recurso web al formulario para que el cliente pueda hacer clic y abrir el PDF.

Daniel Sabater dijo...

Pues una vez tengas el recurso web con el enlace al informe, lo añades a un formulario de entidad de la manera habitual y publicas todos los cambios. Por otro lado, si poniendo la URL en un navegador te da un error ahí hay algo raro: comprueba que has especificado bien el atributo HREF.