JavaScript: extensión COM, objetos y métodos

Los objetos más importantes en esa documentación son:

- Cimp, el controlador de impresor para salidas a pantalla (preliminar), papel o archivo (una impresora PDF, por ejemplo)
- Cbas, el controlador de una base de datos, con un completísimo acceso independiente del motor de BD
- Cdxi, controlador de información para dibujo vectorial, cartografía, planos...
- Cgra, controlador de imágenes bitmap y vectoriales

En la guía paso a paso, hay un capítulo dedicado sólo a la creación y modificación de informes, ejemplos de las personalizaciones más comunes, así como multitud de informes de ejemplo impresos para que le sirvan como catálogo de muestra.

IMPORTANTE:

TODAS las explicaciones de la programación Javascript se refieren a las AMPLIACIONES mediante una extensión COM, que el programa hace sobre el lenguaje estándar JavaScript (nuevos objetos, métodos y propiedades).

La sintaxis, funciones, métodos y utilización del propio lenguaje está en un archivo independiente ayuda de Javascript 5.5 (está en formato de ayuda .CHM, comprimido en un ejecutable autodescomprimible .ZIP para poder ejecutarlo en red)


Variables de la ventana imprime

En primer lugar, vamos a ver un conjunto de variables globales definidas en la ventana Informes y procedimientos, que nos ofrecen el contenido de ciertos campos:

Código Raíz, se almacena en la variable conraiz. Cuando recorremos la estructura de la B.D., por defecto se hace completamente desde el concepto raíz (.) hacia abajo. Este campo permite comenzar el recorrido a un nivel inferior, para recorrer sólo una parte de la estructura. También admite máscaras de códigos (opción menos habitual), lo que permite hacer recorridos por estructura filtrando conceptos que no cumplan la máscara.

Periodo, es un campo interpretado que almacena internamente dos fechas: las variables fecini y fecfin. El campo es único porque admite una sintaxis compleja con ayudas para teclear lo menos posible especificando fechas. En primer lugar hay que considerar que admite 4 tipos de separadores:

  • Barra inclinada a la derecha para separar días meses y años en formato DD/MM/AA, al especificar el año con dos dígitos y aceptar (abandonar el campo), la fecha se convierte a año con 4 dígitos -considerando además que es un año a partir del año 2000, claro-. Si se especifica un sólo núm. se considera año, si son dos mes y año, y sólo si son tres, un día preciso. También se crea a partir de la fecha introducida (que siempre es la inicial) la fecha final, es decir, si tecleo un año como '05' se considera fecha inicial el primer día del año y la final el último día
  • Guión (-) para especificar un rango abreviado, por ejemplo de meses, especificando un sólo año, como '5-7/05' cuya fecha inicial es el primer día de mayo y la final el último día de julio
  • Dos puntos (:) para especificar semanas en el año (muy útil manejando calendarios). Detrás de los dos puntos sólo se lee el primer número tomándolo como el año
  • Espacio en blanco ( ) sólo se permite uno para separar dos fechas explícitas de inicio y fin

Se admite una fecha final anterior a la inicial, sólo que en la mayor parte de los informes no saldrá ningún dato porque el resultado de días de diferencia será cero.

Campo Periodo Fecha inicial Fecha Final Interpretación
  0(*) 0  
5 01/01/2005 31/12/2005 año
5-6 01/01/2005 31/12/2006 rango de años
3/4 01/03/2004 31/03/2004 mes
1-12/3/0 01/03/2000 12/03/2000 rango de días
2:3 06/01/2003 12/01/2003 semana
1/2/5 01/02/2005 01/02/2005 día
12/12/04 2/4/02 12/12/2004 02/04/2002 rango concreto (ni días, ni meses, ni semanas...)

(*) No hay fecha de defecto, cada informe utilizará la fecha de defecto que convenga

Recordemos que el formato interno de estas dos variables de tipo fecha, es un número entero en formato AAAAMMDD.

Número primera página, se almacena en la variable pagact y representa el número que llevará impreso (en caso de que se imprima) la primera página del informe, en vez de "1".

Páginas a imprimir (n-n), es un rango que se almacena en las variables pagpri y pagult, que indica las páginas que se van a imprimir, basados ambos en la numeración de pagact, por lo que normalmente, el primer número del rango (pagpri) siempre debería ser mayor o igual que pagact. Por ejemplo:

Nº primera página Páginas a imprimir Resultado, imprime:
  3- de la página 3 a la última, comenzando en 1
  3-6 de la página 3 a la 6 (incluidas), comenzando en 1
  -8 hasta la página 8 (incluida), comenzando en 1
4 1-2 todas las páginas (ignora el rango), comenzando con el nº 4
4 1-4 sólo la pág. 4, con el nº 4
10 15- desde la quinta pág. del informe, comenzando con el nº 10

 

Otra variable relacionada con el número de páginas es pagtotal, que calcula una primera vez el informe entero, para obtener el número de páginas que tiene, y lo almacena en esta variable global. Cuando aparece en un informe (aunque sea dentro de un comentario), el informe se calcula dos veces: una para calcular el número de páginas, y otra para mostrarlas.

Objeto Cimp  (impresión)

Para complementar la información de modificadores explicados en la documentación del objeto COM en la clase Cimp, veamos los siguientes diagramas que explican la posición de cada una de las variables:

Diversas medidas de la página del impresor:

Modificador 'a' de alineación:

Modificadores 'm' y 'e' de márgenes externo e interno de campos: