Listas

Conjunto de comandos de proceso que permite interactuar con una lista de registros de una tabla.

Este tipo de comandos solamente estarán accesibles en aquellas líneas de proceso cuyo origen sea una lista de de registros de una tabla.

Añadir ficha a la lista en curso

Comando de instrucción del grupo Listas que permite añadir una ficha a la lista en curso.

Origen de la instrucción: lista de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Manejador de ficha

Identificador o manejador dado a la ficha mediante la ejecución previa de los comandos Crear nueva ficha en memoria o Crear copia de ficha en memoria.

Funcionalidad

Permite añadir a la lista en curso una ficha local al proceso creada previamente mediante los comandos Crear nueva ficha en memoria o Crear copia de ficha en memoria.

Comentarios

Esta ficha será local al proceso, por lo que será destruida al finalizar el mismo. En el caso de una ficha creada mediante el comando crear nueva ficha en memoria, para que ésta pueda ser añadida a la lista ha de ser guardada en disco previamente, por lo que antes de añadirla a la lista tendremos que guardarla en disco usando el comando alta de ficha, en este comando la ficha será referenciada con el manejador declarado en su parámetro.

Ejemplo

Damos de alta un contacto y lo añadimos a la lista en curso de la rejilla en la vista de datos actual.

Crear nueva ficha en memoria ( alta, CLT_M@ejemplo_dat )
    Modificar campo ( NAME, "Juan Pérez García" )
Alta de ficha ( alta )
    Libre
Interfaz: procesar ( LST, Todas )
    Añadir ficha a la lista ( alta )

Calcular fórmula sobre lista

Comando de instrucción del grupo Listas que, a partir de la fórmula que establezcamos en sus parámetros, permite obtener la suma total, la media, el valor máximo y el valor mínimo.

Origen de la instrucción: lista de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Fórmula a calcular

Expresión de tipo fórmula que queremos calcular por cada registro.

Modo de cálculo

En este parámetro especificaremos qué tipo de cálculo queremos hacer con esa fórmula. Los valores posibles son:

  • Media: obtiene la media aritmética de la fórmula sobre el número total de registros.

  • Máximo: obtiene el valor máximo obtenido.

  • Mínimo: obtiene el valor mínimo obtenido.

  • Suma: obtiene el sumatorio de la fórmula en todos los registros.

Modo de ejecución

Indicaremos dónde queremos que se realice el cálculo:

  • 1º plano: local (síncrono): el cálculo se hará en local.

  • 3er plano: servidor (síncrono):el cálculo se hará en el servidor.

Si se trata de pocos registros el cálculo se podrá hacer en local pero si son muchos registros y, sobre todo ejecutando en cloud, se recomienda hacerlo en tercer plano.

Identificador de variable local numérica de retorno

Variable local del proceso donde se guardará el resultado.

Funcionalidad

A partir de la fórmula que establezcamos en sus parámetros, permite obtener la suma total, la media, el valor máximo y el valor mínimo y guardar el valor obtenido en una variable local.

Comentarios

Este comando ni transacciona ni es bloqueante, con lo cual no habrá ningún problema si se modifica la lista o se ejecutan otros procesos mientras se está realizando el cálculo.

Ejemplo

Ejecutamos una búsqueda y con la lista obtenida calculamos la suma, la media, el máximo y el mínimo:

