domingo, julio 14, 2013

FastReport para (x)Harbour esta de regreso !!!! .... De la mano de Xailer !!!!

Si leíste hace algunos años (casi 4 para ser exactos, ¡ cómo pasa el tiempo !) mi artículo FastReport.... Desde Rusia con amor para xHarbour, seguramente no dudaste en comprar tu copia y ponerte a desarrollar todos tus reportes, informes, hojas de cálculo, etc. etc. etc. con FastReport.

FastReport llegó al mundo (x)Harbour de la mano de Sergey Spirin brillante programador ruso,quien desarrolló una completísima interfaz para (x)Harbour, basado en el soporte OLE que FastReport ofrece para todos los lenguajes de programación.

Cuando comprabas FastReport para (x)Harbour a Sergey, él te entregaba una clase para (x)Harbour con su correspondiente código fuente, un archivo de cabecera .CH y una DLL generada por él mismo (FastReport se puede comprar con el código fuente incluído, lo cual permite generar la DLL todas las veces que quieras) dicha DLL contenía todo el generador de informes FastReport (dato curioso: TODO FastReport, incluyendo diseñador visual de informes el módulo de vista previa así como los 11 motores de exportación a distintos formatos, están contenidos en una única DLL de aproximadamente 4 Mbytes de tamaño, que además, no requiere ningún proceso de instalación especial, basta que la copies a la carpeta donde tienes el programa EXE, no necesitas mas nada), con lo cual estabas listo para incluir este poderoso generador de informes en tus programas (x)Harbour, incluyendo los programas desarrollados para modo consola o bien para Windows con cualquiera de las GUIs mas populares: Xailer, FiveWin y Harbour MiniGUI.

Supongo que Sergey se cansó de vender copias y copias de FastReport para (x)Harbour, nosotros en CiberTec, ademas de haber realizado la traducción y el manual del producto de Sergey en español, vendimos algunas decenas de copias del producto, desafortunadamente y porque la vida tiene un final, hace poco mas de 1 año, sin avisar, Sergey Spirin falleció, dejando además de sus deudos personales, a unos cientos de programadores (x)Harbour que usamos su producto, huérfanos y sin saber a quien recurrir,  con esperanza de versiones mas potentes del generador de informes así como con la promesa inconclusa de poder utilizar otros productos de la famila FastReport con (x)Harbour.

El impacto de FastRepot ha sido tal en la comunidad de desarrolladores (x)Harbour, y en especial en la comunidad Xailer (conozco muy pocos desarrolladores de Xailer que no usan FastReport) que el equipo Xailer decidió retomar el proyecto de Sergey, continuar dándole vida a un excelente producto que ya dábamos por perdido para la comunidad de (x)Harbour. Así que Xailer firmó un contrato de "partnership" con la empresa que desarrolló FastReport para remotar el trabajo de Sergey, pero además inyectarle nuevo poder al mismo. Xailer es ahora "Desarrollador Asociado de FastReport"

Una vez firmado el acuerdo con Alexander Tzyganenko, CTO de FastReport, el equipo Xailer puso manos a la obra, primeramente analizando el trabajo de Sergey, que, como mencioné anteriormente, estaba basado en la conexión OLE de FastReport y aunque esto funciona y lo hace bien, no una buena idea hacerlo así, porque añades una capa extra de sobrecarga al programa que realmente no necesita, debido a esto el equipo Xailer decidió hacer llamadas directas a las funciones contenidas en la DLL, con lo cual se gana en velocidad de acceso a los informes.

La ventaja adicional de hacer llamadas directas a la DLL en vez de hacerlo por OLE es que tienes acceso a otras funciones que no están accesibles vía OLE porque no están publicadas para ser usadas por esta tecnología, lo cual le permitió al equipo Xailer acceder a TODO el poder de FastReport, capacidades que solo eran accesibles mediante lenguajes como Delphi, ya que la versión de FastReport que usa (x)Harbour es la misma que usa Delphi como VCL (Visual Control Library), en palabras de Ignacio Ortiz de Zuñiga.... "nos hemos metido hasta la cocina de FastReport y somos capaces de realizar cosas increíbles con el FastReport".

La nueva versión de FastReport para (x)Harbour, mejoró notablemente el acceso a datos, sobre todo en operaciones maestro / detalle / subdetalle / sub-sub detalle, como me comentó Ignacio en su momento ...."parece que Sergey no sabía para que servía el SET RELATION, no veas la que montaba para hacer un maestro detalle" con la nueva versión de FastReport adaptada por el equipo Xailer se facilitó el acceso a datos DBF, pero también, y tomando en cuenta que cada vez son menos los desarrolladores que utilizan tablas DBF y prefieren las bases de datos SQL, la nueva versión de FastReport para xHarbour incluye un completísimo soporte para los DataSets de Xailer.

Se ha tratado de mantener la compatibilidad con todo el trabajo de Sergey, porque es sabido que muchos desarrolladores de (x)Harbour utilizan este producto y sería una pena tener que cambiar la metodología que todos hemos usado hasta el momento para utilizar FastReport, también se han optimizado muchas funciones para mejorar el acceso a los "internals" del generador de informes desde Xailer, como son las llamadas a funciones escritas por tí y que se encuentren contenidas dentro del archivo EXE, Sergey utlizaba una función llamada CallHBFunc() para llamar a una función contenida dentro del EXE, la versión de Xailer realiza la llamada directa, sin necesidad de usar la función anteriormente mencionada.

