Controles habituales Conceptos básicos Extensiones COM JavaScript
Se accede a esta ventana de Informe o procedimiento, mediante la opción Concepto > Propiedades > Propiedades Informes y procedimientos, o haciendo doble clic con el ratón sobre el icono de Tipo.
Sirve para almacenar un programa JavaScript que se va a ejecutar utilizando el intérprete de lenguaje JavaScript estándar, añadido a las extensiones COM de la aplicación que definen objetos y funciones para potenciar Javascript. Con ellos se pueden implementar informes que utilicen la información de una o varias BD (o ninguna), y que tengan salida a preliminar en pantalla, papel, y/o archivos TXT, RTF o PDF, y también permiten ejecutar procedimientos u operaciones contra BD, archivos externos, etc.
Desde la versión 7.3.9 También se permite realizar formularios de búsqueda parametrizadas: es decir, que los parámetros seleccionen parámetros para ofrecer una búsqueda filtrada de conceptos.
Equivale a los paneles de las pestaña Selección de informes y Parámetros del informe del diálogo ventana Parámetros accesible desde los botones Imprime que hay al pie de las ventanas de la aplicación. Para mostrar los informes contextuales a la información de la ventana.
Permite modificar el valor de variables definidas dentro de informe Javascript con una sintaxis especial. El interface de edición depende del tipo de parámetro y es mucho más rico y práctico en Ingrid web. En Windows sólo los Booleanos y Selecciones de una lista se pueden cambiar haciendo clic con el ratón sobre ellos; el resto no tiene ayudas y se editan en el campo al pie.
Contiene el texto (en formato rico o RTF), del programa en lenguaje XJS -JavaScript extendido por la aplicación-, que se va a ejecutar.
IMPORTANTE: La sintaxis de los programas de informes se recoge en el archivo anexo de Lenguaje JavaScript y en las extensiones COM que la aplicación hace de ese lenguaje. En la guía de usuario hay un capítulo de documentación sobre la programación de informes.
La referencia directa a las últimas funciones:
Referencia versión 6.x
Referencia versión 7.x
IMPORTANTE: siempre que la BD está en modo edición y se modifica el campo de texto que contiene el programa. Esto no ocurre cuando, se modifica un parámetro que normalmente queda grabado en el código fuente del programa xjs, porque se puede utilizar en memoria.
Como herramienta dentro del código, tenemos algunos de los botones al pie, que permiten buscar otros programas cuyo código se ejecuta mediante la función incluir().
En el panel inferior se muestran una serie de pestañas con el código alternativo de informes con los que queramos trabajar, tanto de la base actual como de la base comun.ing
Botones al pie DE ESTA PESTAÑA:
Agregar actual, pone en una subpestaña en el panel que hay entre el panel de código y esta fila de botones, con el código del concepto actual, es decir, muestra una vista duplicada, de forma que podemos seleccionar el código de otro informe o procedimiento y tener a la vista a la vez (incluso editar) el que teníamos.
El código que se ejecuta para Preliminar o Imprimir es siempre es el único del panel superior, no los de las subpestañas. Tampoco hay forma de pasar el código de una subpestaña al panel superior como código principal.
Cuando aparece al menos una subpestaña de código auxiliar, aparece como primera otra pestaña con el nombre 'Debug' que muestra información de depuración si utilizamos la función correspondiente.
Agregar seleccionado, requiere tener el cursor (en el código principal) encima de un código de informe o procedimiento dentro de una función incluir() o bas.incluir(). De esta forma podemos poner como código auxiliar cualquier código incluido en el que se ejecuta.
Buscar siguiente, busca hacia abajo por todo el código principal, el término completo sobre el que está el cursor; por ejemplo, situado sobre la palabra 'busca' de la línea var ide= bas.con.busca(101,1,linea); no encontrará el método 'buscaN'.
Buscar función, requiere tener el cursor sobre el nombre de una función definida en código javascript, y después de buscar por todas las librerías que incluye el código principal, abre en subpestaña auxiliar el código de la librería, localizando dónde está la definición de la función.
Informes con término, toma la palabra bajo el cursor y busca por todos los conceptos de tipo informe de la base común y por todos los informes particulares de la base actual y muestra en el bloc de notas una lista con todas las líneas (y en qué concepto se encuentra el código) donde se ha encontrado la palabra. Muy útil para localizar y limpiar términos obsoletos por todo el código, por ejemplo.
Informes con incluir, muestra en el bloc de notas una lista con todos los informes que incluyen el código principal (panel superior).
Intercambiar, pone el código de la pestaña seleccionada en el panel inferior en el superior y viceversa, lo que permite ejecutar el script del panel inferior.
Referencias XJS.htm, abre el archivo html con la documentación de los objetos COM implementados en Ingrid.
Cierra pestaña, cierra la pestaña seleccionada actualmente en el panel inferior de código auxiliar.
Sintaxis especial:
Los parámetros se definen con declaraciones estándar de variables
mediante el comando JavaScript VAR
, con la notación especial
de que el valor declarado va
seguido de una especie de "doble comentario" (cuatro barras inclinadas //// en
vez de dos // que es el comentario en lenguaje JavaScript),
y la línea está terminada con un valor de defecto para la variable entre dobles
corchetes, como: [[<valor>]]. Las partes de cada línea, serían:
A. Se define el valor de la variable de una forma normal, mediante una igualdad. Puede llevar delante condiciones o más código Javascript.
B. A continuación se ponen las cuatro barras de comentario "////", que pueden ir seguidas de la letra con el tipo de parámetro. El tipo, sobre todo en web, facilita la introducción de datos, e incluso restringe los valores que se pueden seleccionar o teclear.
Los tipos están en continua evolución, y la documentación está en el informe Prueba de Parámetros de la base de demostración de pruebasClienteWeb. Los más habituales son: (Mes), (F)echa, (H)ora, (B)ooleano, (E)ntero, (S)elección, (T)exto, (>tab)Referencia
C. Detrás tenemos un rótulo que será el nombre descriptivo mostrado para el parámetro. Esto quiere decir, que aunque nuestra variable se llame (como en el ejemplo de arriba) 'connumero' en la ventana aparece 'Número de fotos por línea'
D. Entre dobles corchetes [[ ]] va un valor de la variable que sea el valor por defecto. Pulsando el botón Defectos de la ventana, todas las variables ponen este valor.
Un ejemplo de declaración de parámetros sería:
var connumero= //// Número de fotos por línea [[6]]
var conclase="Ambas"; ////S Clase de órdenes [Ambas, Preventivas,
Correctivas] [["Ambas"]]
var conbaja=0 ////B Imprimir diapositivas (baja
resolución) [[1]]
Ejemplo:
Como estructura general del programa más sencillo para imprimir un informe, diremos que hay que crear un objeto impresor, y sobre él, lo habitual es utilizar definición de variables globales, tablas, impresión de líneas (dentro de las tablas), cabeceras y pies de página (iguales en todas ellas), respectivamente con:
imp= Cimp;
imp.global("m1")
imp.tabla("10 10")
imp("hola"); imp("adios");
imp.linea()
paginicia() { imp("cabecera"); imp.linea; }
pagtermina() { imp("pie"); imp.linea; }
Como breve introducción: La primera línea (1) define un objeto con todas las funciones para imprimir, la función global (2) de ese objeto, asigna con un modificador, que el margen de cada "casilla" de impresión tendrá un margen de 1mm desde el texto. (3) Con la definición de tabla decimos que habrá dos columnas de 10mm cada una, y en cada función imp (4) ponemos el dato a imprimir, terminado con un final de línea. La definición opcional de dos funciones en (5) y (6) permiten imprimir la misma información en todas las hojas como cabecera y pie de página.
NOTA: como en otros controles de texto rico, en el menú contextual del campo de edición se tienen funciones para buscar, reemplazar, imprimir...
En la primera sección, el conmutador Actúa sobre el archivo paralelo, permite, al igual que en la ventanas de propiedades de concepto de Tipo Carpeta, lanzar la ejecución sobre la BD abierta en el archivo paralelo, en vez de sobre la que contiene el propio informe.
ATENCIÓN a que se pone como objeto Cbas actual al base del paralelo, lo que significa, por ejemplo, que si el informe incluye otro, pero de la base en la que está (no en el comun) con Cbas.incluir(<informe>), ese informe se buscará en el paralelo.
El campo Tipo y Clase asociada, permite especificar una referencia a un nombre de tabla, para que el informe se muestre en el menú contextual de ventana principal, de forma que se pueda lanzar desde cualquier concepto de esa clase.
La última sección tiene las tres subpestañas con los campos comunes a todas las ventanas de propiedades y que caracterizan al concepto, excepto la imagen asociada, que en esta ventana de propiedades se encuentra en la pestaña Configuraciones y parámetros
Barra de botones al pie de la ventana:
Aunque se trata de una ventana de propiedades de un tipo de concepto, tiene algunas diferencias con todas las demás: Los botones principales son los mismos que en la ventana Informes y procedimientos, excepto que el botón de Exporta procedimiento solamente exporta el código Javascript del concepto actual (panel superior). Como el nombre propuesto para exportar un informe a formato de texto plano con extensión . XJS es <codigo> <resumen>, si nombre de archivo contiene algún carácter no válido en el sistema de archivos Windows, se elimina del nombre propuesto.
Además, se tienen los botones Siguiente y Anterior reducidos, a la derecha del todo.
El estado de qué pestañas se encuentran como código auxiliar y su orden, se guardan en la propia BD, de forma que SI LA BASE ESTÁ EN EDICIÓN, se mantienen la próxima vez que se use la base (a menos que algún informe haya cambiado de nombre, por ejemplo).
En el extremo izquierdo, cuando hay una línea seleccionada se muestra el número de línea, de forma que depurando código se pueda encontrar fácilmente un error, cuando el mensaje da el número de línea donde se encuentra. Además, generalmente tras un error, se selecciona la línea posicionándose en ella.