Rem ( Ejecutamos una búsqueda de facturas y calculamos la suma, la media el máximo y el mínimo facturado )
Búsqueda ( VTA_FAC_G_EMP_ENT_FCH@vERP_2_dat )
    Calcular fórmula sobre la lista ( #TOT_FAC, Suma, 3º plano: servidor (síncrono), SUM )
    Calcular fórmula sobre la lista ( #TOT_FAC, Media, 3º plano: local (síncrono), MED )
    Calcular fórmula sobre la lista ( #TOT_FAC, Máximo, 3º plano: local (síncrono), MAX )
    Calcular fórmula sobre la lista ( #TOT_FAC, Mínimo, 3º plano: local (síncrono), MIN )

Cortar lista

Comando de instrucción del grupo Listas que recorta el número de elementos de una la lista a partir de una posición determinada.

Origen de la instrucción: lista de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Fórmula de tamaño

Tamaño o número de elementos de la nueva lista.

Fórmula de posición

Posición a partir de la cual se quiere cortar la lista. La primera posición de la lista será la 1. El número 0 no es un valor válido para este parámetro.

Funcionalidad

Este comando de instrucción recorta el número de elementos de la lista de origen de la línea del proceso al tamaño dado en el primer parámetro desde la posición especificada en el segundo parámetro.

El resto de los elementos no son borrados de la tabla de datos, sólo son quitados de la lista de origen.

Este comando no crea ningún tipo de subproceso, es simplemente un paso que altera el contenido de la lista de origen. La siguiente línea del proceso al mismo nivel que ésta partirá de la lista obtenida.

Comentarios

Obtenemos la lista top 10 de importes de pedidos realizados por los de clientes.

Ejemplo

Limpiamos la rejilla para que no muestre ningún registro.

Cargar lista ( CLT_M@ejemplo_dat, ID, , , ,  )
    Ordenar lista ( #TOT_PED, , , , ,  )
    Cortar lista ( 10, 1 )
    Añadir lista a la salida

Crear o modificar lista desde CSV

Comando de instrucción de proceso que nos permite, o bien modificar, o bien dar de alta una lista de registros en una tabla a partir de un CSV.

Origen de la instrucción: ninguno.

Destino del subproceso: lista de la tabla de destino.

Parámetros

Fórmula de dato

Expresión fórmula con el CSV a importar, directamente como texto literal o variable local alfabética, variable global alfabética o campo alfabético u objeto texto.

Identificador de tabla

En este parámetro seleccionaremos la tabla de destino.

Identificador de índice

Este parámetro solo es necesario si en la operación permitida está incluida la modificación, en cuyo caso especificaremos un índice de clave única que permita localizar el registro.

Tipo de operación

Tipo de operación a realizar en la tabla de destino. Los valores posibles son:

  • Alta o modificación: los registros que no existen lo dará de alta en la tabla, los que existen, los modificará.

  • Solo alta: dará de alta nuevos registros. Sl el CSV incluye el campo ID de cada registro lo ignorará y creará un nuevo registro con el ID que le corresponda. Así que es una buena alternativa al tubo de lista.

  • Solo modificación: los registros del CSV que existan en la tabla serán modificados, y con los que no existan no hará nada.

Fórmula para los parámetros CSV (formato JSON) (opcional)

Permite especificar un objeto JSON con los distintos parámetros configurables del comando. Debe tener esta estructura:

  • id (true/false): para configurar si el CSV incluye identificadores en la primera línea. El valor por defecto es true.

  • fields (array de string): objeto array con la especificación de campos a importar. El valor por defecto es todos los campos.

  • registerSeparator (string): carácter separador de registro en el CSV. El valor por defecto es el salto de línea.

  • fieldSeparator (string): carácter que se usa en el csv para separar los campos. El valor por defecto es la coma (,).

  • numericFormat (string): cadena para especificar el formato numérico del los campos del CSV. La fórmula admite los valores siguientes

    • "L": formato decimal con ajustes locales. Aplica la configuración local (separador decimal, separador de miles, mostrar/ocultar ceros a la izquierda) del sistema en el que es ejecuta el comando.

    • "C": formato contable. Aplica el formato de moneda (número de decimales, separador de miles y decimal) para el idioma del sistema en el que se ejecuta el comando.

    • Si no es ni "L", ni "C" intentará construir un locale con ese valor siguiendo estas reglas.

      Si no consigue construir un locale, aplicará el formato por defecto, que es "f": ([-]9.9).

Ejemplo:

{"id":true,
"fields":["ID","NAME", "NUMERO"],
"registerSeparator":"\r\n",
"fieldSeparator":",",
"numericFormat": "L"}

En el caso de que queramos escribir directamente la cadena del JSON como constante en la fórmula será necesario entrecomillarlo y reemplazar en la fórmula las comillas por la secuencia de escape \c:

"{\cid\c:true,
\cfields\c:[\cID\c,\cNAME\c, \cNUMERO\c],
\cregisterSeparator\c:\c\r\n\c,
\cfieldSeparator\c:\c,\c,
\cnumericFormat\c: \cL\c}"

Identificador de variable local alfabética de retorno con el resultado de la operación (formato JSON) (opcional)

Identificador de una variable local de tipo alfabético en la que se retornará el resultado de la operación. El contenido será un objeto de JSON con la siguiente estructura:

{ "ok": true, "errores" : {"velneo_errorRegistersCount": X, "velneo_errorRegisters"=[{ "velneo_errorCode": 1, "velneo_errorString : "" },…] }}

ok: 0 si no hay errores, 1 si los hay.

errores: JSON con información sobres los errores generados:

  • velneo_errorRegistersCount: entero con el tamaño del array de "registers" (0 si es un error general).

  • velneo_errorRegisters: [] → array de objetos con el que se intento dar el alta o modificar el registro con la información extra de las claves velneo_errorCode y velneo_errorString (como se especifica más abajo.

  • velneo_errorCode: 0 si no hay errores generales, o valor en caso de haber un error general. Ver enum de errores de JSON/CSV.

Ejemplos

Replicamos los registros de una tabla en otra tabla idéntica, con todos los campos:

// Rem ( Cargamos la lista de registos de la tabla de origen )
Cargar lista ( ORIGEN@miapp dat, ID, , , ,  )
	// Rem ( Generamos un CSV con la lsita obtenida )
	Generar CSV desde lista ( CSV, , , , ,  )
	// Rem ( Damos de alta los registros en la tabla de destino )
	Crear o modificar lista desde CSV ( CSV, DESTINO@miapp dat, ID, Alta o modificación, , RES )
		Libre
	Mensaje ( RES, Información, ,  )

Replicamos solamente el ID y el NAME de una tabla tabla en otra tabla idéntica:

// Rem ( Cargamos la lista de registos de la tabla de origen )
Cargar lista ( ORIGEN@miapp dat, ID, , , ,  )
	// Rem ( Generamos un CSV con la lsita obtenida )
	Generar CSV desde lista ( CSV, "" + #ID:getID() + "," + #NAME:getID(), , , ,  )
	// Rem ( Damos de alta los registros en la tabla de destino )
	Crear o modificar lista desde CSV ( CSV, DESTINO@miapp dat, ID, Alta o modificación, "{\cid\c:true,
\cfields\c:[\cID\c,\cNAME\c], \cregisterSeparator\c:\c\r\n\c, \cfieldSeparator\c:\c,\c,\cnumericFormat\c: \cL\c}" , RES )
		Libre
	Mensaje ( RES, Información, ,  )

Crear o modificar lista desde CSV en disco

Comando de instrucción de proceso que nos permite, o bien modificar, o bien dar de alta una lista de registros en una tabla a partir de un fichero CSV almacenado en disco.

Origen de la instrucción: ninguno.

Destino del subproceso: lista de la tabla de destino.

Parámetros

Fórmula de senda

Expresión fórmula con la senda del fichero CSV a importar.

Identificador de tabla

En este parámetro seleccionaremos la tabla de destino.

Identificador de índice

Este parámetro solo es necesario si en la operación permitida está incluida la modificación, en cuyo caso especificaremos un índice de clave única que permita localizar el registro.

Tipo de operación

Tipo de operación a realizar en la tabla de destino. Los valores posibles son:

  • Alta o modificación: los registros que no existen lo dará de alta en la tabla, los que existen, los modificará.

  • Solo alta: dará de alta nuevos registros. Sl el CSV incluye el campo ID de cada registro lo ignorará y creará un nuevo registro con el ID que le corresponda. Así que es una buena alternativa al tubo de lista.

  • Solo modificación: los registros del CSV que existan en la tabla serán modificados, y con los que no existan no hará nada.

Fórmula para los parámetros CSV (formato JSON) (opcional)

Permite especificar un objeto JSON con los distintos parámetros configurables del comando. Debe tener esta estructura:

  • id (true/false): para configurar si el CSV incluye identificadores en la primera línea. El valor por defecto es true.

  • fields (array de string): objeto array con la especificación de campos a importar. El valor por defecto es todos los campos.

  • registerSeparator (string): carácter separador de registro en el CSV. El valor por defecto es el salto de línea.

  • fieldSeparator (string): carácter que se usa en el csv para separar los campos. El valor por defecto es la coma (,).

  • numericFormat (string): cadena para especificar el formato numérico del los campos del CSV. La fórmula admite los valores siguientes:

    • "L": formato decimal con ajustes locales. Aplica la configuración local (separador decimal, separador de miles, mostrar/ocultar ceros a la izquierda) del sistema en el que es ejecuta el comando.

    • "C": formato contable. Aplica el formato de moneda (número de decimales, separador de miles y decimal) para el idioma del sistema en el que se ejecuta el comando.

    • Si no es ni "L", ni "C" intentará construir un locale con ese valor siguiendo estas reglas.

      Si no consigue construir un locale, aplicará el formato por defecto, que es "f": ([-]9.9).

Ejemplo:

{"id":true,
"fields":["ID","NAME", "NUMERO"],
"registerSeparator":"\r\n",
"fieldSeparator":",",
"numericFormat": "L"}

En el caso de que queramos escribir directamente la cadena del JSON como constante en la fórmula será necesario entrecomillarlo y reemplazar en la fórmula las comillas por la secuencia de escape \c:

"{\cid\c:true,
\cfields\c:[\cID\c,\cNAME\c, \cNUMERO\c],
\cregisterSeparator\c:\c\r\n\c,
\cfieldSeparator\c:\c,\c,
\cnumericFormat\c: \cL\c}"

Identificador de variable local alfabética de retorno con el resultado de la operación (formato JSON) (opcional)

Identificador de una variable local de tipo alfabético en la que se retornará el resultado de la operación. El contenido será un objeto de JSON con la siguiente estructura:

{ "ok": true, "errores" : {"velneo_errorRegistersCount": X, "velneo_errorRegisters"=[{ "velneo_errorCode": 1, "velneo_errorString : "" },…] }}

ok: 0 si no hay errores, 1 si los hay.

errores: JSON con información sobres los errores generados:

  • velneo_errorRegistersCount: entero con el tamaño del array de "registers" (0 si es un error general).

  • velneo_errorRegisters: [] → array de objetos con el que se intento dar el alta o modificar el registro con la información extra de las claves velneo_errorCode y velneo_errorString (como se especifica más abajo.

  • velneo_errorCode: 0 si no hay errores generales, o valor en caso de haber un error general. Ver enum de errores de JSON/CSV.

Ejemplos

Exportamos a disco todos los registros de una tabla con todos sus campos y los importamos en otra:

// Rem ( Cargamos la lista de registos de la tabla de origen )
Cargar lista ( ORIGEN@miapp dat, ID, , , ,  )
	// Rem ( Generamos un en disco CSV con la lsita obtenida )
	Generar CSV desde lista ( CSV, , , , ,  )
	Set ( SENDA, sysCacheClientPath + "datos.csv" )
	Fichero: Abrir ( file, SENDA, Lectura/escritura (Crea o limpia), BOK, .Ninguno )
		Fichero: Grabar fichero ( file, CSV, BOK2 )
	// Rem ( Damos de alta los registros en la tabla de destino )
	Crear o modificar lista desde CSV ( CSV, DESTINO@miapp dat, ID, Alta o modificación, , RES )
		Libre
	Mensaje ( RES, Información, ,  )

Replicamos solamente el ID y el NAME de una tabla tabla en otra tabla idéntica:

// Rem ( Cargamos la lista de registos de la tabla de origen )
Cargar lista ( ORIGEN@miapp dat, ID, , , ,  )
	// Rem ( Generamos un CSV con la lsita obtenida )
	Generar CSV desde lista ( CSV, "" + #ID:getID() + "," + #NAME:getID(), , , ,  )
	// Rem ( Damos de alta los registros en la tabla de destino )
	Crear o modificar lista desde CSV ( CSV, DESTINO@miapp dat, ID, Alta o modificación, "{\cid\c:true,
\cfields\c:[\cID\c,\cNAME\c], \cregisterSeparator\c:\c\r\n\c, \cfieldSeparator\c:\c,\c,\cnumericFormat\c: \cL\c}" , RES )
		Libre
	Mensaje ( RES, Información, ,  )
// Rem ( Cargamos la lista de registos de la tabla de origen )
Cargar lista ( ORIGEN@miapp dat, ID, , , ,  )
	// Rem ( Generamos un en disco CSV con la lsita obtenida )
	Generar CSV desde lista ( CSV, "" + #ID:getID() + "," + #NAME:getID(), , , ,  )
	Set ( SENDA, sysCacheClientPath + "datos.csv" )
	Fichero: Abrir ( file, SENDA, Lectura/escritura (Crea o limpia), BOK, .Ninguno )
		Fichero: Grabar fichero ( file, CSV, BOK2 )
	// Rem ( Damos de alta los registros en la tabla de destino )
	Crear o modificar lista desde CSV ( SENDA, DESTINO@miapp dat, ID, Alta o modificación, "{\cid\c:true,
\cfields\c:[\cID\c,\cNAME\c], \cregisterSeparator\c:\c\r\n\c, \cfieldSeparator\c:\c,\c,\cnumericFormat\c: \cL\c}" , RES )
		Libre
	Mensaje ( RES, Información, ,  )

Crear o modificar lista desde JSON

Comando de instrucción de proceso que nos permite, o bien modificar, o bien dar de alta una lista de registros en una tabla a partir de un JSON.

Origen de la instrucción: ninguno.

Destino del subproceso: lista de la tabla de destino.

Parámetros

Fórmula de dato

Expresión fórmula con el json a importar, directamente como texto literal o variable local alfabética, variable global alfabética o campo alfabético u objeto texto.

Tipo de operación

Tipo de operación a realizar en la tabla de destino. Los valores posibles son:

  • Alta o modificación: los registros que no existen lo dará de alta en la tabla, los que existen, los modificará.

  • Solo alta: dará de alta nuevos registros. Sl el JSON incluye el campo ID de cada registro lo ignorará y creará un nuevo registro con el ID que le corresponda. Así que es una buena alternativa al tubo de lista.

  • Solo modificación: los registros del json que existan en la tabla serán modificados, y con los que no existan no hará nada.

Tabla

En este parámetro seleccionaremos la tabla de destino.

Identificador de índice

Este parámetro solo es necesario si en la operación permitida está incluida la modificación, en cuyo caso especificaremos un índice de clave única que permita localizar el registro.

Identificador de variable local alfabética de retorno de ok (opcional)

Identificador de una variable local de tipo booleano que devolverá 1 si todo está correcto y 0 si hay errores.

Identificador de variable local booleana de retorno de ok (opcional)

Variable booleana con la que se devuelve un 1 si se ha podido realizar el alta o modificación, o un 0 si no se ha podido realizar el alta o modificación.

Identificador de variable local alfabética de retorno de mensaje de error (opcional)

Identificador de una variable local de tipo alfabético en la que se retornará si ha habido algún error. El contenido será un objeto de JSON con la siguiente estructura:

{

velneo_errorCode: 0 si no hay errores generales, o valor en caso de haber un error general. Ver enum de errores de JSON/CSV.

velneo_errorString: "" si errorCode es 0, o mensaje de error en caso de error general

velneo_errorRegistersCount: entero con el tamaño del array de "registers" (0 si es un error general)

velneo_errorRegisters: [] → array de objetos con el que se intento dar el alta o modificar el registro con la información extra de las claves velneo_errorCode y velneo_errorString (como se especifica más arriba

}

Funcionalidad

A partir de un JSON, permite o bien crear nuevosr registros en una tabla, o bien modificar registros existente.

Comentarios

Este comando de instrucción de proceso tiene el fin de facilitarnos el traspaso de información, de registros de tablas, entre aplicaciones. Nos permite duplicar o actualizar información entre aplicaciones o dentro de la propia aplicación, de forma sencilla, con el fin de dotar a nuestras aplicaciones de un sistema sencillo de exportación e importación de información usando JSON.

El comando no es case sensitive. Se hace un tratamiento de las claves que convierte a Identificador cualquier clave, permitiendo aceptar como claves tanto identificadores case insensitive como valores con símbolos no permitidos (como espacios) en los nombres.

En el JSON los campos no están ordenados, así que debemos tenerlo en cuenta para cuando existen contenidos iniciales .

Para ese caso, se recomienda o bien quitar las claves y valores correspondientes del JSON antes de emplearlo, o bien modificar posteriormente los campos de los que dependen contenidos iniciales usando las funciones JSON para obtener los valores.

Los objetos no permiten repetición de claves (debido a que su posición realmente es irrelevante) .

Una estructura de objeto se representa con un par de llaves {} que contendrán cero o más pares de nombre/valor (o miembros). Un nombre es una cadena. Un signo de dos puntos : va detrás de cada nombre, separando el nombre del valor. Una coma , separa un valor del nombre siguiente. Los nombres dentro de un objeto DEBEN ser únicos.

Los posible errores son:

  • No se puede dar de alta registros porque ya existe en alguno de los índices de clave única. (si es solo alta pero ya existe en alguno de los índices de clave única).

  • No es posible modificar registros porque no se encuentran (Si el tipo de operación es solo modificación y no se encuentra el registro) .

  • El campo %1 que está en el índice %2 no existe en el JSON.

  • El campo destino %1 no existe en la tabla.

  • El valor %1 a asignar al campo %2 no es válido.

Ejemplo

Un manejador de evento que duplica los registros que tenemos en una rejilla:

Rem ( Generamos el JSON con la lista de origen )
Generar JSON desde lista ( , SZ_JSON, BOK, ERROR )
If ( BOK )
    Rem ( Generamos una nueva lista a partir del JSON generado )
    Crear o modificar lista desde JSON ( SZ_JSON, Solo alta, ARTICULOS@miapp, ID, BOK, ERROR_ALTA )
        Libre
    If ( !BOK )
        Mensaje ( "No se ha podido crear la nueva lista. Error: " + ERROR_ALTA, Información, ,  )
Else
    Mensaje ( "No se ha podido generar el JSON de origen. Error: " + ERROR, Información, ,  )

Proceso que da de alta o modifica artículos a partir de un JSON que hemos copiado previamente en el portapapeles:

Rem ( Leemos el contenido del portapapeles )
Portapapeles: Get texto ( SZ_JSON,  )
Rem ( Creamos/modificamos lista con los datos del JSON )
Crear o modificar lista desde JSON ( SZ_JSON, Alta o modificación, ARTICULOS@Json pruebas, ID, BOK, ERROR )
    Libre
If ( !BOK )
    Mensaje ( "No se ha poddo completar la operación. Error: " + ERROR, Información, ,  )

Exportar informe a fichero

Comando de instrucción del grupo Listas que se encarga de realizar la acción de generar un fichero en disco a partir del informe.

Origen de la instrucción: lista de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador del informe (Obligatorio)

Objeto informe cuya tabla asociada es la misma que la del origen de la línea del proceso donde estamos incluyendo este comando de instrucción.

Fórmula de senda de destino

Senda del fichero a generar. La senda ha de incluir el nombre y la extensión del fichero. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc. Para su especificación podemos hacer uso del asistente para la creación de formularios.

Funcionalidad

Comando de instrucción de proceso que genera el fichero indicado en el segundo parámetro a partir del informe seleccionado en el primer parámetro.

Comentarios

El proceso se paralizará durante la generación del informe y, una vez generado, continuará la ejecución secuencial del proceso.

Los formatos posibles de fichero son pdf y eps. La generación de uno u otro dependerá de la extensión que especifiquemos al definir la senda. Ejemplo:

Exportar informe a fichero (FACTURA, sysCacheClientPath + “/Informe.pdf”) El informe se generará en formato pdf.

Exportar informe a fichero (FACTURA, sysCacheClientPath + “/Informe.eps”) El informe se generará en formato eps.

No es posible exportar informe a fichero desde procesos ejecutados en tercer o en cuarto plano ni desde triggers.

No es posible exportar informe a fichero desde procesos ejecutados por Velneo vModApache en Linux ni tampoco si las instancias ejecutadas desde Apache las ejecutamos en modo server.

Ejemplo

Generamos y mostramos un informe en formato .pdf que contiene la lista de contactos en orden alfabético guardándolo en la caché del cliente.

Cargar lista ( CTT_M@ejemplo_dat, NAME, , , ,  )
    Exportar informe a fichero ( INFORME@ejemplo_app, sysCacheClientPath + "/listadecontactos.pdf" )
    Ejecutar documento ( "file:///"+sysCacheClientPath + "/listadecontactos.pdf",  )

Filtrar lista

Comando de instrucción del grupo Listas que quita de la lista de origen los elementos que no cumplan una determinada condición.

Origen de la instrucción: lista de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Fórmula filtro

Expresión de tipo fórmula en la que se establecerá el filtro a realizar. En la misma podremos usar campos de la tabla en curso.

Fórmula de porcentaje que realiza del proceso (opcional)

Expresión de tipo fórmula en la que se establecerá el porcentaje que que representará el filtr filtrar dentro de todo el proceso. Esta estimación debemos calcularla manualmente. Es decir, si preveemos que filtrar es el 30% del proceso, pues eso será lo que pase cuando termine del filtrar la barra de progreso.

Funcionalidad

Quita de la lista los elementos que no cumplan la condición especificada en sus parámetros. Los elementos filtrados no son borrados en la tabla de datos, sólo son quitados de la lista.

Este comando no crea ningún tipo de subproceso, es simplemente un paso que altera el contenido de la lista en curso. La siguiente función del proceso al mismo nivel tendrá como origen la lista filtrada.

Comentarios

Para facilitar la especificación de la fórmula podremos hacer uso del asistente para edición de fórmulas.

Ejemplo

Procesamos la lista de contactos de la rejilla en curso dejando los registros cuya campo #CAT (Categoría) sea igual a “1”.

Interfaz: procesar ( LST, Todas )
    Filtrar lista ( #CAT = "1",  )

Generar CSV desde lista

Comando de instrucción de proceso que convierte una lista de registros de una tabla en una cadena con formato CSV (valores separados por comas).

Origen de la instrucción: lista de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de variable local alfabética de retorno

Identificador de una variable local de tipo alfabético donde se retornará el CSV generado.

Fórmula de dato (Opcional)

Expresión fórmula con los campos a incluir en el CSV, debemos especificar cada campo con la función de campo getID, separando cada campo por una coma. Ejemplo:

"" + #ID:getID() + "," + #NAME:getID()

Si lo dejamos vacío, generará el csv con todos los campos.

Incluir identificadores en primera línea (opcional)

Nos permite configurar si queremos que se incluyan en la primera línea los identificadores de los campos (1) o no (0). Si lo dejamos vacío, los incluirá.

Fórmula de separador de registro (opcional)

Nos permite configurar qué carácter se usará para separar los registros en el CSV. Si se deja vacío, usará el salto de línea.

Fórmula de separador de campo (opcional)

Nos permite configurar qué carácter se usará para separar los campos en el CSV. Si se deja vacío, usará la coma (,), el estándar para CSV.

Formato numérico (opcional)

Nos permite configurar en qué formato que generarán los campos numéricos en el CSV. Los valores que podemos usar son:

  • "L": local.

  • "C": moneda.

  • "K": el formato que usará es en el que Velneo guarda los números internamente (sin separador de miles y usando el punto "." como separador decimal).

Si lo dejamos vacío, tomará el valor "L". Cualquier otro valor será tomado como sin formato.

Funcionalidad

Este comando de instrucción de proceso convierte una lista de registros de una tabla en una cadena con formato CSV (valores separados por comas), permitiendo definir si se incluyen todos o algunos campos. Es posible configurar los campos a incluir y los caracteres para la separación de línea y de campos.

Ejemplos

Cargar una lista y generar en memoria un CSV con todos los campos, carácter separador de líneas por defecto, carácter separador de campos por defecto y formato numérico por defecto:

Cargar lista ( MAESTROS@csv desde lista dat, ID, , , ,  )
	Generar CSV desde lista ( CSV, , , , ,  )

Cargar una lista y generar en memoria un CSV solo con los campos ID y NAME, carácter separador de líneas por defecto, usando como carácter separador de campos el punto y coma (;) y con formato numérico de moneda:

Cargar lista ( MAESTROS@csv desde lista dat, ID, , , ,  )
	Generar CSV desde lista ( CSV, #ID:getID() + "," + #NAME:getID(), , , ";", "C" )

Generar fichero CSV desde lista

Comando de instrucción de proceso que genera en disco un fichero con formato CSV (valores separados por comas) a partir de una lista.

Origen de la instrucción: lista de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Fórmula senda

Expresión fórmula con la senda completa del fichero a generar, incluyendo nombre y extensión.

Fórmula de dato (Opcional)

Expresión fórmula con los campos a incluir en el CSV, debemos especificar cada campo con la función de campo getID, separando cada campo por una coma. Ejemplo:

"" + #ID:getID() + "," + #NAME:getID()

Si lo dejamos vacío, generará el csv con todos los campos.

Incluir identificadores en primera línea (opcional)

Nos permite configurar si queremos que se incluyan en la primera línea los identificadores de los campos (1) o no (0). Si lo dejamos vacío, los incluirá.

Fórmula de separador de registro (opcional)

Nos permite configurar qué carácter se usará para separar los registros en el CSV. Si se deja vacío, usará el salto de línea.

Fórmula de separador de campo (opcional)

Nos permite configurar qué carácter se usará para separar los campos en el CSV. Si se deja vacío, usará la coma (,), el estándar para CSV.

Formato numérico (opcional)

Nos permite configurar en qué formato que generarán los campos numéricos en el CSV. Los valores que podemos usar son:

  • "L": local.

  • "C": moneda.

  • "K": el formato que usará es en el que Velneo guarda los números internamente (sin separador de miles y usando el punto "." como separador decimal).

Si lo dejamos vacío, tomará el valor "L". Cualquier otro valor será tomado como sin formato.

Funcionalidad

Este comando de instrucción de proceso genera un fichero con formato CSV en disco a partir de una lista de registros de una tabla, permitiendo definir si se incluyen todos o algunos campos. Es posible configurar los campos a incluir y los caracteres para la separación de línea y de campos.

Comentarios

Los ficheros serán codificados como UTF-8.

Ver RFC que se sigue para crear el CSV.

Ejemplos

Cargar una lista y generar en memoria un CSV con todos los campos, carácter separador de líneas por defecto, carácter separador de campos por defecto y formato numérico por defecto:

Cargar lista ( MAESTROS@csv desde lista dat, ID, , , ,  )
	Generar fichero CSV desde lista ( tempPath() + "/clientes.csv", , , , ,  )

Cargar una lista y generar en memoria un CSV solo con los campos ID y NAME, carácter separador de líneas por defecto, usando como carácter separador de campos el punto y coma (;) y con formato numérico de moneda:

Cargar lista ( MAESTROS@csv desde lista dat, ID, , , ,  )
	Generar fichero CSV desde lista ( tempPath() + "/clientes.csv", #ID:getID() + "," + #NAME:getID(), , ";", , "C" )

Generar JSON desde lista

Comando de instrucción de proceso que convierte una lista de registros de una tabla en un array de JSON en base al estándar RFC-4627, permitiendo definir si se incluyen todos o algunos campos.

Origen de la instrucción: lista de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Fórmula de dato

Expresión fórmula con los campos a incluir, debemos especificar cada campo con la función de campo getID, separando cada campo por una coma. Ejemplo:

"" + #ID:getID() + "," + #NAME:getID()

Si lo dejamos vacío, generará el json con todos los campos.

Identificador de variable local alfabética de retorno

Identificador de una variable local de tipo alfabético donde se retornará el array de JSON.

Identificador de variable local alfabética de retorno de ok (opcional)

Identificador de una variable local de tipo booleano que devolverá 1 si todo está correcto y 0 si hay errores.

Identificador de variable local alfabética de retorno de mensaje de error (opcional)

Identificador de una variable local de tipo alfabético en la que se retornará la descripción de los errores encontrados. Si no hay errores quedará vacía.

Funcionalidad

Convierte una lista de registros de una tabla en un array de JSON, permitiendo definir si se incluyen todos o algunos campos y retorna el resultado en una variable local.

Comentarios

A tener en cuenta respecto a los campos a los datos a exportar :

Los campos fórmula de cualquier tipo sí se exportan.

Los campos de tipos objeto texto, textos enriquecido, fórmula, se exportan tal cual están.

Los campos objeto dibujo y binario se exportan en base64.

Los campos numéricos se exportan con separador de punto decimal y sin separador de miles.

Los campos fecha se exportan en formato YYYY-MM-DD.

Los campos hora se exportan en formato HH:MM:SS.

Los campos tiempo se exportan en formato YYYY-MM-DDTHH:MM:SS:ZZZ

Los booleanos se exportar como true/false .

No se exportan los campos de tipo puntero indirecto real o virtual, singular de plural por índice o posición y los hermanos contiguos.

Ejemplos

En un manejador de evento de una rejilla generamos un array de JSON con los todos los campos de la tabla y lo guardamos en una variable local alfabética llamada SZ_JSON:

Generar JSON desde lista ( , SZ_JSON, BOK, SZ_ERROR )

En un manejador de evento de una rejilla generamos una array de JSON con los siguientes campos de la tabla: ID, NAME y MAE y lo guardamos en una variable local alfabética llamada SZ_JSON:

Generar JSON desde lista ( "" + #ID:getID() +"," + #NAME:getID() +"," + #MAE:getID(), SZ_JSON, BOK, SZ_ERROR )

Guardar en lista virtual

Comando de instrucción que permite guardar, o bien en memoria, o bien en disco, una lista de registros de una tabla que posteriormente podrá ser recuperada con el comando de instrucción de proceso recuperar de lista virtual.

Origen de la instrucción: lista o ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de variable local alfabética de retorno (opcional)

Si queremos guardar la lista en una variable local, la especificaremos en este parámetro. Ha de ser una variable local alfabética.

Fórmula de senda de destino (opcional)

Si queremos guardar la lista virtual en disco, en este parámetro especificaremos la senda completa del archivo a generar (incluido nombre y extensión). Podremos darle la extensión que queramos.

Funcionalidad

Este comando de instrucción permite guardar, o bien en memoria, o bien en disco, una lista de registros de una tabla que posteriormente podrá ser recuperada con el comando de instrucción de proceso recuperar de lista virtual.

Comentarios

Es importante indicar que lo que guarda es la lista con las posiciones de los registros en la tabla.

Este comando de instrucción, si bien es de lista, también podemos lanzarlo desde un origen ficha; en ese caso lo que hará será guardar una ficha de un único elemento.

Ver el capítulo listas virtuales para ampliar información sobre su funcionamiento.

Ejemplo

Desde un manejador de evento de un formulario que contienen una rejilla con multiselección guardamos tanto en memoria como en disco una lista virtual con los registos seleccionados:

Interfaz: Procesar ( LST, Seleccionadas )
	Guardar en lista virtual ( LISTA, homePath() + "/lista.vrt" )

Imprimir informe

Comando de instrucción del grupo Listas que se encarga de realizar la acción de enviar a una impresora un informe.

Origen de la instrucción: lista de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador del informe (Obligatorio)

Objeto informe cuya tabla asociada es la misma que la del origen de la línea del proceso donde estamos incluyendo este comando de instrucción.

Identificador de impresora lógica (Opcional)

Si queremos imprimir el informe en una impresora lógica en este parámetro seleccionaremos la impresora lógica de salida.

Si seleccionamos el valor .ninguno lo que mandará será la salida declarada en el objeto informe:

Si la salida del informe es cuadro selección de impresora: antes de imprimir el informe en el proceso se presentará el cuadro de selección de impresora del sistema.

Si la salida del informe es impresora por defecto: el informe será enviado directamente a la impresora por defecto del sistema.

Si la salida del informe es impresora lógica: el informe será impreso en la impresora lógica asociada al objeto informe.

Si la salida del informe es presentación preliminar: el informe será enviado directamente a la impresora por defecto del sistema.

Si la salida del informe es fichero: el informe será generado directamente en el disco en la senda y con el nombre especificado en sus propiedades.

No es posible exportar informe a fichero desde procesos ejecutados en tercer o en cuarto plano.

No es posible exportar informe a fichero desde procesos ejecutados por Velneo vModApache en Linux.

Funcionalidad

Comando de instrucción de proceso que realiza la acción de enviar a una impresora un informe.