Otra de las "quejas" o "temores" de los desarrolladores, es que el trabajo de Sergey se quedó estancado en la versión 4.7.92. La versión de FastReport para (x)Harbour desarrollada por el equipo Xailer, funciona con la versión mas reciente del generador de informes, que es la versión 4.14.3 garantizando además que tus aplicaciones van a trabajar con la versión mas reciente del generador de reportes (recuerda que FastReport para (x)Harbour funciona con la versión VCL para Delphi, existen otros productos FastReport para .NET, Lazarus, FMX y Mono.)

¿ Es correcto llamar a este desarrollo FastReport para (x)Harbour ?, de momento creo que no, obviamente el equipo Xailer ha enfocado todo su esfuerzo en hacer que FastReport  en primer lugar funcione correctamente con el IDE de Xailer, y lo ha logrado con todo éxito. En la versión 3.1 de Xailer (en otro artíclo hablaremos mas a fondo de esta nueva versión) se ha incluido una pestaña dentro del diseñador del IDE para ofrecer soporte a FastReport, directamente, tal como se hace en Delphi y en .NET.


Se ha puesto especial interés en el soporte a los DataSets de Xailer, tanto a DBF, ADS, SQL y Array DataSet. Me he tomado la libertad de publicar aquí el ejemplo de FastReport para Xailer (como sería correcto llamarlo), este ejemplo es IDENTICO al que descargas de la página web de FastReport para Delphi, solo que este ejemplo esta escrito en Xailer 3.1, utiliza todo tipo de DataSets de Xailer, incluye 60 reportes distintos en formato FR3 y la libería DLL de FastReport en versión demo:


Una de las cosas que mas me han gustado de esta versión de Xailer y FastReport es que ya no hay necesitad de tener un archivo .XML con las traducciones de los mensajes de FastReport, ya que ahora se pueden incluir dentro del EXE, por otro lado otra enorme ventaja de Xailer 3.1 (repito, hablaremos de esta nueva versión en otro artículo) es la posibilidad de incluir dentro del EXE cualquier tipo de archivo a travez del archivo de recursos, lo cual nos permite incluir todos los informes .FR3 en nuestro en EXE y no tener que repartirlos en archivos individuales, si no lo deseamos.

Ok, está claro, existe un FastReport para Xailer y funciona bien, pero.... ¿ Qué pasa si no utilizo Xailer ?, ¿ Que pasa si utilizo FiveWin, MiniGUI, Visual xHarbour o simplemente (x)Harbour en modo consola ?, pues que DE MOMENTO no podrás usar esta nueva versión ya que ha sido especificamente diseñada para su uso con Xailer y mas especificamente con la versión 3.x, sin embargo, he hablado con Ignacio y me comenta que seguramente habrá un versión "genérica" para usar con (x)Harbour y con todas sus GUIs "mas adelante", pero no hay, de momento, una fecha definida para liberar dicha versión, aunque pensándolo bien y después de todo, ya han hecho la parte mas complicada: hacer compatible FastReport con Xailer y por lógica con (x)Harbour. 

Hasta aquí todo bien, y en este momento quizá te estés preguntando ¿ Cuanto cuesta o va a costar esta nueva version de FastReport ?, de momento, hasta donde tengo entendido, el contrato firmado entre Xailer y FastReport, obliga a Xailer a distribuir una licencia de FastReport original por cada versión de FastReport para Xailer que se venda, sin embargo esto no afectará el precio final del producto ya que saldrá al mercado a un precio similar a lo que Sergey cobraba, es decir 300 Euros, por este precio obtienes  una licencia original de FastReport que obtendrás directamente de la empresa fabricante del generador de informes, mientras que el componente para Xailer (o para [x]Harbour cuando sea liberado) lo obtendrás directamente de la empresa Xailer.

Y ahora viene otra pregunta ¿ Qué pasa si yo compré mi FastReport para (x)Harbour con Sergey ?, ¿ tengo derecho a una actualización, upgrade o algo parecido para poder usar esta nueva versión desarrollada por el equipo Xailer ? pues no tengo idea, aunque podría apostar por un NO rotundo (opinión personal), sabemos que muchos usuarios no tienen una versión legal de FastReport y dado que la versión vendida por Sergey no incluía ningún sistema de protección o registro, pues no hay manera de saber si el usuario tiene una versión legal de FastReport. Desconozco si en un futuro Xailer implemente alguna política de actualización, pero yo creo que no la habrá.
FastReport es la elección por excelencia para el desarrollador de (x)Harbour, el generador da para mucho, personalmente me he puesto a jugar un poco con la exportación a HTML de FastReport y la interfaz para Xailer, he recompilado un viejo ejemplo con la nueva versión de Xailer y FastReport y he aquí el resultado:

Usando Xailer y FastReport para publicar en la web

¿ Vale la pena la espera ?, ¡ claro que sí !, la nueva versión de FastReport corrige muchos bugs que la versión utilizada por Segey, y la implementación del equipo Xailer te permite hacer cosas que antes no era posible hacer, merece la pena la nueva versión.

No hay comentarios.: