Logo

ClearLight
Sistema Integrado para la Administracion

Su IP: 3.227.247.17


Como utilizar aplicaciones de Office para generar formatos de Documentos

A pesar de que nuestro generador de formatos tiene todas las capacidades necesarias para acceder a toda la riqueza de recursos graficos de Windows, los documentos resultantes sólo pueden almacenarse "en papel".

Uno de nuestros clientes necesitaba generar sus documentos de venta en algún formato susceptible de enviarse por correo electrónico, y hasta ahora había suplido esa deficiencia de ClearLight exportando los detalles del documento a una hoja de Excel -mediante un reporte de usuario- y pegando los detalles en una hoja donde tenía un formato más o menos estandarizado.

La solución consiste de tres elementos: un libro de Excel que sirve como plantilla para la generación de los formatos, el script FormatoDocumento.vbs, utilizado cuando la elección del archivo de formato para algún tipo de documento depende de condiciones, y el script FacturaExcel.vbs, que es el responsable de implementar la "transferencia" de los datos del documento de ClearLight a la hoja de Excel.

Los tres archivos pueden descargarse en éste vinculo: FormatoExcel.zip 38KB.

Esta solución ilustra un uso poco frecuente del formateador de documentos: servir como puente entre la aplicación y un script: cuando el nombre del archivo de formato devuelto por un documento tiene la extensión .VBS, el formateador lo que hace es crear un control script, cargar el archivo, pasarle una referencia al documento bajo el nombre OwnerObject y otra a la Factoría (obtenida directamente del documento: DocFormatter no sabe nada acerca de las aplicaciones que lo usan, pero cualquier documento que quiera usar DocFormater y para el que exista la posibilidad de presentarse a través de un script, debe implementar la propiedad Factoria).

Los scripts de generación de documentos son parecidísimos, en esencia, a cualquier otro script de los usados en ClearLight.

Office es una combinación de productos extremadamente poderosa y útil. De hecho, es una de las razones que me mantienen "atado" a Windows. He "jugado" un poco con otros lenguajes y plataformas, igual me falta en ellas la experiencia que tengo con Windows y Office, pero no veo las posibilidades de integración entre aplicaciones que brinda la combinación de Office con las aplicaciones desarrolladas para correr sobre Windows, aun cuando no hayan sido concebidas con la integración con Office en mente.

Por eso me parece importante documentar un poco esta solución, como un ejemplo de lo que se puede hacer.

Este cliente, como dije al principio, ya tenía algo así como un formato estandarizado para la elaboración de sus documentos electrónicos. De manera que lo primero que hice fue tomar ese formato y eliminar todo lo que no era útil (es sorprndente lo que los usuarios pueden meter en un libro de Excel).

Acto seguido, le asigné nombres a las celdas que contendrán información variable. El uso de nombres no sólo aumenta la legibilidad del código (es mejor escribir -y leer- wkSheet.Range("SubTotal") que wkSheet.Cells(21, 8)), sino que le permite al usuario reubicar las celdas "de salida" del formato con sólo reasignar o reubicar el nombre desde el menu de Excel.

Y luego, escribí el script (FacturaExcel.vbs). Para colocar la dirección del cliente había dos celdas: esto es insuficiente para almacenar los 160 caracteres de dirección que permite ClearLight. Pero la dirección en ClearLight es una sola secuencia de hasta 160 caracteres, y aquí había solo dos lineas. Copié el codigo de la función Convert2Lines (convierte una cadena en un arreglo de sub cadenas de longitud liitada) de un módulo de Visual Basic, la pegué en el script, eliminé las especificaciones de tipo (As Tipo) de las declaraciones de las variables y corrió perfectamente.

Ahora, cuando el usuario desea enviar una copia de la factura, o una cotización - el formato y el script funciona igual para todos los Documentos de Venta: facturas, NNEE y cotizaciones- simplemente le dice al formato que sí quiere generarlo en Excel y una vez que la hoja se le presenta selecciona Arcivo->Enviar a->Destinatario de Correo desde el menú de Excel: la hoja se convierte en un mensaje de correo electrónico que es inmediaamente dirigido al destinatario.

Espero que la solución anexa sirva como ejemplo para aprovechar los potenciales de interoperabilidad que ofrece Windows, y que justifica considerablemente su uso sobre otras opciones, tal vez más baratas, pero mucho menos versátiles.