• No se han encontrado resultados

Capitulo VIII. Procesos y funciones

N/A
N/A
Protected

Academic year: 2021

Share "Capitulo VIII. Procesos y funciones"

Copied!
59
0
0

Texto completo

(1)

Capitulo VIII

Procesos y funciones

Para la confección de este capítulo se ha utilizado la versión 7.2.1.8377 de vDevelop y teniendo esto en cuenta, es posible (casi seguro), que hay diferencias entre este asistente y el que pueda estar utilizando actualmente, ya que Velneo hace públicas las nuevas versiones cada 4 meses.

¿Que son y para que sirven los procesos?

Un proceso es una lista de sentencias o instrucciones que se ejecutan en orden secuencial y que nos permiten realizar tareas completas con la base de datos, tareas que no son posible realizarlas desde la propia Caja de datos, en la misma estructura de tablas.

Como todos los objetos en V7, los procesos tienen una Entrada y una Salida. La Entrada puede ser de tipo Ficha, Lista o Sin origen y la Salida dependerá del resultado del proceso.

En esta ocasión creo que es más útil que veas el V.T. Antes de comenzar a leer todas las sentencias disponibles para los procesos y utilices la información que se detalla a continuación para hacerte una idea de las posibilidades que tienen

V.T. Los procesos

V.T. Las funciones de usuario

(2)

8 .1. Procesos y funciones

Antes de comenzar a explicar las diferentes sentencias que vamos a poder utilizar en los procesos y funciones, creo que se hace necesario escribir unas lineas indicando el modo de operar con el editor de procesos que nos muestra la siguiente apariencia:

En la barra superior del editor, tenemos las opciones necesarias para agregar, insertar (en Azul) o eliminar lineas (en Rojo) en los procesos (en la parte izquierda), para comentar (en Verde) y a la derecha los botones para expandir y contraer las ramas/bifurcaciones del proceso que se esta editando

Los iconos de la barra superior en edición de procesos, se enumeran como sigue:

La linea azul inferior, permite añadir lineas al final del proceso

La linea azul media, permite insertar lineas en la posición actual

La linea roja media, se utiliza para eliminar lineas del proceso (voy a aclarar que si borramos una linea de un proceso también se eliminan todas las lineas que cuelgan de la linea eliminada)

La linea verde media, permite comentar las lineas de proceso. Las lineas comentadas son omitidas en ejecución.

Expandir todo el árbol,

Contraer todo el árbol,

Expandir rama,

Contraer rama,

Seleccionar todo, marca todas las lineas para poder realizar operaciones como

Cortar / Copiar

(3)

Al momento de escribir estas lineas debo indicar que hecho en falta únicamente entre estas opciones, las correspondientes a Retroceder (Deshacer) y Avanzar (Rehacer).

En la parte inferior, tenemos la instrucción de la linea que estamos editando en cada momento y que podemos modificar escribiendo sobre el Edit de la Instrucción. Ademas, sobre el edit se nos muestra en todo momento cual es el origen de la linea editada

Si pulsamos sobre la flecha azul del panel inferior, situada junto al Edit de la sentencia, podemos desplegar un cuadro con la lista de sentencias que podemos utilizar en los procesos.

Y podemos seleccionar la sentencia desde el propio cuadro y recuperarla pulsando el botón ACEPTAR.

Ahora que ya conocemos el editor de procesos, vamos a ver aquí un resumen con todas las

instrucciones propias de procesos:

(4)

Aunque se han descrito en este apartado, todas las instrucciones correspondientes a los procesos en Velneo, no he pretendido en ningún momento convertir este libro en un manual de referencia. Para conocer mas detalles sobre las siguientes instrucciones, debe dirigirse al manual oficial de la aplicación. En este libro nos vamos ha centrar mas en explicar algunos ejemplos de forma detallada, viendo el funcionamiento de cada instrucción dentro de un proceso real.

Antes de comenzar a explicar las instrucciones de procesos, debo aclarar también, que la forma de programar los procesos es exactamente la misma, ya se trate de Procesos en las cajas de datos o de aplicaciones, de Eventos de tabla o triggers, o de Eventos en los formularios, ya que todos se programan de la misma forma.

En el margen superior derecho de cada sentencia, podemos observar cual es el origen de la sentencia y cual es el destino.

Origen: Cualquiera / Ficha / Lista – Destino: Ninguno / Ficha / Lista Esto es importante por varias razones:

Si el origen no es el apropiado, las sentencias no estarán activas en el editor de procesos

Dependiendo del origen y del destino de un proceso, podremos utilizarlo a la hora de

lanzar acciones o encadenar objetos dentro de una misma acción.

(5)

API de Velneo

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Ninguno APIVEL: Get nombre de campo por identificador

