Sistema de Gestión de Negocios "Hexa"
Base de datos de conocimiento.
Doc. Ref. 8688 Título: Caso práctico: forzar la salida de etiquetas hacia una impresora determinada Autor: Hexa Última actualización: 28/09/2010#Impresora #Informe #Crystal #Reports #Etiqueta |
Caso práctico: forzar la salida de etiquetas hacia una impresora determinada
La impresión de listados, informes, documentos, etiquetas o cualquier otra salida en papel, se hace normalmente a través de informes Crystal Reports que utilizan siempre la impresora predeterminada del sistema. Si se desea cambiar a otra impresora, es necesario predeterminarla antes de generar el informe.
Esto puede llegar a ser incómodo en el caso de usuarios que imprimen informes repetidamente en varias impresoras. Por ejemplo, una persona que prepara expediciones de mercancías en un almacén y que tiene que imprimir por un lado albaranes de salida y por otro etiquetas de bulto.
En este documento se expone una forma de establecer la salida hacia diferentes impresoras en función del informe que se está generando. Fácilmente se podría extender el sistema para usar condiciones más sofisticadas de elección de la impresora: en función del día y la hora, el usuario, el equipo, el cliente de la expedición, etc.
Los recursos de Hexa-SGN que vamos a utilizar para esto son:
- Escritura y ejecución de scripts
- Procesos de evento
- Procesos Hexa de cambio de impresora predeterminada
- Almacenamiento de información en la tabla de parámetros
Antes y después de imprimir cualquier informe Crystal Reports se ejecuta, si existen, los procesos de Evento “ImprimeCRVAntes” e “ImprimeCRVDespues”. En el primer evento vamos a detectar el informe y si se trata del que queremos redirigir a otra impresora, almacenaremos la actual en un parámetro y cambiaremos la predeterminada:
Para ello, crearemos (si no existe) el proceso de evento “ImprimeCRVAntes” y escribiremos el script:
Sub Main (PS0, PS1, PS2)
Fichero=Fh.Igu (PS2, "Fichero", True)End Sub
If LCase (Fichero) <> "listado cliente formato etiqueta direccion.rpt" Then Exit Sub
ImprAct = Impresion.ImpPred
BaseDeDatos.CnfS "ImpresoraActual", "" & ImprAct, "", ""
Impresion.PredImp "\\servidor\DYMO LabelWriter 400"
Los parámetros PS0 y PS1 tienen siempre, en cualquier evento, la condición SQL y el orden de los registros a imprimir, por ejemplo PS0=”Codigo>=4500 And Codigo<=4599” y PS1=”Poblacion, Codigo” "
En el parámetro PS2 del evento tiene información sobre el fichero con el formato del informe Crystal Reports, el destino (pantalla o impresora) y el número de copias con el siguiente aspecto:
"Donde’Impresora’ Fichero’ listado cliente formato etiqueta direccion.rpt’ NumeroCopias=1"
En él está el nombre del fichero Crystal Reports que recuperaremos mediante la función “Igu” de la clase de funciones Hexa “Fh”
Si se trata del informe que queremos redirigir, recuperamos el nombre de la impresora actual, lo guardamos para el usuario y equipo actuales, en el parámetro “ImpresoraActual” y predeterminamos la impresora diferente.
En el proceso de evento “ImprimeCRVDespues” crearemos un script que recuperará la configuración anterior de impresora predeterminada:
Sub Main (PS0, PS1, PS2)
Fichero=Fh.Igu (PS2, "Fichero", True)End Sub
If LCase (Fichero) <> "listado cliente formato etiqueta direccion.rpt" Then Exit Sub
ImprAct = BaseDeDatos.Cnf ("ImpresoraActual")
Impresion.PredImp "" & ImprAct
Una vez parametrizado el sistema, cada vez que se genere la impresión de la etiqueta se cambiara temporalmente la impresora predeterminada por la impresora de etiquetas.