Autor Tema: Error en formulario multilínea - Clave no numerica  (Leído 680 veces)

0 Usuarios y 1 Visitante están viendo este tema.

mfalemany

  • Newbie
  • *
  • Mensajes: 37
    • Ver Perfil
    • Email
  • Institución: Facultad de Ciencias Agrarias - UNNE
  • Nombre y apellido: Marcelo Federico Alemany
  • Utilizo algun sistéma del SIU: Sí
Error en formulario multilínea - Clave no numerica
« on: Agosto 14, 2020, 03:08:00 pm »
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:
Código: [Seleccionar]
Línea 83: ef.cuando_cambia_valor(this._instancia + '.validar_fila_ef(' + fila + ',"' + id_ef + '", true)');Ahora:
Código: [Seleccionar]
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!
Federico Alemany
Universidad Nacional del Nordeste

richard

  • Moderador Global
  • *****
  • Mensajes: 3035
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:Error en formulario multilínea - Clave no numerica
« Respuesta #1 on: Agosto 14, 2020, 06:30:52 pm »
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
Twitter es al incontinente verbal,  lo que los dulces al diabetico.