Velneo. Tubos de ficha y lista JavaScript Velneo. Tubos de ficha y lista JavaScript Índice Velneo. Tubos de ficha y lista JavaScript Índice La función velneoDB.tubo Los parámetros Ejemplos de tubos de ficha y lista 1. Con capilares especificando campos origen y destino 2. Con capilares declarados en la misma línea 3. Con capilares de campos que se llaman igual en origen y destino 4. Combinando capilares de tipo fórmula con manuales 5. Asumiendo que la tabla destino es igual que la de origen 6. Capilares automáticos de campos con el mismo identificador 7. Combinando capilares automáticos, fórmula y manuales ¿Cómo se implementa en mi solución? Ejemplo de uso Consideraciones a tener en cuenta Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) España velneo.es Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª Velneo. Tubos de ficha y lista JavaScript La función velneoDB.tubo La función es válida tanto para tubos de ficha como para tubos de lista y reconoce automáticamente si está recibiendo una ficha o una lista y actúa en consecuencia. La función retorna una ficha o una lista en función de lo que recibe en el primer parámetro. Si recibe una ficha retorna la nueva ficha generada (Objeto de clase VRegister) si recibe una lista retornará una lista con los nuevos registros generados (Objeto de la clase VRegisterLst). Los parámetros La función utiliza 3 parámetros. Todos ellos son obligatorios, aunque algunos admiten recibir una valor nulo o vacío. Son los siguientes: 1. Origen: Objeto de la clave VRegister (ficha o registro) o VRegisterList (lista de registros). Debemos pasar algún registro en ambos casos. Si pasamos una lista, aunque sea de un registro se devolverá una lista con el nuevo registro generado. 2. szTablaDestinoIdRef: Todas las tablas tienen un “IdRef”, es decir un identificador de referencia que se forma con la siguiente estructura “Alias/Identificador”, el alias del proyecto y el identificador de la tabla. Si queremos lanzar un tubo para duplicar registros, es decir, que la tabla de origen y destino sea la misma tenemos 2 opciones, una es especificar explícitamente el idRef y la segunda es dejar el parámetro vacío (“”), comillas­comillas, de esa forma la función se encargará de asumir que la tabla de destino es la misma que la que tenga el registro o lista de registros de origen. Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) velneo.es España Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª Velneo. Tubos de ficha y lista JavaScript 3. aCapilaresParam: Este parámetro debe ser un array que incluya la lista de los capilares a traspar entre la tabla de origen y la tabla de destino. Cada capilar es un objeto JSON que consta de 2 datos: el origen y el destino. Vamos a ver que podemos tener diferentes formas de indicar esta información para ahorrarnos tiempo de programación. Opciones para pasar capilares: a. Campo origen y campo destino diferentes: Si los identificadores de los campos de origen y destino son diferentes se utilizará el formato { “origen” : “IdCampoOrigen”, “destino” : “IdCampoDestino” }, siendo IdCampo el identificador del campo origen y destino respectivamente. No es necesario especificar la # como en la fórmulas V7, simplemente el identificador especificado en la propiedad del campo, ejemplo “NOMBRE, NAME”. también se pueden especificar en la misma línea separando cada capilar con una coma: b. Campo origen y campo destino iguales: Si los identificadores de los campos de origen y destino son iguales podemos utilizar la opción anterior repitiendo el mismo identificador en origen y destino, pero la forma más lógica de hacerlo es la abreviada que consiste en especificar sólo el identificador de origen, ya que el tubo JavaScript ya deduce que si no hay destino asume que el identificador del campo destino es el mismo que el del campo origen. c. Campos comunes: Si deseamos especificar que de forma automática se pasen todos los campos cuyos identificadores sean igual en la tabla de origen y la tabla de destino podemos usar el capilar especial “*” (Asterisco). Este capilar es procesado por la función que se encarga de leer los campos de ambas tablas y crear los capilares de aquellos campos cuyo identificador exista en la tabla origen y destino, teniendo en cuenta que sólo se generan capilares de campos que tengan persistencia en disco. No se crean capilares de campos fórmula o punteros sin ocupación en disco. Este tipo de capilar puede combinarse con Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) velneo.es España Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª Velneo. Tubos de ficha y lista JavaScript cualquiera de los otros. Lo que sí debemos tener en cuenta es el orden, es decir, si ponemos primero este capilar pero luego utilizamos otro capilar manual sobre alguno de los campos que se capilarizaron de forma automática, al pasar los datos quedará siempre el valor del último capilar ejecutado. d. Fórmula JavaScript: Es posible pasar como capilar una fórmula JavaScript. La función se encargará de ejecutarla y dejar el cálculo de la función en el campo de destino. La función y el capilar pueden definirse de 2 formas como vamos a ver a continuación: Podemos observar que en la función debemos declarar un parámetro. La función que ejecuta el tubo ya se encarga de llamar a esta función y alimentar ese parámetro con el registro de entrada. Una vez finalizados los cálculos debemos retornar el valor calculado. Modo (A): Función externar al capilar. Es similar a la imagen anterior, es decir declaramos una variable que contiene la función y esa variable es la que especificamos en el capilar de origen. Se corresponde con la línea 71 de la siguiente imagen. Modo (B): Función declarada en el capilar. Lo podemos ver en la línea 72 de la imagen anterior. En este caso el destino se especifica igual, pero el origen en lugar de especificar una variable que contiene una función, directamente incluye la función. Esta es una forma más rápida de especificar el capilar y es válida siempre que la función no sea larga o tenga más de una línea, en cuyo caso es recomendable usar el modo A (externo). Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) velneo.es España Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª Velneo. Tubos de ficha y lista JavaScript Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) velneo.es España Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª Velneo. Tubos de ficha y lista JavaScript Ejemplos de tubos de ficha y lista 1. Con capilares especificando campos origen y destino Los nombre de las variables como aCapilares, listaRetorno o fichaRetorno pueden ser sustituidos por cualquier identificador que desee utilizar el programador. En todos los ejemplos se incluye un ejemplo de ejecución de tubo de ficha y tubo de lista que como se puede apreciar se declaran exactamente igual salvo por el tipo del primer parámetro. A modo de ejemplo se pone theRegisterListIn y theRegisterIn que se corresponden con el origen del proceso, pero también podrían ser cualquier objeto de la clase VRegisterList o VRegister respectivamente. 2. Con capilares declarados en la misma línea Lógicamente, se pueden especificar en la misma línea capilares de cualquier tipo, automáticos de campos comunes, funciones, igual identificador de campo origen que destino y combinados. Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) velneo.es España Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª Velneo. Tubos de ficha y lista JavaScript 3. Con capilares de campos que se llaman igual en origen y destino Este mismo también se consigue con el capilar automático “*”, pero en alguna ocasión puede interesarnos ponerlo directamente si se trata sólo de un campo. En los ejemplos se especifican los capilares línea a línea y no todos en la misma línea para facilitar su lectura. Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) velneo.es España Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª Velneo. Tubos de ficha y lista JavaScript 4. Combinando capilares de tipo fórmula con manuales 5. Asumiendo que la tabla destino es igual que la de origen Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) velneo.es España Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª Velneo. Tubos de ficha y lista JavaScript 6. Capilares automáticos de campos con el mismo identificador 7. Combinando capilares automáticos, fórmula y manuales Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) velneo.es España Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª Velneo. Tubos de ficha y lista JavaScript ¿Cómo se implementa en mi solución? Existen 2 forma sencillas de implementar los tubos de ficha y lista JavaScript en nuestras soluciones: 1. Heredar la solución vBase (a partir de su versión 2.5) 2. Instalar el JavaScript en uno de mis proyectos En ambos casos una vez instalado el fichero JavaScript que contiene la función de tubo ya podremos usarlo desde nuestros scripts. En función de donde lo tengamos instalado nos cambiará simplemente la senda del include a efectuar. En vBase la función está en una fichero JavaScript velneoDB.js dentro de la carpeta database que a su vez es una subcarpeta de la principal js. En tu solución puedes importarla donde te interese. Es recomendable instalarlo en un proyecto que se encuentre lo más bajo posible dentro dentro del árbol de herencia. Utilizando la opción importar fichero script (menú contextual del árbol de scripts) añadiremos a nuestro proyecto el fichero velneoDB.js. Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) velneo.es España Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª Velneo. Tubos de ficha y lista JavaScript Ejemplo de uso Una vez instalado podremos hacer uso de la función desde cualquier proceso o fórmula JavaScript de nuestra aplicación. A continuación vemos un ejemplo de uso: Los procesos JavaScript requieren que se cree un fichero de script que contendrá el código JavaScript que vemos en la imagen superior. Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) velneo.es España Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª Velneo. Tubos de ficha y lista JavaScript Este proceso JavaScript tiene declaradas las tablas de entrada y salida para poder posteriormente gestionar los registros creados por el tubo, así como el fichero de script que veíamos previamente. Si queremos usar este proceso JavaScript en tercer plano para conseguir un gran rendimiento, simplemente debemos crear un proceso V7 que lo ejecute. Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) velneo.es España Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª Velneo. Tubos de ficha y lista JavaScript Lógicamente este proceso podría tener configurados las mismas propiedades a nivel de tabla asociada (entrada) y tabla destino (salida) Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) velneo.es España Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª Velneo. Tubos de ficha y lista JavaScript Consideraciones a tener en cuenta En esta primera versión existe 2 tipos de campos cuyos valores no pueden ser traspasados desde la tabla origen a destino. Son los campos de tipo objeto dibujo y objeto binario. El campo objeto binario no dispone aún de funciones fieldTo y setField en el API para poder hacer el traspaso. El objeto dibujo sí dispone de funciones pero debido a un bug existente en Qt que está reportado y a la espera de resolución, aún no están operativas. Pol. Ind. A Granxa, Edificio vCenter Telf. (+34) 902 02 02 61 Rúa D, esquina paralela 3 [email protected] 36400 Porriño (Pontevedra) velneo.es España Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª