Ventana propiedades: Capítulos

Inicio  Anterior  Siguiente

Cuando el concepto actualmente seleccionado es de tipo Capítulo, al abrir la ventana de propiedades del conceptos de cualquiera de las formas posibles (mediante la opción Concepto > Propiedades o la de Concepto > Propiedades > Capítulos, o haciendo doble clic con el ratón sobre el icono de Tipo), se muestra esta ventana.

Como todas las ventanas de propiedades de Tipos con varias Clases, en la barra de título se muestra el rótulo <tipo> · <clase>

En este caso, según la Clase, la ventana casi no cambia ni de aspecto, ni de funcionalidad ya que la diferencia es más bien conceptual:

La clasificación jerárquica (capítulos y sub-capítulos de organización) se lleva a cabo con los conceptos de Tipo Capítulo genéricos (sin ninguna Clase asignada). Esto permite que relacionado "bajo" un capítulo -como si fuese un directorio-, agrupemos conceptos de cualquier Tipo, incluidos otros Capítulos.

Propiedades de búsqueda SQL

Los Capítulos con una búsqueda SQL asociada, muestran como "hijos" los conceptos o relaciones que son el resultado de la cláusula SELECT, es decir, siempre se realiza la misma búsqueda, pero dependiendo de los conceptos que tengamos en cada momento en la base, el resultado puede cambiar: los descendientes no son explícitos, sino que vienen definidos por la búsqueda.

IMPORTANTE: observe que una sentencia de búsqueda siempre comienza con la palabra clave SELECT, el icono del Tipo genérico sin Clase pasa de ConmDesinc a tener la apariencia BotcarSQL. Cualquier otra cosa en este campo, no produce ningún efecto.

Además de una sola sentencia SQL, se admite una función con un nombre especial, que permite hacer una búsqueda compleja, con varios funciones, etc. siempre que el resultado de la función sea una lista de identificadores de las tablas CON ó RCC. Más adelante se ve un ejemplo.

La ventana de propiedades muestra las pestañas siguientes:

Pestaña Capítulo:

Clase de capítulo define como en todas las ventanas de propiedades, la Clase del concepto que está mostrando.

Venprop2

Cabecera de lista de hijos: Permite introducir un nombre para la configuración de cabecera de sus descendientes, si queremos que sea distinta de las demás. Si aparece en blanco, será igual a todas las que están en blanco (la de defecto), y de forma análoga, podemos utilizar ese nombre de configuración en cualquier otro capítulo —al cambiar cualquiera de ellas, cambian todos los capítulos que utilizan esa configuración—.

Doble altura en lista de hijos: Permite que las líneas de conceptos descendientes del capítulo (sean hijos reales o el resultado de una búsqueda) se muestren con un icono de tamaño doble que el habitual, el tamaño de la fuente de texto también es el doble y los iconos de tipo, también.

Vista en modo diapositivas: Fuerza que los hijos (sólo los directos del capítulo) se muestren como un panel de diapositivas ordenadas de izquierda a derecha, en vez de una lista de líneas. En la diapositiva se mostrará el primer gráfico asociado, si tiene, y sino, el icono correspondiente. La navegación se puede realizar con los clic izquierdo y derecho del ratón, de la forma habitual. Es similar al modo que podemos manejar en la ventana Opciones, pero sólo para algunos capítulos en concreto.

Actúa sobre el paralelo: Es una marca especial para hacer que se abra la ventana del paralelo y se realice la búsqueda, o bien se ejecute en ella la función de JavaScript, si fuera de esa Clase.

Búsqueda SQL o procedimiento JS

Aparece un campo de texto multilínea que solamente permite introducir una búsqueda en lenguaje SQL con unas limitaciones muy particulares:

1.El resultado de la búsqueda deben ser identificadores de conceptos o relaciones que se mostrarán como descomposición del capítulo; serán hijos "virtuales" del capítulo a diferencia de cuando el campo Clase está en blanco (se trata de un concepto Capítulo genérico) y la lista de hijos son unas relaciones explícitas.

2.Las sentencias SELECT siempre deben devolver una lista de identificadores (procedentes de conceptos o de relaciones), por lo que detrás de "SELECT" siempre irá el nombre "ide" o un campo de una tabla, que contenga identificadores.

3.Detrás del "FROM" siempre irá el nombre "con" (la tabla de conceptos), "rcc" (relaciones) o cualquier tabla de propiedades de la que pueda seleccionarse un campo con identificadores.

