Hola.
El otro día os planteaba lo peligroso que puede llegar a ser que el editor de fórmulas evalúe las expresiones Javascript en vDevelop, ahora he descubierto que también las evalúa la opción Recalcular Errores.
Hoy he tenido otra mala experiencia (y ya van varias con la 7.15) que quisiera que me confirméis antes de trasladarlo a soporte. Yo estoy en la parte derecha de la campana de gauss y no quiero ganarme el título de tocapelotas.
Por favor comprobad lo siguiente:
Tenemos un proyecto de datos Proyecto01.dat con la tabla PERSONAS y el siguiente fichero JavaScript JS_AñadirRegistros.js que ejecutamos en 3P y añade un registro:
var oRegistro = new VRegister(theRoot)
oRegistro.setTable(“Proyecto01/PERSONAS”);
var nuevaTrans = false;
var hayTrans = theRoot.existTrans();
if ( hayTrans == false ) { var nuevaTrans =
theRoot.beginTrans( ‘Añadiendo registros a la tabla PERSONAS’ )};
oRegistro.setField(‘APELLIDO’,‘SATUÉ’)
oRegistro.addRegister()
if ( nuevaTrans ) { theRoot.commitTrans(); };
Ahora cread una Solución nueva con otro proyecto de datos Proyecto02.dat. Copiar la tabla PERSONAS y el fichero JS_AñadirRegistros.js
Ahora ejecutar de nuevo JS_AñadirRegistros.js en 3P sin tocar nada del código. Veréis que hay un error ya que oRegistro.setTable(“Proyecto01/PERSONAS”); hay que cambiarlo por oRegistro.setTable(“Proyecto02/PERSONAS”);
Este error en mi caso provoca que el servidor de pare, sí, el servicio VATP del vServer se para, como siempre y es gravísimo, lo hace silenciosamente y sin gritos.
Hay que decir que en 1P el código se ejecuta sin error y aparece una transacción terminada y vacía.
Conclusiones:
Yo ya expresé en su momento que gestionar las Referencias a los objetos de Velneo en JavaScript mediante LITERALES trae problemas de mantenimiento y detección de errores. Solo hay que ver el procedimiento de adaptación del módulo de personalización del nuevo vERP a nuestras aplicaciones.
Solución temporal:
Volver a las prácticas ancestrales de creación de código, es decir, comprobar errores constantemente:
oRegistro.setTable(“Proyecto01/PERSONAS”);
if (oRegistro.tableInfo().idRef().length == 0) {
lError = true
theRoot.setVar(‘CERROR’,‘La tabla PERSONAS no es accesible’)
}
Simplemente quiero con este ejemplo hacer ver la pérdida de funcionalidades que tenemos respecto a la Depuración de código cuando usamos JavaScript. Velneo nos acostumbra mal porque está muy asistido, pero en JavaScript tenemos que descambiar el chip.
Nos os olvidéis de comprobar este posible bug.
Saludos
Paco Satué