Hola.
A pesar de que en la info está documentado que se pueden usar Variables Globales de tipo Array unidimensional, no encontraba la forma de asignar valores a dicho Array.
Consultado a soporte, me confirman que es un error de la documentación y que aunque se pueden leer los valores de un Array global desde Velneo, la asignación de valores solo se puede realizar a través del API. Esto sí que es un verdadero MIX de código Velneo y Javascript.
El uso de un Array Global nos facilita la gestión de determinada información al poder agrupar N-variables globales en una sola.
Pongo un ejempo:
Hemos creado en el proyecto de datos una variable global en memoria G_CONEXION de tipo Array y de 1 dimension. La dimensión se irá adaptando al número de elementos creados. Disponemos de 2 funciones Velneo para Inicializar los valores del Array y para obtener un determinado elemento del Array
Script PRO_JS_CONEXION_INI - Fija los elementos del Array
// Usuario conectado
theApp.setGlobalVarArray(“0PS_Ejercicios_dat/G_CONEXION”,0,theApp.userName());
// ¿Es administrador?
theApp.setGlobalVarArray(“0PS_Ejercicios_dat/G_CONEXION”,1,theApp.isAdministrator()?“Sí”:“No”);
// Fecha-Hora de la conexión
var f = new Date();
var dias_semana = new Array(‘domingo’,‘lunes’,‘martes’,‘miércoles’,‘jueves’,‘viernes’,‘sábado’);
var fecha = dias_semana[f.getDay()]
+ " " + f.getDate() + “/” + (((f.getMonth()+1)<10?“0”:"")) + (f.getMonth() + 1) + “/” + f.getFullYear()
+ " " + ((f.getHours()<10)?“0”:"") + f.getHours() + “:” + ((f.getMinutes()<10)?“0”:"") + f.getMinutes();
theApp.setGlobalVarArray(“0PS_Ejercicios_dat/G_CONEXION”,2,fecha);
//theApp.setGlobalVarArray(“0PS_Ejercicios_dat/G_CONEXION”,2,f.toLocaleString());
// Código de Pais
theApp.setGlobalVarArray(“0PS_Ejercicios_dat/G_CONEXION”,3,theApp.sysCountryIsoCode());
// Nombre de máquina
theApp.setGlobalVarArray(“0PS_Ejercicios_dat/G_CONEXION”,4,theApp.sysMachineName());
Script PRO_JS_CONEXION_GET - Obtiene un elemento del Array G_CONEXION
// Devuelve el valor del elemento del Array G_CONEXION pasando como parámetro un String CVALOR que describe la información solicitada
var aValores = new Array(“USER”,“ISADMIN”,“DATELOGIN”,“COUNTRY”,“MAQUINA”)
var cValor = theRoot.varToString(“CVALOR”)
var pos = aValores.indexOf(cValor)
// Devuelve en VRETORNO el valor del elemento del Array
theRoot.setVar(“VRETORNO”,theApp.globalVarArrayToString(“0PS_Ejercicios_dat/G_CONEXION”,pos))
En el proyecto de Aplicación podremos usar:
Mensaje(
"Usuario - " + fun:FUN_G_CONEXION_GET@0PS_Ejercicios_dat.dat(“USER”) + “\n” +
"Administrador - " + fun:FUN_G_CONEXION_GET@0PS_Ejercicios_dat.dat(“ISADMIN”) + “\n” +
"Conectado el - " + fun:FUN_G_CONEXION_GET@0PS_Ejercicios_dat.dat(“DATELOGIN”) + “\n” +
"Código de país - " + fun:FUN_G_CONEXION_GET@0PS_Ejercicios_dat.dat(“COUNTRY”) + “\n” +
"Máquina - " + fun:FUN_G_CONEXION_GET@0PS_Ejercicios_dat.dat(“MAQUINA”), Informacion)
Aunque esto no sustituye a la versatilidad de las tablas en disco, facilita la gestión de aquella información que solo existe mientras dura la sesión.
Por supuesto, tener en cuenta que las variables Globales no se replican en el servidor.
Saludos
Paco Satué