TPV- Impresión con Crystal Reports

Creado por David Miralpeix, Modificado el Tue, 05 Mar 2024 a las 08:43 AM por Óscar Ortiz

En esta sección se explicará el funcionamiento normal de la impresión con Crystal Reports en Ahora TPV, la impresión de archivos RPT por subprocesos y los posibles errores con los que nos podemos encontrar al imprimir.


TABLA DE CONTENIDOS


Requisitos previos


Antes de poder realizar impresiones usando Crystal Reports, será necesario lo siguiente:


  • Instalar un AHORA Servicio apuntando a la base de datos.
  • Instalar un AHORA API apuntando a la base de datos.
  • Instalar las librerías de Crystal .net en el servidor.
  • Al instalar, seleccionar "estructura directorios" o, después de instalar, modificar manualmente los parámetros PATHLISTADOS y PATHFICHEROS, para tener definidas y accesibles las rutas en las que se van a almacenar los archivos .rpt y los ficheros pdf respectivamente.


Impresión de .rpt


El proceso de impresión de un .rpt en la TPV sigue los siguientes pasos.


  1.  La TPV realiza una petición de impresión a la API, añadiendo un registro en la tabla ServicioEnvioImpresion.
  2. El servicio (AHORA Servicio) lee el registro y genera el pdf en una ruta de red indicada por el parámetro PATHFICHEROS establecido en la instalación.
  3. La TPV pide a la API el pdf creado y lo manda a la impresora local.


El AHORA Servicio es necesario, ya que sirve como puente entre la API y Crystal Reports, porque la API, que funciona con .NET 6 no se puede comunicar directamente con Crystal Reports.


Para modificar aspectos de la impresión desde la TPV se pueden modificar desde el configurador de la caja, detallado en el siguiente artículo.



NOTA

No recomendamos utilizar Crystal Reports para la impresión de tickets, ya que ralentizará el cobro de 5 a 10 segundos, que es lo que tarda el sistema en imprimirlo y devolvérselo a la TPV.



Impresión de .rpt por subproceso


Desde la versión 4.4.2400.108 se integra un nuevo tipo de subproceso de impresión, para permitir lanzar tareas de impresión tanto de modelos como de formato RPT.


En este artículo nos vamos a centrar en la configuración del subproceso para la impresión haciendo uso de archivos con formato RPT.


En el editor de subprocesos, seleccionar el tipo "Impresión modelo".



Al seleccionar esta opción, en la parte inferior aparecerán los siguientes campos:



  • Tipo documento impresión: permite seleccionar entre impresión de modelo o impresión de Crystal Reports.
  • Impresora: permite seleccionar la impresora que se quiera utilizar, la impresora de tickets, o la impresora secundaria.
  • Copias defecto: el número de copias que se intentarán generar del documento.
  • El último campo, es descriptivo, si se deja apagado, no se mostrará la ventana de selección de número de copias, es decir, el número que se haya colocado en "copias defecto", será definitivo, pero si se activa, pasará a mostrarse antes de imprimir, dando la oportunidad de imprimir un número de copias diferente al colocado en el campo "copias defecto".


Al seleccionar Crystal Reports como tipo de documento, aparecerán campos específicos para la impresión del report



Si todo está correctamente configurado, solo hará falta colocar este subproceso en el proceso deseado


Errores comunes



En caso de ver este error, hay dos puntos donde se puede comprobar las posibles causas.


  • En el apartado "estado de impresión".



  • En la tabla ServicioEnvioImpresion.


En ambos lugares se puede observar el campo "Estado"




 


NOTA

En el apartado "estado de impresión" de la TPV, solo aparecerán los registros "pendientes" y "erróneos".



Si este campo se encuentra en estado "Pendiente" en la TPV, o "1" en base de datos, el error en la impresión puede estar ocurriendo por alguno de estos problemas:


No hay un servicio instalado