4.Además se admiten unas macros particulares del programa, no de SQL, que amplían la potencia de la propia SELECT:

<<rótulo>> se sustituye toda esta cadena por el valor introducido en el diálogo que se muestra con el texto explicativo: rótulo

<ide> = se sustituye por el identificador del concepto actual seleccionado en la ventana principal

[[macro]] se sustituye cualquiera de las siguientes macros por sus valores:

hoy - Fecha actual completa (en Parámetros generales, puede haberse puesto una distinta a la actual del sistema).

hoymes-1 - Mes anterior

hoyano-1 - Año anterior

hoymes1 -  Fecha del primer día de mes de la fecha actual

hoymes2 - Fecha del último día de mes de la fecha actual

hoyano1 - Fecha del primer día del año de la fecha actual  

hoyano2 - Fecha del último día del año de la fecha actual  

Esto añade potencia para modificar mediante parámetros las búsquedas (así el comando de búsqueda no es fijo con un nombre de tabla o de campo, sino que el programa pide al usuario una máscara, nombre de tabla, texto, etc.)

5.También se puede definir una función con el nombre fijo sqljs() que devuelva una lista de identificadores de la tabla CON ó RCC. Esto permite definir funciones complejas y utilizar varias incluso. Así las búsquedas se comportan como un capítulo de procedimiento JavaScript, con la ventaja de que cuando vemos su descomposición, se muestra el nombre del capítulo como padre, y podemos navegar con los botones Siguiente y Anterior entre búsquedas.

EJEMPLO 1:

La función más sencilla:

function sqljs()

{

   var bas=Cbas;

   return bas.buscaN("select ide from con");

}

es equivalente a la línea:

select ide from con

EJEMPLO 2:

La sentencia:

select ide from con where tip=3 and

(select count(com) from rcc where rcc.des=con.ide)=1

order by <<Campo de ordenación>>

muestra un diálogo con el rótulo:

Parámetro

Campo de ordenación

y busca los descompuestos de la tabla de conceptos, que sea de tipo Referencia externa y que en el campo padres de la tabla de relaciones solamente tenga uno. La ordenación de la lista resultante la realiza por el campo que se introduzca en el diálogo.

EJEMPLO 3:

Otra SELECT permitida sería:

select rcc.ide from rcc

 

Botones:

botejec Permite ejecutar la búsqueda desde la ventana, sin tener que ir al concepto en ventana principal, y de esta forma ver más rápidamente el resultado, e ir probando.

botdesh2 Permite recuperar el contenido que tenía la ventana cuando la abrimos, como casi siempre en todas las ventanas del programa.

Botasoctip Permite relacionar la búsqueda actual con uno de los tipos y clases básicos de conceptos. De esta forma, en el menú contextual de la columna Tipo o en el submenú Concepto > Concepto actual, se mostrará como última opción esta búsqueda, pero sólo en los conceptos de ese Tipo o Clase. El icono del Tipo o Clase seleccionado, se muestra a la derecha del botón y así siempre sabemos a cuál pertenece.

Las pestañas Descripción y Concepto ya se explicaron en el capítulo Ventana de propiedades, características comunes.

Pestaña Cabeceras particulares:

Esta pestaña tiene un uso igual a la siguiente: Cabeceras comunes, sólo que el ámbito de cabeceras definido aquí tiene como ámbito sólo el archivo de B.D. actual. Este uso es menos común, y por eso se detalla el uso en la siguiente pestaña.

Pestaña Cabeceras comunes:

El ámbito de estos formatos de cabeceras y campos, es el programa. Las definiciones que aquí se dan, se graban en un archivo externo y se pueden utilizar en todas las B.D.

Se compone de una lista multilínea que muestra todas las configuraciones de cabecera de listas que hay definidas para el archivo de base de datos actual. La pestaña se muestra en color azul por esa razón: los datos de esta pestaña NO son contextuales al concepto Tipo Capítulo seleccionado, sino comunes a todo el archivo. Los datos de esta pestaña se guardan el campo bas.cab.carcab de la B.D. (tabla de cabecera).

IMPORTANTE: Esta configuración de campos, no es la que obligatoriamente se va a mostrar en la ventana principal, sino que define los datos QUE SE PUEDEN mostrar y elegir en el menú contextual de cabecera de listas.

En el campo Campos definibles (uno por línea), podemos definir cada campo, con la sintaxis que se muestra en el rótulo:

Venpropcap

