Tubo de lista
Se trata de un objeto cuya finalidad es la de transferir listas de información de un origen a un destino. Partiendo de una lista de una tabla de destino. Por tanto, la entrada como la salida del objeto es una lista.
Este objeto puede ser creado tanto en un proyecto de datos como en un proyecto de aplicación.
Propiedades
Identificador
Etiqueta alfanumérica que identifica al objeto. Este identificador será el que se usa para referenciarlo en los inspectores y en las propiedades de otros objetos.
Nombre
Etiqueta alfanumérica que servirá como descriptor del objeto. Es el texto que se presentará al usuario final de la aplicación para referenciar al objeto. Podemos definir una etiqueta por cada idioma presente en el proyecto.
Estilos
Podemos definir el estilo siguiente:
Privado
Limita el acceso del usuario final al objeto desde puntos donde no se haya programado el acceso al mismo.
Comentarios
Esta propiedad nos permite documentar el uso del tubo de lista.
Tabla asociada
Esta propiedad nos permite establecer cuál será la tabla de origen del tubo de lista. Podremos seleccionar una tabla.
Tabla destino
Esta propiedad nos permite establecer cuál será la tabla de destino del tubo de lista; es decir, en qué tabla se crearán los nuevos registros. Podremos seleccionar una tabla.
Usar contenido inicial en campos destino
Cuando disparamos el tubo de lista, si esta propiedad está desactivada, únicamente se evalúan los contenidos iniciales que dependen de otros campos. Si está activada, se evalúan todos los contenidos iniciales, estáticos o los que dependen de otros campos.
Formulario de petición de datos destino
Esta propiedad estará disponible en tubos creados en proyectos de aplicación de destino del tubo de lista, que será presentando al inicio de su ejecución. El usuario podrá realizar cambios y contenidos iniciales el alta de los registros. Este formulario se mostrará una sola vez para todos los registros. Si no especificamos ningún formulario, cuando ejecutemos el tubo los registros serán generados directamente en la tabla de destino.
Resolución de campos en destino
En el panel central de Velneo vDevelop podremos asignar valores a los campos. Para ello pulsar el botón que aparece al editarlo. Los comandos disponibles son:
Añadir un nuevo capilar (control + N).
Borrar un capilar (Supr).carácter
Alta de maestro en destino
No es funcional en la versión actual. Esta propiedad estará disponible en tubos creados en proyectos de aplicación. Esta propiedad nos permite establecer si se dispararán las altas en las tablas enlazadas en los registros de destino. Los posibles valores son:
Falso
No se producirá el alta del registro enlazado si este no existe.
Verdadero
Se realizará el alta del registro enlazado.
Campo enlazado a tabla maestra en destino
No es funcional en la versión actual. Esta propiedad nos permite seleccionar uno de los campos punteros a tablas en la tabla de destino, para su alta.
Formulario de tabla maestra
No es funcional en la versión actual. Esta propiedad nos permite especificar un formulario de destino del tubo de lista, que será presentando al inicio de su ejecución. El usuario podrá validar el alta del maestro. Esta propiedad estará disponible solo si se selecciona Verdadero en la propiedad alta de maestro en destino.
Los tubos de lista habitualmente se disparan desde procesos, mediante los comandos de instrucción de proceso tubo de lista o tubo de lista inducido.
Cómo pasar información de un proceso a un tubo de lista
En el proceso declararemos y editaremos las variables locales que necesitemos y en el tubo de lista crearemos variables locales idénticas (mismo identificador y tipo) y las usaremos para resolver los campos del tubo que correspondan.
Por ejemplo, para un tubo de lista que crea líneas de una factura, creamos en el tubo una variable local con el identificador ID_FACTURA y la usamos en la resolución del campo enlazado a facturas de la tabla de líneas.
En el proceso crearemos una variable local con el mismo identificador que la del tubo (ID_FACTURA), y le asignaremos el valor deseado antes de disparar el tubo, de este modo, al dispararlo, se pasará el ID de la factura establecido en el proceso.
Notas sobre los contenidos iniciales y los tubos
En los tubos solamente se disparan los contenidos iniciales que dependen de otros campos de la tabla de destino
Esto quiere decir que si el campo tiene un contenido inicial que no depende de otros campos, por ejemplo: currentDate()
en un campo de tipo fecha, el contenido inicial no se disparará al ejecutar el tubo. Por tanto, si queremos que tenga un contenido, tendremos que crear el capilar correspondiente en el tubo y asignarle un valor.
Si el campo tienen un contenido inicial que depende de otro campo que también se asigna en el tubo, entonces se disparará cuando se asigne ese campo en el tubo. Un ejemplo:
Supongamos que, entre otros, tenemos estos dos campos en una tabla de Líneas de venta:
ARTICULO (campo enlazado a tabla Artículos).
PRECIO (con contenido inicial : #ARTICULO.PRECIO
).
Si en el tubo no creamos capilar para el campo PRECIO y creamos un capilar para el campo ARTICULO, entonces se disparará el contenido inicial del campo PRECIO al ejecutar el tubo.
El orden de los capilares influye
Siguiendo con el ejemplo anterior:
Tenemos un articulo A cuyo precio es 22.
En una línea de venta selecciono el artículo A (se dispara el contenido inicial: 22) y cambio el precio de la línea por 11.
Disparo un tubo desde esa línea de venta:
Si el orden de los capilares del tubo es:
PRECIO
ARTICULO
El registro de salida del tubo tendrá PRECIO 22. ¿Por qué? Porque los capilares se ejecutan secuencialmente así que primero asigna el precio: 11. Luego asigna el artículo, que hace que se dispare el contenido inicial del precio, con lo que le asigna 22.
Si el orden de los capilares es este:
ARTICULO
PRECIO
Al asignar el artículo se disparará el contenido inicial del precio (22) luego se ejecuta el capilar del precio, con lo que le asigna un 11.