Error en formulario multilínea - Clave no numerica

Buenas tardes, les comento que acabo de tener el siguiente problema: (Toba v2.7.13).
Tengo un formulario ML con personas (el primer ef del formulario es de tipo ef_popup). Al abrirse el popup (que permite la búsqueda de personas) y al seleccionar una, el popup devuelve el DNI de la persona seleccionada.

Al guardar (evento del CI), se disparaban los eventos implícitos de todos sus formularios hijo (hay varios), menos del ML que menciono.

Buscando el problema encontré que una de las personas tenía un “Pasaporte”, es decir, un campo no numérico (tiene una letra), y esto generaba un error en el javascript del formulario_ml (código propio de Toba), en el archivo www/js/componentes/ei_formulario_ml.js. Allí, en la línea 83 (dentro de la definición del método “iniciar_fila”) se llama al método ef.cuando_cambia_valor(), y dentro de sus argumentos, se hace referencia a la función “validar_fila_ef” que recibe el valor de la variable “fila”. Tuve que agregar unas comillas simples para que no se produjera el error mencionado, quedando de la siguiente manera:
Antes:

Línea 83: ef.cuando_cambia_valor(this._instancia + '.validar_fila_ef(' + fila + ',"' + id_ef + '", true)');

Ahora:

Línea 83: ef.cuando_cambia_valor(this._instancia + '.validar_fila_ef(\'' + fila + '\',"' + id_ef + '", true)');

Es decír, se agregan unas comillas (escapadas) al paso de la variable “fila”.

Dejo planteado el inconveniente, por si corresponde una corrección.
Abrazo!

Hola Marcelo,

por lo que veo no deberia haber manera de que quede una clave no numerica en dicho lugar, lo unico que se me ocurre es que estes utilizando el nro del documento como indice del arreglo que luego le entregas al formulario, calculo que ese puede ser el caso.

No es un caso aislado de dicha funcion, en realidad hay que cambiar varias partes del manejo de filas que hace internamente el componente… sin ir mas lejos la funcion que instancia_ef va a tener el mismo problema.

El tema con usar valores alfanumericos en dicho lugar, es que no cambia unicamente el lanzamiento de dicho evento, si utilizaras el ordenamiento… claramente seria poco intuitivo con valores alfanumericos alli, por otra parte si alguno de dichos valores contuviera un ‘_’ interferiria con el envio de los ids de filas con lo cual terminaria en una excepcion.

Ya se, no es el caso actual… pero me refiero al hecho de utilizar valores alfanumericos como clave, hoy no se da… mañana quizas si, una opcion para que no tengas que cambiar demasiado podria ser la siguiente:

  • Tener el Nro de Documento como una columna mas del form (inclusive ef_oculto si no queres que se modifique).
  • Dejar el arreglo interno como esta y luego en el conf__formulario podes hacer ->set_datos(array_values($datos)), lo cual los enviaria con indice numerico… en la modificacion podes recuperar el nro de documento y seguir accediendo directamente al arreglo interno.

Saludos