La notación de este formato es la siguiente: lo que va entre corchetes '[ ]' significa que es opcional y puede no ponerse, las llaves '{ }' indican opcional y además que se puede repetir varias veces de la misma forma, y los demás caracteres son literales, es decir, que son caracteres para teclear '· : @ |'. Los dos términos en negrita son los únicos obligatorios SIEMPRE en cada definición de campos.

El orden de las líneas de campos se tiene en cuenta, y es el que permite personalizar el orden de las columnas de izquierda a derecha en la ventana principal.

Cada campo puede tener definido un código cabecera (por el que se la identifica y que se asigna en la pestaña Capítulo), si no lleva nombre de cabecera, se considera que es para todos los Tipos y situaciones de conceptos.

El código cabecera se usa para definir en qué estado — como padre, como hijo, etc.— va a aparecer el campo. Es decir, si queremos que se asocien las cabeceras AUTOMÁTICAMENTE SEGÚN EL TIPO DE CONCEPTOS, la primera parte del código debe coincidir con las 3 ó 6 letras del nombre de la tabla, y estar seguido de uno de los indicadores: 1-concepto como padre, 2-concepto como hijo.

Cada campo debería tener un rótulo que será el texto que aparece en el botón de cabecera. Obligatoriamente, una tabla a la que se refiere, y un campo que es el que queremos mostrar.

El signo menos (-) delante de la tabla, indica que no mostrará campo de edición.

Se incluye el carácter arroba (@) para especificar campos virtuales (no existentes en campos de la B.D., pero accesibles como si lo estuvieran).

El código que va detrás de la tabla separado con una barra (|), sirve para identificar uno de los valores de tablas que se componen de rótulos (relaciones de tablas N a N).

Ejemplo:

1

2

3

4

5

6

7

8

9

10

11

12

13

// General

Pendiente:con.pen

Cod_Res:con._codres

Estado:doc.est.res

 

// Capítulos

car1·Mantenimiento:tex|man.tex

car1·Cantidad:rcc.can

car2·Proveedor:doc._ent

 

// Otros

var1·Antigüedad:con.fecant

doc1·Contrato:doc.cnt

 

LIN 1: Se admiten líneas que comiencen con doble barra inclinada (//) como comentarios que no se tienen en cuenta al interpretar los campos

LIN 3: En el campo 'Cod_Res' mostramos un campo virtual -contiene el contenido de otros dos campos para mayor facilidad de acceso: código (cod) y resumen (res)-.

LIN 4: Accedemos al campo 'Estado' de documentos, que es una referencia a un rótulo (tabla ROT), y mostramos la descripción de ese rótulo concatenando los campos directamente.

LIN 8: 'Cantidad' muestra (si lo abrimos en la ventana principal), la cantidad que ya existe como campo, pero nos sirve para ver que podemos mostrar un campo predefinido en otra posición que la que ya tiene. Se muestra donde haya un capítulo como padre (car1·).

LIN 9: Muestra un campo de documentos, cuando aparezcan capítulos como hijos (car2). Si en un nivel de la estructura aparecen capítulos a la vez como padre y como hijos, sólo aparecen los campos definidos para hijos.

LIN 12: En las listas de Elementos (o Tipo Varios), podemos mostrar en el campo 'Antigüedad' una fecha SÓLO SI tenemos definido en la ventana Valores, un valor 'fecant', ya que este campo no existe en la tabla CON (concepto). Lo mismo sucede con el valor 'pendiente' de la línea LIN 2.

LIN 13: 'Contrato' muestra un campo de documentos, sólo donde tengamos documentos como padre (lo que no es habitual).

Propiedades de programa JavaScript

Muestran en la ventana los mismos campos y pestañas que la Clase "Búsqueda SQL", pero ejecuta un programa JavaScript que puede realizar cualquier operación con las ventanas de la aplicación o los datos de la base, en vez de realizar una búsqueda.

La única diferencia en interface, es que en la primera pestaña aparece en el campo multilínea el rótulo Búsqueda SQL o procedimiento JS, indicando que no se trata de una sentencia SELECT de SQL, sino cualquier programación en lenguaje estándar JavaScript (hay una referencia completa en la ayuda anexa, y una referencia sencilla en el tema Lenguaje JavaScript, además con la potencia de las extensiones COM añadidas por el programa.

IMPORTANTE: Observe que un capítulo de Clase programa JavaScript, determina que el icono del Tipo genérico sin Clase pase de ConmDesinc a tener la apariencia BotcarSQL. Cualquier otra cosa en este campo, que no se pueda interpretar sin errores de programa JavaScript, no tiene ningún efecto.