jueves, 15 de septiembre de 2011

3 de 3 y con 3 diferentes

A pesar de la frustracion de no haber podido estar en el #GX21 ayer fue un dia interesante a nivel de logros personales. 3 de 3 y con 3 versiones distintas. A la mañana con la version 8, a la tarde con la version 9  y esta noche/madrugada con a Ev1.

El primer logro fue mas bien un tema de encontrar el problema. Un reporte que antes funcionaba bien y "de repente" dejo de funcionar. Detectamos algunos problemas con los parametros, los corregimos y nada... seguia igual de pesado y sin terminar. Entonces con la ayuda del jdbc.log y mucha paciencia (se trataba de un proceso con muchos registros, mas de seis mil) pudimos ubicar unos 16 registros que presentaban anomalias en la confirmación de un atributo codigo que inducia a un bucle infinito. Corregidos los datos, se soluciono el problema. Edgar 1 - Problemas 0.

El segundo desafio se presento a la tarde en otro cliente. Con la 9. En un webpanel (heredado) en el que se actualizaban direcciones de clientes mediante BC, habia que implementar una alerta del tipo "Esta Ud. seguro de modificar los datos?" al momento de hacer clic en el botón correspondiente. Hasta ahi no habia problemas ya que con el metodo .jsevent(...) se logra eso. Lo que realmente fue un desafio es hacer que el mensaje incluya cuales direcciones habian cambiado (habia tipos de direcciones en el form: Particular, Laboral y Alternativa). La solucion vino por el lado de javascript:
  1. Cree un textblock con formato html al final del webform
  2. Le asocie un codigo html que incluia el script que realizaba la validacion sobre tres variables recibidas (una para cada tipo de direccion) y retornaba un string con la lista de direcciones que habian cambiado.
  3. En el jsevent del boton "Enter" puse algo asi como button1.jsevent(("onclick","confirm(validardirecciones("+&Dirpart.InternalName+".value, "+&Dirlab.InternalName+".value, "+&Diralt.InernalName+".value)"). Es interesante mencionar el uso de la propiedad InernalName en este caso.
Con estos cambios conseguimos hacer que el usuario reciba lo que estaba pidiendo. Edgar 2 - Problemas 0.

El ultimo problema se me planteo en casa con el trabajo de mi esposa. Genexus Ev1 - K2B Tools Patterns.

Dadas dos transacciones "Expedientes" y "Movimientos de Expedientes"  se planteó la necesidad de que los filtros del wwexpedientes incluyan atributos de movimientos. Es decir que se pueda filtrar por ej. por la fecha del movimiento y ver solo los expedientes que se movieron en una fecha dada. Esto se solucionaria incluyendo el atributo fecha de movimiento en la lista de atributos del nodo WorkWith Expedientes, pero si un expediente tuvo mas de un movimiento en el mismo dia, saldria repetido y eso no era lo que se esperaba. Luego de buscar muchas alternativas (es una lastima que en las grillas no se pueda incluir la clausula distinct o que se pueda hacer uso del operador in dataselector) se me ocurrio hacer una prueba: Incluir un for each el evento load de la grilla (algo que muy acertadamente nos disponibiliza el k2b tools pattern). Con esto se fuerza el corte de control y se eliminan los registros duplicados. Edgar 3 - Problemas 0.

3 de 3 y con 3 diferentes.