Devuelve la descripción del campo, pasándole como parámetro en identificador (#CODIGO) del mismo.

APIVEL Campo nombre por identificador -> , CODIGO, retorno La variable local ‘retorno’ devolverá: Código.

Origen: Cualquiera – Destino: Ninguno APIVEL: Get nombre de campo por número

Devuelve la descripción del campo, pasándole el número de posición que ocupa en la tabla. Los campos se numeran siempre a partir de 0.

Origen: Ficha – Destino: Ninguno APIVEL: Get campo por número

Obtiene el contenido de un campo identificado por el numero de posición que ocupa en la tabla.

Origen: Cualquiera – Destino: Ninguno APIVEL: Get número de campo por identificador

Devuelve el numero del campo que le pasamos como identificador.

APIVEL: Get número de campos

Devuelve el numero de campos de la tabla que le pasamos como identificador.

(6)

Origen: Ficha – Destino: Ninguno APIVEL: Modificar campo por número

Permite modificar el contenido de un campo por medio de su identificador numérico.

(7)

Arrays

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Ninguno Array: Eliminar todos

Elimina todos los elementos de un array.

Origen: Cualquiera – Destino: Ninguno Array: Eliminar item

Elimina un item del array.

Origen: Cualquiera – Destino: Ninguno Array: Get tamaño

Obtiene el numero de elementos que forman un Array.

Origen: Cualquiera – Destino: Ninguno Array: Insertar item

Inserta un ITEM dentro del array declarado.

Origen: Cualquiera – Destino: Ninguno Array: Ordenar

Permite ordenar alfabéticamente todos los elementos de un array. Todas las sentencias de ordenación de Arrays, se pueden utilizar para ordenar de forma Ascendente o Descendente.

Origen: Cualquiera – Destino: Ninguno Array: Set

Permite asignar un valor a elemento del array.

(8)

Bases de datos externas

Velneo 7.2.1.8377

Origen: Cualquiera – Destino: Ninguno BD: Conectar

Establece una conexión con una base de datos externa.

Origen: Cualquiera – Destino: Ninguno BD: Finalizar recorrer lista sin procesar más filas

Permite interrumpir un bucle generado para la lectura de registros en una base de datos externa.

Origen: Cualquiera – Destino: Ninguno BD: Get dato de columna por nombre

Devuelve el contenido de una columna cuyo nombre le indicamos en el parámetro.

Origen: Cualquiera – Destino: Ninguno BD: Get dato de columna por número

Esta sentencia es similar a la anterior, pero el parámetro indicado para obtener el contenido, es el número de la columna.

Origen: Cualquiera – Destino: Ninguno BD: Get nombre de columna por número

Como su nombre indica, nos devuelve el nombre de la columna que indicamos en el parámetro.

Origen: Cualquiera – Destino: Ninguno BD: Get numero de columnas

Permite conocer el número de columnas obtenidas tras la ejecución de una consulta en la base de datos.

Origen: Cualquiera – Destino: Ninguno BD: Recorrer lista

Esta sentencia permite recorrer todos los registros de una lista, como resultado de la ejecución de una consulta en la base de datos.

(9)

Origen: Cualquiera – Destino: Ninguno BD: Crear manejador

Crea un manejador “handle” para poder usarlo con el resto de las sentencias de bases de datos externas.

Al crear el manejador, debemos indicar cual es el driver utilizado para dicha conexión y actualmente podemos establecer: ODBC, PostgreSQL y SQLite.

Origen: Cualquiera – Destino: Ninguno BD: SQL

Ejecuta una sentencia SQL y si procede, devuelve las filas afectadas por la sentencia

(10)

Básicas

Los iconos te permitirán identificar fácilmente el tipo de sentencia que corresponde a cada linea de un proceso. En esta imagen podemos ver los iconos mas frecuentes en cualquier proceso ya que corresponden a las instrucciones de flujo del proceso.

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Ninguno Libre

Línea vacía, no se procesa.

Origen: Cualquiera – Destino: El mismo del origen For

Bucle o repetición de todas las sentencias anidadas en su interior. Entre los parámetros que debemos indicar en esta sentencia, están un Identificador de variable local, un valor inicia o formula para el valor inicial, una condición para que continúe la siguiente repetición, y un valor a incrementar para cada repetición que se produzca.

Origen: Cualquiera – Destino: Ninguno Rem

Línea de comentario, no se procesa. En cualquiera de los ejemplos anteriores, se muestra el uso de esta sentencia. Permite al programador, realizar anotaciones para recordar o explicar el uso de las sentencias de un proceso a quien pueda necesitarlo posteriormente.

(11)

Origen: Cualquiera – Destino: El mismo del origen If

Sentencia condicional. Todas las instrucciones anidadas en esta sentencia se ejecutan cuando la condición es verdadera Condición=True

Origen: Cualquiera – Destino: El mismo del origen Else

En esta instrucción se ejecutaran todas las sentencias anidadas cuando la condición del IF previo, sea falsa Condición=False

Origen: Cualquiera – Destino: El mismo del origen Else if

Esta sentencia permite crear condiciones múltiples, siempre precedida de IF como condición inicial a verificar.

Origen: Cualquiera – Destino: Ninguno Mensaje

Muestra un mensaje en la pantalla. El mensaje puede ser una simple cadena de texto o el resultado de una expresión del tipo Formula Alfabética.

(12)

Para los mas experimentados, y teniendo en cuenta que B_OK es una variable local de tipo “booleano”, la sentencia anterior correcta sería If( B_OK ), no siendo necesario indicar “= 1” pero, puesto que el resultado es exactamente el mismo, he querido ser un poco mas expresivo para los que se inician en el desarrollo con esta herramienta.

Origen: Cualquiera – Destino: Ninguno Modificar variable global

Modifica el valor de una variable global.

Fijate en el ejemplo, y el uso que hace de la sentencia para modificar los valores de las variables globales que serán utilizados posteriormente en la búsqueda.

Origen: Cualquiera – Destino: Ninguno Pedir dato

Muestra una ventana con un mensaje y espera la entrada de datos por parte del usuario.

Al ser una sentencia que necesita intervención por parte del usuario, es recomendable tener en cuenta que no debe ser utilizada en procesos que sean ejecutados directamente por el servidor.

Origen: Cualquiera – Destino: El mismo del origen Recorrer buffer

Se utiliza esta sentencia para recorrer todos los caracteres de una cadena, uno a uno.

Origen: Cualquiera – Destino: Ninguno Set

Permite definir ó asignar un valor a una variable local.

Mira el ejemplo para ver como asignamos el contenido de los campos

#CLIENTE y #FECHA a las variables locales ID_CLIENTE y FCH-

ALBARAN.

(13)

Velneo 7.2.1.8377

Origen: Cualquiera – Destino: El mismo del origen Pregunta

Muestra una venta con el texto correspondiente a la pregunta y los botones “SI” y

“NO” y espera a una respuesta por parte del usuario.

(14)

Proyectos de datos

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Ninguno Regenerar índices de todas las tablas

Como su nombre indica, reconstruye los índices de todas las tablas.

Origen: Cualquiera – Destino: Ninguno Regenerar índices del contenedor

Realiza la misma operación, pero con los índices del contenedor de objetos.

Origen: Cualquiera – Destino: Ninguno Regenerar índices de la tabla

Regenera los índices de una sola tabla.

(15)

Cestas

Fijate en la imagen y podrás observar como algunas de las sentencias están activas y otras no. Durante la generación de un proceso, solo podrás utilizar aquellas sentencias cuyo origen corresponda con el origen de la sentencia que estés editando en ese momento, evitando así errores en la programación. Ej., si el origen de la linea que estas editando es Ficha, se desactivaran automáticamente todas las sentencias cuyo origen sea Lista.

Velneo 7.0.0.7181

Origen: Ficha – Destino: Ninguno Cesta: Agregar ficha

Esta sentencia es de origen FICHA, y agrega la ficha actual a una cesta

Origen: Lista – Destino: Ninguno Cesta: Agregar lista

Esta sentencia se de origen LISTA, y agrega todos los registros a la cesta.

Origen: Cualquiera – Destino: Ninguno Cesta: Crear cesta local

Crea una cesta local, que solo podrá ser utilizada durante la ejecución del proceso.

Origen: Ficha – Destino: Ninguno Cesta: ¿Está la ficha en la cesta?

Comprueba si la ficha actual esta en la cesta.

Origen: Cualquiera – Destino: Ninguno Cesta: Limpiar

Limpia la cesta, quitando de ésta, todos los registros que tenga en ese momento.

En el ejemplo siguiente, podemos ver como nos aseguramos de que la cesta este vacía, para comenzar un nuevo proceso de facturación.

(16)

Origen: Cualquiera – Destino: Lista Cesta: Procesar

Carga todos los registro de la cesta para poder procesarlos. Independientemente del origen, el destino es una lista con los registro de la cesta.

Origen: Ficha – Destino: Ninguno Cesta: Quitar ficha

Quita la ficha seleccionada de la cesta.

Origen: Lista – Destino: Ninguno Cesta: Quitar lista

Es de origen LISTA, y quita de la cesta todos los registros de la lista actual.

Origen: Lista – Destino: Ninguno Cesta: Cruzar lista

Cruza los registros de la lista actual con los registros existentes en cesta. Y como resultado, la cesta contendrá solo aquellos registros que coinciden en las dos listas.

Velneo 7.2.1.8377

Origen: Lista – Destino: Ninguno Cesta: Enviar mensaje

Con esta sentencia podemos enviar un mensaje a la barra de tareas de una cesta usada como DOCK de un MARCO.

Velneo 7.4.0.8985

Origen: Lista – Destino: Ninguno Cesta: Añadir a la lista en curso

Con ...

Origen: Lista – Destino: Ninguno Cesta: Quitar de la lista en curso

Con ...

Origen: Lista – Destino: Ninguno Cesta: Cruzar la lista en curso

Con ...

(17)

Ejemplo de utilización de una cesta, comprobando y quitando todos los registros que no tienen dirección:

Cesta: Procesar -> MAILING Recorrer lista

If -> fCampoVacio ( #DIRECCION ) Cesta: quitar ficha -> MAILING

(18)

Configuración del sistema

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Ninguno Configuración del sistema: Eliminar entrada

Permite eliminar una entrada del fichero de configuración del sistema

Origen: Cualquiera – Destino: Ninguno Configuración del sistema: Leer número entero

Permite leer un valor numérico de una entrada del fichero de configuración del sistema

Origen: Cualquiera – Destino: Ninguno Configuración del sistema: Leer cadena de texto

Lee una cadena de una entrada del fichero de configuración del sistema

Origen: Cualquiera – Destino: Ninguno Configuración del sistema: Escribir número entero

Permite escribir un valor numérico en una entrada del fichero de configuración del sistema

Origen: Cualquiera – Destino: Ninguno Configuración del sistema: Escribir cadena de texto

Nueva ……….

* Este grupo (llamado anteriormente Registro de Windows) ha cambiado su nombre por tratarse de una herramienta multiplataforma.

(19)

Ejecución

Velneo 7.0.0.7181

Cerrar instancia

Cierra una instancia de una aplicación en ejecución.

Cerrar ventana

Cierra la ventana activa en ese momento (Formulario, Rejilla, Menú, etc... )

(20)

Ficha y campos

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Ficha Alta de ficha

Crea una ficha en una tabla. Esta sentencia sustituye a la anterior ALTA DIRECTA.

Esta sentencia se utiliza normalmente en combinación con la sentencia Preparar ficha. La sentencia Alta de ficha, si que genera transacción. Además, en este momento ya podemos recuperar cualquier dato del registro creado, como el

%CODIGO, para poder utilizarlo en cualquier otra tabla como enlace.

Al tener separado en esta nueva versión, la preparación de la ficha de la creación de la misma, podemos optimizar mas aun el código, pudiendo cancelar o condicionar el Alta, si fuera necesario.

Origen: Ficha – Destino: Ficha maestra Alta de ficha de maestro con formulario

Esta sentencia, realiza un alta en la tabla declarada como maestra y muestra un formulario de petición de datos. La ejecución del proceso no continua hasta que el usuario cierra el formulario. Debemos tener cuidado de no utilizar estas sentencias cuando los procesos se ejecutan en 3er plano.

Origen: Ficha – Destino: Ninguno Comprobar formula dinámica

Comprueba si la formula dinámica que ha escrito el usuario es correcta ó no.

Origen: Ficha – Destino: Ninguno

¿Ya existe en el índice?

Comprueba si existe la clave actual en el índice de clave única especificado. Y como resultado retorna un valor True (1) ó False (0).

Origen: Ficha – Destino: Ninguno

¿Ya existe en alguno de sus índices de clave única?

Comprueba si la ficha actual existe en alguno de los índices de clave única de la tabla.

Origen: Ficha – Destino: Ninguno Exportar binario

Permite almacenar en disco el contenido de un campo objeto de tipo binario.

(21)

Exportar binario -> FICHERO, d + “\\Archivos\\” + #ID-FICHERO, bOk If -> !‘bOk’

Mensaje -> “No se ha podido exportar el fichero”, 5

Origen: Ficha – Destino: Ninguno Exportar dibujo

Permite guardar en disco un objeto de tipo dibujo y así poder utilizarlo con otras aplicaciones externas.

Origen: Ficha – Destino: Ninguno Exportar texto

Permite exportar cualquier campo de tipo alfabético, objeto texto o el contenido de una formula alfabética y guardarlo en un fichero de texto en disco.

Origen: Ficha – Destino: Ninguno Get campo

Esta instrucción devuelve el contenido de un campo sin evaluar la fórmula que contenga. Es útil por ejemplo para obtener por proceso la fórmula especificada por un usuario en un campo del tipo fórmula dinámica.

Origen: Ficha – Destino: Ninguno

¿Ha cambiado el campo?

Comprueba si el campo indicado de la ficha actual ha sufrido alguna modificación.

Retorna un valor True (1) ó False (0).

Origen: Ficha – Destino: Ninguno

¿Ha cambiado la ficha?

Comprueba si alguno de los campos de la ficha actual, ha sido modificado. Retorna un valor True (1) ó False (0).

Origen: Ficha – Destino: Ninguno Importar binario

Permite almacenar dentro de un objeto binario, cualquier tipo de archivo.

Origen: Ficha – Destino: Ninguno Importar dibujo

Con esta instrucción podemos importar cualquier imagen del disco y almacenarla dentro de un objeto de tipo dibujo.

Origen: Ficha – Destino: Ninguno Importar texto

Permite importar el contenido de un objeto de texto y almacenarlo en un campo alfabético o en un objeto texto.

Origen: Ficha – Destino: Ficha maestra Leer ficha de maestro

Con origen ficha, permite leer la ficha de un maestro enlazado a la tabla actual. El destino sigue siendo de FICHA. La ficha es abierta en modo de solo lectura, por lo que no podremos realizar modificaciones en ella.

(22)

Origen: Ficha – Destino: Ninguno Limpiar campo objeto

Elimina el contenido de un campo objeto de la ficha actual, lo deja vacío.

Origen: Ficha – Destino: Ninguno Modificar campo

Modifica el contenido de un campo.

Si queremos vaciar el contenido de un campo alfabético le asignaremos el valor “”, y para vaciar un campo numérico podemos asignarle “” ó 0.

Aquí tenemos un ejemplo del uso de la sentencia MODIFICAR CAMPO para signar los valores y crear un nuevo registro, el primer parámetro de esta sentencia es el Campo a modificar, y el segundo, la expresión que permite calcular el valor a introducir, en este caso es una variable local.

Origen: Ficha – Destino: Ficha maestra Modificar ficha de maestro

Es igual que LEER FICHA DE MAESTRO, pero la ficha es abierta en modo de Lectura/Escritura, y por tanto podemos modificar campos en su interior.

Origen: Ficha – Destino: Ninguno Pedir formulario

Muestra un formulario de entrada de datos para una ficha de la tabla actual.

Origen: Ficha – Destino: Ninguno Crear copia de ficha en memoria

Esta sentencia permite crear una copia de la ficha actual en memoria, permitiéndonos así modificar sus datos sin que esto afecte a la ficha original.

Ademas, si al finalizar necesitamos guardar la nueva ficha generada, podemos hacerlo con la sentencia ALTA DE FICHA()

Origen: Cualquiera – Destino: Ficha Crear nueva ficha en memoria

Permite definir y trabajar con los campos de una ficha antes de proceder al Alta de ficha o ejecutar la sentencia Tubo de ficha. Esta sentencia equivale al PRE del ALTA DIRECTA de las versiones 6.x y anteriores, aunque, a diferencia de ella, Crear nueva ficha en memoria no genera transacción. Ademas, entre otras cosas, también podemos comprobar si existe la ficha por alguno de sus indices de clave única, antes de proceder a generar el registro en la base de datos.

(23)

Mira en este ejemplo como Crear nueva ficha en memoria( ) es utilizada para asignar los valores a los campos, pero la transacción no se realiza hasta que le procesa la sentencia Alta de ficha( )

Origen: Cualquiera – Destino: Ficha Procesar ficha en memoria

Permite procesar una ficha de manera local al proceso que la utiliza, esto quiere decir que la ficha será eliminada al finalizar el proceso. Esta ficha debe haber sido creada previamente mediante las sentencias CREAR NUEVA FICHA EN MEMORIA o CREAR COPIA D EFICHA EN MEMORIA.

Para poder guardar el contenido de esta ficha, debemos utilizar el comando ALTA DE FICHA()

Origen: Ficha – Destino: Ninguno Get atributos de dibujo

Con esta sentencia, podemos conocer los atributos de una imagen guardada en un campo de tipo Objeto Dibujo. Para ello necesitamos pasarle el indicador del campo #DIBUJO del que queremos saber los atributos y las variables donde nos retornara el ancho (X) y el alto (Y) en pixels de la imagen y también el tamaño en bytes de la imagen.

Origen: Ficha – Destino: Ninguno Editor de dibujos

Abre el editor de dibujos de Velneo para editar la imagen contenida en el campo #DIBUJO.

Al finalizar la edición del dibujo, debemos Aceptar la venta de edición para

que los cambios sean guardados en la ficha. Tambien debemos tener en

cuenta que para que los cambios sean guardados, la ficha debe estar abierta

en modo lectura/escritura, ya sea con la sentencia MODIFICAR FICHA

SELECCIONADA o también mediante RECORRER LISTA

LECTURA/ESCRITURA.

(24)

Ficheros y directorios

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Ninguno Cambiar directorio por defecto

Permite establecer la senda o carpeta por defecto que se utilizara para la instancia de la aplicación en ejecución.

Origen: Cualquiera – Destino: Ninguno Copiar fichero

Realiza una copia de un fichero en disco.

Origen: Cualquiera – Destino: Ninguno Crear directorio

Crea una carpeta en el disco, según la ruta (path) indicada o en la ruta actual por defecto.

Origen: Cualquiera – Destino: Ninguno Eliminar directorio

Elimina una carpeta del disco según la senda que indicamos como parámetro. Para poder eliminar la carpeta, debe estar completamente vacía.

Origen: Cualquiera – Destino: Ninguno Renombrar directorio

Permite cambiar el nombre a una carpeta del disco.

Origen: Cualquiera – Destino: Ninguno Eliminar fichero de disco

Como su nombre indica, elimina un fichero del disco.

Origen: Cualquiera – Destino: Ninguno Renombrar o mover fichero

Con esta sentencia, podemos cambiar el nombre a un fichero del disco y/o moverlo a otra carpeta diferencie si es necesario. Si la senda de origen y la senda de destino son iguales, únicamente cambiamos el nombre al fichero. Pero, si las sendas de origen y destino son diferentes, el fichero sera movido a otra carpeta.

Origen: Cualquiera – Destino: Ninguno

¿Existe fichero?

Comprueba si existe el fichero que le pasamos como parámetro. Retorna un valor True (1) ó False (0).

Origen: Cualquiera – Destino: El mismo del origen Fichero: Abrir

Abre un fichero de texto para grabar o leer datos.

(25)

En este ejemplo, podemos ver el uso de varias de las sentencias de este apartado, y como construir un proceso para leer un fichero de texto para incorporar los registros a una tabla.

En el proceso podemos observar como, tras localizar el archivo, lo abrimos Fichero:

Abrir( ) en modo Solo-Lectura, y mediante un bucle y la sentencia Fichero: Leer linea( ) para procesar cada una de las lineas del fichero, creamos los registros en la tabla de destino.

Origen: Cualquiera – Destino: El mismo del origen Fichero: Grabar línea

Graba una línea de texto dentro de un fichero abierto en modo lectura/escritura.

Origen: Cualquiera – Destino: El mismo del origen Fichero: Leer línea

Lee una línea de un fichero de texto.

Origen: Cualquiera – Destino: Ninguno Get atributos del fichero

Nos muestra los atributos básicos de un fichero.

Origen: Cualquiera – Destino: Ninguno Get permisos del fichero

Nueva ……….

Origen: Cualquiera – Destino: Ninguno Set permisos del fichero

Nueva ……….

(26)

Origen: Cualquiera – Destino: Ninguno Get accesibilidad del fichero

Nueva ……….

Origen: Cualquiera – Destino: Ninguno Get propiedades del fichero

Nueva ……….

Origen: Cualquiera – Destino: Ninguno Recorrer directorio

Recorre todos los elementos de una carpeta, y genera un subproceso para cada elemento retornando la senda completa de cada elemento.

Origen: Cualquiera – Destino: Ninguno Ventana de selección de fichero

Presenta en pantalla una ventana de dialogo para que el usuario pueda elegir un fichero, y devuelve la senda completa del fichero seleccionado.

Origen: Cualquiera – Destino: Ninguno Ventana de selección de directorio

Presenta en pantalla una ventana de dialogo con la senda por defecto, para que el usuario pueda elegir una nueva carpeta.

(27)

Internet

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Ninguno Get fichero de URL

Descarga un fichero de una URL y lo guarda en disco. Para ello necesitamos indicar la URL de origen del fichero a descargar y la Senda de destino para guardar la copia del fichero.

Internet: Conectar

Nueva ……….

Internet: Desconectar

Nueva ……….

Internet: Get estado conexión

Nueva ……….

(28)

Listas

Velneo 7.0.0.7181

Origen: Lista – Destino: Ninguno Cortar lista

Como su nombre indica, corta una lista de X registros, dando como resultado una lista de igual o menor tamaño que la lista original. El primer registro de la lista resultante sera el indicado por 'nInicial' y 'nRegs' nos indica el nº máximo de registros que tendrá la lista resultante.

Cargar lista -> ARTICULOS, CODIGO, , , , , Cortar lista, nPosicionIni, nRegs Añadir lista a la salida

Entre las posibilidades que nos permite esta sentencia, puede estar la opción de poder paginar listas de registros.

Origen: Lista – Destino: Ninguno Filtrar lista

Permite establecer condiciones para filtrar los registros que cumplen las condiciones establecidas. El resultado es una lista con los registros que cumplen las condiciones.

Cargar lista -> ALBARANES , CLIENTES

Filtrado de lista -> (#EJERCICIO=2009) & ( ! #FACTURADO ) Añadir lista a la salida

Recuerdo que es preferible utilizar las búsquedas, ya que estas utilizan los índices, y los filtros son ejecutados de forma secuencial, y por tanto, mas lentos y consumen más recursos del sistema.

(29)

Origen: Lista – Destino: Ninguno Invertir lista

Invierte el orden de los registros de la lista actual. En una lista que estuviera ordenada alfabéticamente de la A a la Z, el resultado seria una lista ordenada de la Z a la A.

Este ejemplo nos muestra como INVERTIR LISTA se usa para cargar la lista de clientes alfabéticamente (A - Z) y cambiar el orden (de la Z a la A) antes de retornar la lista resultante.

Origen: Lista – Destino: Lista Multipartir lista

Divide una lista en multitud de listas con todos los registros que tienen en común el campo utilizado para partir la lista. Previamente a utilizar ésta instrucción, la lista debe estar ordenada por el campo que vamos a utilizar para partirla.

En el ejemplo podemos ver parte de un proceso que calcula un balance, y para ello ordena la lista de registros previa y hace uso de la sentencia MULTIPARTIR( ) para poder calcular el resultado de cada una de las Cuentas por separado.

Origen: Lista – Destino: Ninguno Ordenar lista

Ordena una lista por los campos indicados. Hay que decir, que la ordenación se produce secuencialmente, por lo que es mas lenta que si utilizamos una búsqueda.

Puedes observar el ejemplo anterior para ver como ésta sentencia ordena los registros de una lista por cualquiera de sus campos para luego poder partir la lista por el campo de ordenación.

(30)

Origen: Lista – Destino: Ninguno Quitar ficha de la lista

Como su nombre indica, quita una ficha de la lista actual, pero no elimina el registro de la base de datos. Como resultado, seguiremos teniendo la misma lista pero con un elemento menos.

Origen: Lista – Destino: Ficha Recorrer lista eliminando fichas

Elimina todas las fichas de la lista actual, y genera las actualizaciones que se producen con otras tablas enlazadas.

En este ejemplo podemos observar como, para eliminar las fichas de una lista de registros, primero debemos eliminar todos sus históricos.

Origen: Lista – Destino: Ficha Recorrer lista eliminando fichas sin desactualizar

Elimina todas las fichas de la lista actual, pero en este caso no genera las actualizaciones correspondientes.

Origen: Lista – Destino: Ficha Recorrer lista lectura/escritura

Con origen de lista, recorre todos los registros de la lista en modo de lectura y escritura. El destino es por tanto de ficha, y en el interior, podemos modificar cualquier campo de la ficha actual.

Origen: Lista – Destino: Ficha Recorrer lista solo lectura

Tiene la misma funcionalidad que la sentencia anterior, pero no están permitidas las modificaciones de campos, solo la lectura de los datos de la ficha actual.

(31)

En este ejemplo, utilizamos la sentencia CARGAR PLURALES( ) para cargar todas las lineas de un albarán, y calcular el importe total del albarán sumando los importes de cada una de sus lineas.

Velneo 7.2.1.8377

Origen: Lista – Destino: Ninguno Imprimir informe

Lanza un informe, con los registros de la lista actual. Como parámetro, podremos indicar a que impresora lógica enviaremos el informe.

Origen: Lista – Destino: Ninguno Añadir ficha a la lista

Permite añadir una ficha a una lista.

(32)

Listas: ficha seleccionada

Velneo 7.0.0.7181

Origen: Lista – Destino: Ficha Eliminar la ficha seleccionada

Elimina una ficha de una lista, previamente debemos seleccionar la ficha que se va a eliminar.

Origen: Lista – Destino: Ficha Eliminar la ficha seleccionada sin desactualizar

Hace exactamente lo mismo que la sentencia anterior, pero no ejecuta las actualizaciones al eliminar la ficha.

Origen: Lista – Destino: Ficha Leer ficha seleccionada

Lee una ficha de una lista, pero debemos seleccionar la ficha previamente. La ficha se abre en modo de solo lectura, por lo que no podemos hacer modificaciones en ella.

Origen: Lista – Destino: Ficha Modificar ficha seleccionada

Es igual a la sentencia anterior pero en este caso, si podemos realizar medicaciones en los campos de la ficha.

Origen: Lista – Destino: Ninguno Modificar dicha seleccionada con formulario

Sentencia igual a la anterior, pero además permite mostrar un formulario para realizar las modificaciones a través de la consola.

Origen: Lista – Destino: Ninguno Seleccionar ficha de la lista

Permite seleccionar un registro de una tabla como si se tratase de un localizador, y para ello solo tenemos que indicar la rejilla que será utilizada para visualizar el contenido de la lista de registros y una variable booleana para el retorno del OK (si se ha seleccionado ficha o no).

A diferencia del LOCALIZADOR, aquí podemos utilizar como origen de la lista a mostrar el resultado de una búsqueda o una lista obtenida por navegación de

(33)

Origen: Lista – Destino: Ninguno Seleccionar ficha por posición

Permite seleccionar una ficha por la posición que ocupa según la ordenación actual.

Puedes ver el uso de esta sentencia en el ejemplo anterior, correspondiente a la sentencia Leer ficha seleccionada.

Aquí tenemos un ejemplo un poco mas elaborado, para ver el uso de las sentencias SELECCIONAR FICHA POR POSICION( ) y LEER FICHA SELECCIONADA. En este caso se trata de un proceso para buscar el precio de un articulo en una tarifa de precios, de este modo nos aseguramos que se utiliza el primero de los registros encontrados (en caso de que exista más de uno).

Además, cada vez debemos un complicando un poco más los ejemplos, pero

solo cuando sea necesario.

(34)

Navegante y búsquedas

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Lista Búsqueda

Ejecuta una búsqueda y el resultado es siempre una lista de registros de la tabla a la que corresponde la búsqueda. El origen de la búsqueda puede ser cualquiera, de lista, de ficha, o incluso sin origen, lo importante es el destino.

En este caso el ejemplo es muy sencillo, pero es así de simple, desde un proceso lanzamos una BUSQUEDA( ), y el resultado lo retornamos para procesarlo mediante otro objeto, aunque también podríamos quitar la sentencia AÑADIR LISTA A LA SALIDA y escribir las sentencias necesarias para procesar la lista resultante.

Origen: Cualquiera – Destino: Lista Cargar lista

Al igual que la anterior, independientemente de cual sea el origen de la sentencia, el destino será siempre una lista con todos los registros de la tabla indicada, ordenados por el índice correspondiente. Podremos utilizar formulas o expresiones para condicionar el resultado de la consulta por el indice indicado, utilizando hasta 4 condiciones y siempre en el mismo orden que los componentes del indice

Con la sentencia CARGAR LISTA( ), y mirando el ejemplo obtenemos el mismo resultado que en el ejemplo de la búsqueda, pero la búsqueda es mucho más eficiente cuando se trata de combinar indices para obtener el resultado deseado.

Origen: Lista – Destino: Lista maestra Cargar maestros

Con origen en una lista de registros, carga los registros de una tabla enlazada como maestra de la tabla actual. Así pues, el resultado es una lista de registros.

(35)

Origen: Ficha / Lista – Destino: Lista Cargar plurales

Con origen de ficha ó lista, carga los registros de uno de los históricos de la tabla actual. El retorno, siempre sera una lista de registros correspondiente a la tabla histórica.

Un ejemplo de cargar plurales es este, desde una Ficha de factura, cargamos las lineas de venta y retornamos el resultado. Este tipo de proceso es usado muy frecuentemente en los formularios para mostrar los registros de una tabla histórica mediante un Control Objeto.

Origen: Cualquiera – Destino: Ficha Localizador

Muestra un localizador para elegir una ficha de forma manual por el usuario.

(36)

Objetos

Velneo 7.3.0.8651

Origen: Cualquiera – Destino: Ninguno Crear manejador de objetos

Esta ...

Origen: Cualquiera – Destino: Ninguno Disparar objeto

Esta ...

Origen: Cualquiera – Destino: Ninguno Get variable local de objeto

Esta ...

Origen: Cualquiera – Destino: Ninguno Set variable local de objeto

Esta ...

Origen: Cualquiera – Destino: Ninguno Añadir ficha al objeto

Esta ...

Origen: Cualquiera – Destino: Ninguno Añadir lista al objeto

Esta ...

(37)

Procesos

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Ninguno Deshacer transacción

Esta sentencia deshace todas las transacciones realizadas por el proceso actual y por todos los subprocesos de este. Por tanto, debemos tener mucho cuidado con esta sentencia.

(Velneo:

Si desde un proceso que transacciona disparamos un subproceso y en éste deshacemos transacción, serán deshechas todas las transacciones realizadas tanto en el proceso principal como en el subproceso. Si desde un proceso que no transacciona disparamos varios subprocesos que transaccionan y en uno de ellos deshacemos transacción, solamente serán deshechas la transacciones de ese subproceso, no las del resto.

)

Origen: Cualquiera – Destino: El mismo del origen / La salida del proceso Ejecutar proceso

Ejecuta un proceso con o sin origen. Si el proceso ejecutado no tiene salida, entonces la salida del proceso sera la misma que el origen de la linea desde donde se ejecuta dicho proceso.

Origen: Cualquiera – Destino: Ninguno Esperar

Genera una pausa por el tiempo expresado en milisegundos. Con esta sentencia, podemos detener la ejecución del proceso, durante el tiempo indicado.

Origen: Cualquiera – Destino: Ninguno Finalizar proceso

Finaliza un proceso, es decir, las sentencias que haya a partir de esta sentencia, no serán ejecutadas.

Origen: Cualquiera – Destino: Ninguno Cambiar porcentaje realizado del proceso

Permite modificar el porcentaje de ejecución del proceso mediante una fórmula. El resultado de la fórmula debe ser >= 0 y <= 100

Origen: Cualquiera – Destino: Ninguno Cambiar titulo de la transacción

Permite modificar el nombre del proceso en ejecución que aparece en el panel de transacciones de vAdmin y en el panel de procesos en 2º plano de vClient.

(38)

Origen: Cualquiera – Destino: Ninguno Forzar transacción

Para que un proceso genere una transacción debe contener algún comando que genere escritura en disco.

Esta sentencia puede ser muy útil para obligar a transaccionar a un proceso, cuando este no realiza escritura en disco, pero contiene sentencias que ejecutan otros procesos que si transaccionan.

De esta forma, evitamos que todas las transacciones generadas por los subprocesos, se reduzcan a una única transacción para el proceso actual.

(39)

Protocolo TCP

Velneo 7.3.0.8651

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Ejecutar funcion cliente

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Enviar buffer

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Enviar fichero

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Enviar linea

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Iniciar servicio

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Recibir fichero

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Recibir linea

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Recibir hasta carácter marca

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: ¿Esta iniciado el servicio?

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Terminar servicio

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Terminar todos los servicios

Esta ...

(40)

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Enviar byte

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Recibir byte

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Enviar entero 16 bits

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Recibir entero 16 bits

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Enviar entero 32 bits

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Recibir entero 32 bits

Esta ...

Velneo 7.4.0.8985

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Enviar entero 64 bits

Esta ...

Origen: Cualquiera – Destino: Ninguno Protocolo TCP: Recibir entero 64 bits

Esta ...

(41)

Retornos

Velneo 7.0.0.7181

Origen: Ficha – Destino: Ninguno Añadir ficha a la salida

Tiene origen de ficha y permite mostrar un formulario con los datos del registro actual.

Origen: Lista – Destino: Ninguno Añadir lista a la salida

Tiene origen de lista, y permite mostrar una rejilla con los registros de la lista.

Origen: Cualquiera – Destino: Ninguno Set dato de retorno del proceso

Esta sentencia permite enviar un valor de retorno desde un proceso al proceso el que ha sido llamado.

Cuando desde el PRODESO_1, utilizamos la sentencia EJECUTAR PROCESO para llamar al PROCESO_2, este último puede retornar un valor al finalizar su ejecución mediante esta sentencia.

Origen: Cualquiera – Destino: Ninguno Set retorno proceso = NO

Cada vez que se ejecuta un proceso, por defecto, retorna el valor True (1) como retorno a su ejecución. Con esta sentencia podemos cambiar el valor, y devolver False (0) indicando que el proceso no se ha finalizado correctamente.

(42)

SDV

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Ninguno SDV: Actualizar fichero en local

Esta sentencia, compara los ficheros de origen y de destino y actualiza el archivo de origen si existe alguna diferencia entre ellos. El valor de retorno de esta sentencia indica si el fichero ha sido importado ó no.

Origen: Cualquiera – Destino: El mismo del origen SDV: Conectar

Esta nueva sentencia en v7, permite establecer una conexión y autentificar el usuario y la clave de acceso del usuario que se conecta. Una vez establecida la conexión, podemos realizar tantas operaciones con el servidor como sean necesarias

Origen: Cualquiera – Destino: Ninguno SDV: Eliminar fichero en el servidor

Esta sentencia elimina un fichero del servidor de disco de Velneo. Es importante que nos aseguremos de pasarle el nombre del fichero a eliminar, ya que si le pasamos el parámetro vacío, se eliminaría la carpeta completa con todos los documentos que contenga.

Origen: Cualquiera – Destino: Ninguno SDV: Subir fichero al servidor (Exportar fichero)

Exporta un fichero a un servidor de disco de Velneo.

Fijaos que en la ruta de acceso al servidor la barra utilizada es “/” y se comienza la cadena sin barras.

Origen: Cualquiera – Destino: Ninguno

SDV: Descargar fichero a local (Importar fichero)

(43)

Permite importar un fichero a un servidor de disco de Velneo.

En el ejemplo anterior, podemos ver como en la primera sentencia de Importar fichero, se utiliza el parámetro

“C:\\Copia\\Fich-1.dat”

y en la segunda sentencia se utiliza el parámetro

“C:/Copia/Fich-2.dat”

, y es porque en los sistemas Windows esta permitido el uso de los dos formatos para indicar una senda de acceso a un fichero. Si utilizamos el 2º formato, V7 realiza la conversión de la cadena al sistema Windows, de forma automática. No obstante, aconsejamos utilizar siempre la 2ª forma, ya que es valida para cualquiera de los sistemas operativos permitidos por V7.

Origen: Cualquiera – Destino: Ninguno SDV: Renombrar o mover fichero en el servidor

Esta instrucción, permite cambiar el nombre a un fichero del servidor de disco de Velneo.

* Las funciones SDV son validas únicamente para la versión cliente/servidor.

(44)

Origen: Cualquiera – Destino: Ninguno SDV: Get atributos del fichero en el servidor

Esta sentencia nos devuelve los atributos del fichero cuya Senda le pasamos como parámetro.

Entre los atributos del fichero retornados esta:

• Fecha de la última modificación del fichero

• Hora de la última modificación del fichero

• Tamaño en bytes del fichero

Indica si la senda es un directorio: true (1) / false(0)

y por ultimo retorna true (1) / false(0) si se ha podido realizar la operación.

(45)

Seguridad

Velneo 7.1.0.7728

Origen: Cualquiera – Destino: Ninguno Reducir nivel de privilegio del usuario en esta ejecución

Esta ...

(46)

Sistema

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Ninguno Ejecutar comando del sistema

Ejecuta un comando o aplicación del sistema operativo que tengamos instalado en el equipo. Debemos tener cuidado con esta sentencia, ya que la nueva versión es multiplataforma.

Origen: Cualquiera – Destino: Ninguno Ejecutar documento

Ejecuta un documento, siempre que este tenga asociado una aplicación para editar el archivo.

Origen: Cualquiera – Destino: Ninguno Emitir sonido

Emite un pitido por el altavoz del sistema.

Origen: Cualquiera – Destino: Ninguno Get estado de la memoria física del sistema

Nueva ……….

Origen: Cualquiera – Destino: Ninguno Lanzar aplicación

Ejecuta una aplicación externa.

Origen: Cualquiera – Destino: Ninguno Reproducir sonido

Reproduce un archivo de sonido con extensión multimedia.

Origen: Cualquiera – Destino: Ninguno Set fecha y hora del sistema

No funciona actualmente ...

(47)

Velneo 7.4.0.8985

Origen: Cualquiera – Destino: Ninguno Salir de la aplicacion

Esta ...

(48)

Tubos

Velneo 7.0.0.7181

Origen: Ficha – Destino: Ficha Tubo de ficha

Tiene origen de ficha y genera un tubo para copiar registros de una tabla a otra, indicando los campos que se copiaran de forma automática y permitiendo indicar el contenido de otros campos, por medio de valores fijos o fórmulas.

Origen: Lista – Destino: Lista Tubo de lista

Ejecuta un tubo de lista. Es decir, genera tantos registros en la tabla de destino como registros existen en la tabla de origen. Solo los campos introducidos como capilares son copiados de la tabla de origen a la de destino. El resto de los campos de destino, tendrán el contenido inicial de los mismos o estarán vacíos.

Origen: Lista – Destino: Lista Tubo de lista inducido

Funciona de la misma manera que el TUBO DE LISTA, pero en esta ocasión le podemos pasar como parámetro un registro almacenado en memoria con GUARDAR FICHA.

(49)

Scripts

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Ninguno Script: Crear interprete

Crear un interprete para permitir la ejecución de código ECMAScript (JavaScript, Jscript).

Origen: Cualquiera – Destino: Ninguno Script: Set property

Permite crear una variable y asignarle un valor para ser utilizada durante la ejecución del Script.

Origen: Cualquiera – Destino: Ninguno Script: Evaluar interprete

Evalúa el código de un Script. Al finalizar, retorna el resultado del Script y si se produce algún error durante la ejecución del mismo, entonces, retorna el código de error y la descripción en ingles.

Para ello, primero debemos crear el código con la sentencia

Script: Crear interprete y posteriormente definir las variables con Script: Set property.

Que mejor que el propio ejemplo de vScriptRunner del Catalogo de aplicaciones de Velneo para mostrar el uso de las sentencias de Script en un proceso

El proceso tiene como origen un registro/ficha.

(50)

En primer lugar, vemos como se Crea el interprete y le asignamos un manejador (Handle).

A continuación se cargan las variables del Script, que están en una tabla histórica de la actual, y mediante Set property, les asignamos un valor.

Por último, Evaluamos el interprete cuyo código está almacenado en una campo

del registro actual y mostramos un mensaje con el resultado de la ejecución.

(51)

Interfaz

Las sentencias de Interfaz permiten trabajar con subobjetos y solo pueden ser lanzadas desde los eventos correspondientes a los propios objetos.

Velneo 7.0.0.7181

Origen: Cualquiera – Destino: Ninguno Interfaz: Mostrar objeto

Permite visualizar un control (subobjeto) perteneciente al objeto desde donde se ejecuta el evento.

Origen: Cualquiera – Destino: Ninguno Interfaz: Ocultar objeto

Oculta un control (subobjeto) perteneciente al objeto desde donde se ejecuta el evento.

Origen: Cualquiera – Destino: Ninguno Interfaz: Activar control

Permite activar un subobjeto desde el evento.

Origen: Cualquiera – Destino: Ninguno Interfaz: Desactivar objeto

Permite desactivar un subobjeto desde el evento.

Origen: Cualquiera – Destino: Ninguno Interfaz: Activar foco objeto

Asigna el foco del subobjeto indicado.

Origen: Cualquiera – Destino: Ninguno Interfaz: Set paleta

Permite asignar una de las paletas de colores declaradas en la caja de la aplicación o en una caja heredada.

Origen: Cualquiera – Destino: Ninguno Interfaz: Set fuente

Con esta sentencia podemos aplicar una de las fuentes instalada en la caja de aplicación o en las cajas heredadas.

Origen: Cualquiera – Destino: Ninguno Interfaz: Quitar foco

Permite quitar el foco a un subjeto.

(52)

Origen: Cualquiera – Destino: Ninguno Interfaz: ¿Esta activo?

Esta sentencia nos permite conocer el estado (activo / no activo) de un subobjeto. El retorno de esta sentencia es True / False ( 0/1 ).

Origen: Cualquiera – Destino: Ninguno Interfaz: ¿Es visible?

Esta sentencia nos permite conocer el estado (visible / oculto) de un subobjeto. El retorno de esta sentencia es True / False ( 0/1 ).

Origen: Cualquiera – Destino: Ninguno Interfaz: ¿Tiene foco?

Esta sentencia nos permite conocer si un subobjeto tiene el foco en este momento. El retorno de esta sentencia es True / False ( 0/1 ).

Origen: Cualquiera – Destino: Ninguno Interfaz: Recalcula control

Nos permite actualizar o refrescar el contenido de un Control de tipo objeto.

Origen: Cualquiera – Destino: Ninguno Interfaz: Procesar control

Permite acceder a los datos de un Control de tipo objeto para procesarlos (leer, modificar o borrar).

Origen: Cualquiera – Destino: Ninguno Interfaz: Aceptar

Esta sentencia simula la pulsación del botón Aceptar, guardando los datos de la ficha activa y cerrando el formulario.

Origen: Cualquiera – Destino: Ninguno Interfaz: Cancelar

Esta sentencia simula la pulsación del botón Cancelar, cerrando el formulario sin guardar los cambios.

Origen: Cualquiera – Destino: Ninguno Interfaz: Activar subcontrol

Permite activar un subcontrol y es especial y exclusivo para los subobjetos Separador de formularios, Caja de formularios y Pila de formularios

Origen: Cualquiera – Destino: Ninguno Interfaz: ¿Esta activo el subcontrol?

Permite conocer el estado de los subobjetos de la sentencia anterior, Es valida únicamente para Separador de formularios, Caja de formularios y Pila de formularios

(53)

Velneo 7.2.1.8377

Origen: Cualquiera – Destino: Ninguno Interfaz: Set hoja de estilo CSS

Esta sentencia permite asignar la hoja de estilo para cambiar el aspecto visual de un objeto.

Origen: Cualquiera – Destino: Ficha Interfaz: Formulario alta

Nueva...

Origen: Cualquiera – Destino: Ficha Interfaz: Formulario baja

Nueva...

Origen: Cualquiera – Destino: Ficha Interfaz: Formulario modificación

Nueva...

Velneo 7.4.0.8985

Origen: Cualquiera – Destino: Ninguno Interfaz: activar subcontrol

Esta ...

Origen: Cualquiera – Destino: Ninguno Interfaz: obtener multi-seleccion

Esta ...

Origen: Cualquiera – Destino: Ninguno Interfaz: liminar multi-seleccion

Esta ...

Origen: Cualquiera – Destino: Ninguno Interfaz: añadir ficha a multi-seleccion

Esta ...

Origen: Cualquiera – Destino: Ninguno Interfaz: quitar ficha de multi-seleccion

Esta ...

Origen: Cualquiera – Destino: Ninguno Interfaz: ejecutar otro evento-slot

Esta ...

(54)

Objetos

Origen: Cualquiera – Destino: Ninguno Crear manejador de objeto

Es …...

Disparar objeto

Es …...

Get variable local de objeto

Es …...

Set variable local de objeto

Es …...

Añadir ficha al objeto

Es …...

Añadir lista al objeto

Es …...

(55)

Puerto serie

Velneo 7.2.1.8377

Origen: Cualquiera – Destino: Ninguno Puerto serie: Configurar dispositivo

Esta sentencia permite al usuario final, cambiar la configuración de un dispositivo.

Origen: Cualquiera – Destino: Ninguno Puerto serie: Abrir

Abre un puerto serie para establecer la comunicación con un dispositivo.

Origen: Cualquiera – Destino: Ninguno Puerto serie: Enviar

Permite enviar un dato a un dispositivo conectado al puerto serie.

Origen: Cualquiera – Destino: Ninguno Puerto serie: Recibir

Permite recibir un dato de un dispositivo conectado al puerto serie

Origen: Cualquiera – Destino: Ninguno Puerto serie: Cerrar

Cierra la conexión establecida con un dispositivo conectado al puerto serie.

(56)

Ahora que ha tenido la oportunidad de ver todas las operaciones que puede realizar desde procesos, creo que lo mejor que podemos hacer para que empiece a entender todas estas instrucciones es ver algunos ejemplos del uso de las mismas.

Para crear procesos con Velneo hay un concepto tan básico como importante, para que el resultado final sea el requerido. Hablamos de Origen y Destino, o dicho de otra forma,

¿donde estamos? y ¿dónde queremos llegar?

Así es, el origen nos indica el punto de partida del proceso y por tanto un proceso puede tener su origen en:

- una ficha (o registro de una tabla de datos)

- una lista (o conjunto de registros de una tabla de datos)

- sin origen (cuando no se refiere a ninguna tabla de datos en concreto)

y el destino nos indica cual será el resultado y que podemos hacer. Si miramos el ejemplo nº 1 vemos como el origen del proceso debe ser Una ficha de la tabla Cabecera de albaranes, y el destino es Una lista de la tabla Líneas de albaranes. En el proceso que muestra este ejemplo, queremos, partiendo de un albarán en concreto, cargar sus líneas para imprimir un informe con el documento completo.

Otra cuestión a tener en cuenta, es que cuando hablamos de Ficha, es incuestionable que nos referimos a un solo registro de una tabla de datos, pero cuando hablamos de Lista, no siempre nos referimos a varios registros, el resultado de una consulta, puede ser perfectamente una lista de 1 solo registro, especialmente cuando realizamos la consulta por el indice “CODIGO” y este es de “Clave Única”.

Así que, empecemos a desarrollar los primeros procesos con Velneo v7 vDevelop.

Trabajar con un entorno tan avanzado y más cuando se ha programado en otros lenguajes, obliga a cambiar el chip, es decir, debemos pensar en la programación de forma más natural, adaptando el programa a la empresa y no adaptando la empresa al programa.

Si ha leído la lista de instrucciones de procesos, y ya conocía Velneo de la versión anterior,

vera algunos cambios que podrían despistarle, los Históricos han pasado a llamarse Plurales

de forma que, donde antes indicábamos Cargar históricos, ahora es Cargar plurales.

(57)

Ejemplo nº 1 de procesos

Vamos a escribir un proceso muy sencillo para imprimir un documento

Cargar lista , ALBARANES , CODIGO , %CODIGO

Imprimir informe -> NOMBRE-INFORME , IMPRESORA-LÓGICA

Este proceso tan sencillo, escrito en un objeto proceso y con origen en la tabla de cabecera de albaran, permite cargar las líneas de un albaran por el código de la ficha actual y envía un informe a una impresora lógica.

Ejemplo nº 2 de procesos

He insistido varias veces en los conceptos mas importantes de la aplicación, y a menudo quizá vuelva a insistir en datos explicados en otro capítulos, Pero el propósito de este libro, es que aprenda a utilizar bien la herramienta, y por tanto, repasaremos los conceptos básicos cuantas veces haga falta.

Para este 2º ejercicio, queremos que desde la ficha de un cliente (desde su formulario de edición), ver que artículos que le hemos vendido durante el ultimo año.

El origen es pues, la ficha del Cliente, y el proceso a realizar:

Cargar plurales ALBARANES

Filtrado de lista -> (#FECHA > ( addDays( $Caja@FCH-INI , -1 )) & (#FECHA <

( addDays( $Caja@FCH-FIN , 1 ))

Cargar plurales LINEAS-DE-ALBARANES Cargar maestros ARTICULOS

Añadir retorno REJILLA-DE-ARTICULOS

Si este proceso lo analizamos sobre el esquema de las tablas, vemos claramente que para llegar desde clientes a artículos, el camino correcto es el indicado en el proceso. En la segunda línea del proceso, he incluido un filtro, que nos permitiría ver solo los artículos vendidos durante un periodo determinado por las fechas

$Caja@FCH-INI y $Caja@FCH-FIN.

Si nos fijamos en esa misma línea, en la expresión

(#FECHA > ( addDays( $Caja@FCH-INI , -1 ))

parece incorrecta o cuanto menos, complicada, pero con esto conseguimos suplir la carencia del operador (>=) “mayor o igual que”. Podemos distinguir que en esta formula hemos utilizado la comparación de un campo #FECHA con una variable global $Caja@FCH-INI.

El origen en este proceso es de FICHA en la tabla de Clientes y el destino es de

LISTA en la tabla de Artículos.

(58)

Ahora que ya sabemos programar procesos con Velneo, es importante que sepamos también cual es la diferencia que existe entre los distintos tipos de procesos según su ejecución:

- Procesos en 1er plano - Procesos en 2º plano - Procesos en 3er plano

- Procesos en 4º plano (demonios – proceso sin origen)

Procesos en 1er plano

Son ejecutados en el cliente. Durante su ejecución, el usuario debe esperar a que finalice el proceso para poder continuar con la ejecución de la aplicación.

Procesos en 2º plano (multitarea)

Son ejecutados en el cliente. En este caso, el usuario no tiene que esperar a que termine la ejecución del proceso, puede continuar ejecutando la aplicación aunque el proceso no haya terminado de ejecutarse.

Procesos en 3er plano

Son ejecutados en el servidor y pueden ser lanzados desde:

a) Un proceso en primer plano ejecutado desde vClient.

b) Un proceso en segundo plano ejecutado desde vClient.

También son procesos en tercer plano:

a) Los que son ejecutados desde páginas HTML de Velneo.

b) Los ejecutados como tareas programadas en vAdmin de Velneo. Solamente podrán dispararse como tarea programada los procesos públicos SIN ORIGEN.

Demonios (procesos en 4º plano)

Son procesos sin origen, que se ejecutan siempre en el servidor de forma repetitiva, y con una frecuencia que se indica en milisegundos.

Este tipo de procesos es muy útil para realizar tareas de comprobación de datos de forma automática, ya que al ser ejecutado en el servidor no puede intervenir la mano del usuario en ningún momento.

A pesar de que su programación es exactamente al resto de los procesos, existe un Objeto destinado únicamente a programar demonios.

La frecuencia de ejecución del demonio, se expresa en milisegundos, pero siempre

contando a partir del momento en que finalizó la ejecución anterior, de forma que no

(59)

Debo aclarar, que los procesos en 3er plano, son ejecutados en el servidor, motivo por el que las Cestas y las Tablas en memoria, se ejecutan en el servidor y podrían estar vacías durante la ejecución, lo que al programador, podría dar la sensación de un mal funcionamiento de la aplicación, y por tanto errores sin explicación aparente.

8 .2. Las funciones

No debemos confundir este apartado de funciones, que el usuario va a definir, con las funciones propias del Asistente de formulas, que ya vimos en un capitulo anterior.

Se trata ahora, de poder definir nuestras propias funciones, y retornar los valores deseados.

Para demostrarlo, vamos a crear nuestra primera función, aunque esta sea muy básica.

Set nSuma , <<SUMA(‘importe1’, ‘importe2’) Set nResultado , ‘importe1’ + ‘importe2’

Set retorno función -> nResultado

He aquí nuestra primera función, tan simple. Hemos creado una función que suma los dos importes que le pasamos como parámetros en la llamada a la misma. En realidad hemos unido dos partes que aunque están muy relacionadas, en el código de la aplicación, no pueden mezclarse.

- En primer lugar Set nSuma , <<SUMA(‘importe1’, ‘importe2’) es la llamada a la función que hemos definido y que utilizaremos normalmente desde un proceso en una caja de objetos, aunque las funciones también se pueden utilizar como contenido inicial de campos en las cajas de datos, por ej.

- En segundo lugar,

Set nResultado , ‘importe1’ + ‘importe2’

Set retorno función -> nResultado

Hemos escrito las líneas propias para la definición de la función, y que lógicamente, no tendremos que volver a escribir. En tanto que, al definir la función, esta puede ser llamada desde donde sea necesaria y las veces que sea necesaria.

INCLUIR ALGUNA IMAGEN DE UNA FUNCIÓN

De esta forma el usuario puede definir sus propias funciones y operar con ellas, del

mismo modo que lo hace con las funciones del sistema.

Referencias

Documento similar

Es de sobra sabido que el es- píritu movilizador del Estado de Derecho, en toda Europa y durante los últimos doscientos cincuenta años, ha sido la garantía de la libertad frente a

Se dice que la Administración no está obligada a seguir sus pre- cedentes y puede, por tanto, conculcar legítimamente los principios de igualdad, seguridad jurídica y buena fe,

22 FERNÁNDEZ DÍAZ, Andrés (2000): pp.. lenguaje, añadiendo que la ciencia del Derecho puede verse como un conjunto de enunciados sobre el Derecho positivo. De esa forma aparece

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

cuarta, que las unidades que suministran el contenido a la moral, al igual que sus agentes, son 10s seres humanos individuales, y que en las valoraciones morales todo individuo ha de

pero ni esas definiciones estatales pueden quedar al margen de toda hipo- tética controversia ni su omisión —sobre todo— debe llevar a alterar el carácter necesariamente limitado

Un poeta, un locutor, un pintor, amigos hippies o músicos de larga trayectoria hicieron parte de este proyecto musical que, en mi concepto, está en la cima de la historia del rock

Es cierto que si esa persona ha tenido éxito en algo puede que sea trabajadora, exigente consigo misma y con los demás (eso sí son virtudes que valoro en