El servicio es necesario para poder imprimir con crystal reports, para instalarlo, seguir las instrucciones del artículo de instalación.


El servicio está instalado pero no está iniciado


Para iniciarlo, será suficiente con abrir la aplicación de servicios de Windows, pulsar el servicio, e iniciarlo.  


El servicio está instalado, pero apunta a otra base de datos

El servicio no puede acceder a las impresiones que deban realizarse, si la base de datos a la que apunta no es la misma desde la que intentamos imprimir. 


IMPORTANTE: 

Es posible que el servicio esté apagado, pero en la ventana aparezca que sí lo está. Antes de descartar esta opción como posible causa, es recomendable actualizar la lista de servicios en caso de que se esté mostrando información incorrecta.





Si el campo se encuentra en estado "Erróneo" en la TPV, o "4" en base de datos, el problema de la impresión puede ser por una de las siguientes razones:


Se ha instalado más de un servicio


Sólo se debe instalar un servicio para una base de datos, al instalar más se interfiere con el correcto funcionamiento del servicio.


En caso de tener más de un servicio en ejecución, el primero que llega a la tarea será el que la ejecute, siendo posible que de problemas de sincronización si esos servicios adicionales bloquean los registros al mismo tiempo.


Además, si un servicio se instala en un equipo sin las librerías de Crystal, podría darse el caso de que dicho servicio genere errores de impresión mientras que otro servicio no, dando la sensación de intermitencia en la impresión.


Para verificar si existe más de un servicio se puede parar uno, lanzar una impresión, y si el registro no queda en estado pendiente es que otro servicio lo ha procesado.


El servicio no tiene acceso a las rutas de los informes


Esto ocurre al no tener configurado debidamente el parámetro PATHFICHEROS. Puesto que la TPV no utiliza Crystal directamente, el encargado de la generación del PDF es AHORA Serviciosiendo AHORA API la que posteriormente sirve el PDF generado a la TPV para su impresión por la impresora definida en Cajas_Listados, por tanto, ambos módulos (Servicio API) deben de tener acceso de lectura y escritura a la ruta establecida en PATHFICHEROS

Por defecto, el usuario con el que se ejecuta ambos servicios no tiene permisos de acceso a recursos de red, por tanto es posible que requiera modificarse el mismo desde la herramienta de servicios de Windows.


Este error deja un registro en la tabla ServicioEnvioImpresion con un el siguiente mensaje de error:



No se han instalado las librerías de crystal . net en el servidor


En el Asistente de Instalación están incluidas. Es necesario tener en cuenta que las librerías de Crystal del ERP no son las mismas que las librerías utilizadas por el Servicio. 

El error que aparecerá en este caso dirá "Se produjo una excepción en el inicializador de tipo de CrystalDecisions.CrystalReports.Engine.ReportDocument"


Se ha producido un error de Crystal


Si el problema con la impresión se debe a un error de Crystal, el registro de la tabla ServicioEnvioImpresion que corresponde a la tarea de impresión fallida, contiene el error ocurrido en la columna TextoError.


Registro en estado bloqueado


Por otra parte, si el campo se encuentra en estado "Bloqueado" en la TPV, o "3" en base de datos, reiniciar el servicio devolverá el registro a "Pendiente", pero hay que tener en cuenta que si no ha ocurrido de forma puntual, y la causa del error no se ha corregido, el registro volverá a quedarse como "Bloqueado" o pasará a "Erróneo".


No está definida la ruta de los listados/ficheros


Estos errores aparecen en la TPV al intentar imprimir un .rpt sin tener el parámetro PATHFICHEROS y/o PATHLISTADOS configurado.



No se pudo conectar con la base de datos


Este error se produce cuando el report pierde la conexión interna con la base de datos.


Para solucionarlo, bastará con regenerar el origen de datos usando la utilidad CambiaBD_Crystal.exe contenido dentro de la ruta del ERP.



¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo