Hola a todos.
Saludos desde Argentina.
Hemos querido instalar la versión V35, pero afortunadamente, dado que Velneo ha anunciado la implementación del nuevo motor de javascript, antes de realizar la actualización en todos nuestros equipos y en los de los clientes, hemos probado el funcionamiento de las algunas de las funciones javascript que utilizamos en nuestras aplicaciones.
Digo afortunadamente porque, al probar, hemos detectado que la instrucción theApp.appendToBasket(cesta, registro) provoca que se cierre la aplicación sin mensaje alguno.
Después de diferentes pruebas, complicadas por el hecho de ya no tener un depurador para javascript, pudimos determinar que el problema radica en que, según la documentación, se puede ejecutar la instrucción tanto pasando como segundo parámetro un registro como la lista de registros, pero aparentemente sólo funciona cuando se le pasa la lista.
Si se pasa el registro, se produce el error comentado.
Esto funcionaba perfectamente con el antiguo motor javascript.
Preparamos una solución sencilla donde se hacía uso de esa funcion javascript y se comprobaba que hasta la V34 funcionaba y en la V35 ya no, y la enviamos a Soporte, donde nos confirmaron el error y nos comunicaron que ya está solucionado para la próxima versión, pero no para ésta.
La respuesta fue “de momento para la version V35 no existe solucion ya que dicho fallo esta corregido para la proxima version, la solucion en la V35 es activar una clave beta para que el vClient no utilice el nuevo motor de javaScript sino utilice el antiguo pero mas alla que eso lamentablemente no hay solucion en dicha version.”
Compartimos esto por un lado, por si alguien utiliza esta instrucción que no lo sorprenda si le deja de funcionar el código al instalar la V35, y por otro lado porque podríamos resolver la incidencia adaptando el código para que en vez de pasar la ficha, se genere una lista con esa sola ficha y se pase la lista en vez de la ficha, pero no logramos que funcione esa adaptación (quizá estemos haciendo algo mal, en cuanto a javascript “tocamos de oído”), o mejor dicho, funciona en algunos casos y en otros no.
Un ejemplo sencillo de todo esto sería el siguiente:
var cesta = “PruebaJS_App/CST_REG”;
var fila = theRoot.varToDouble(“FILA”);
var desde = fila - 1;
var hasta = theRegisterListIn.size();
for (var ii=desde; ii<hasta ;ii++){
var registro=theRegisterListIn.readAt(ii);
theApp.appendToBasket(cesta, registro);
};
Básicamente, se llama a esta función desde una rejilla donde previamente se carga en la variable FILA la fila actual, y el código debe devolver en la cesta CST_REG las fichas de la rejilla desde la fila actual hasta la última.
Lo importante no es en realidad lo que hace la función ya que es solo de ejemplo, lo imporante es el uso de la instrucción theApp.appendToBasket(cesta, registro) que en la V35 no funciona.
El punto es que comprobamos que si en vez de una ficha se le pasa una lista, ya no se cierra la aplicación.
Una nueva versión para este código sería:
var cesta = “PruebaJS_App/CST_REG”;
var fila = theRoot.varToDouble(“FILA”);
var desde = fila - 1;
var hasta = theRegisterListIn.size();
for (var ii=desde; ii<hasta ;ii++){
var registro=theRegisterListIn.readAt(ii);
var lista = new VRegisterList(theRoot);
lista.append(registro);
theApp.appendToBasket(cesta, lista);
};
Este código no provoca el cierre de la aplicación en la V35, pero extrañamente no siempre funciona.
En algunos casos se ejecuta pero la cesta queda vacía cuando debería contener registros.
Aparentemente la instrucción lista.append(registro); no siempre agrega correctamente la fiicha a la lista, y por ende, la siguiente instrucción agrega una lista vacía a la cesta.
Esto que enviamos, como dije, es una muestra sencilla para que se viera el error, pero el uso que le damos a esa instrucción es mucho mayor.
Tenemos un proyecto base con funciones javascript que lo utizamos heredándolo en todas nuestras soluciones y en muchas de esas funciones hacemos uso de esta instrucción theApp.appendToBasket().
La realidad es que no podemos pasar a la versión 35 hasta tanto esté resuelta está incidencia.
Si alguien tiene alguna idea de como adaptar el código para poder agregar fichas de a una a la cesta salvando este error de la V35, se agradece, pues así podríamos aplicarlo en nuestras funciones base y pasar a la V35 sin tener que esperar a la próxima versión de Velneo.
Desde ya muchas gracias.
Saludos cordiales.
Pablo Genchi