Hola.
El otro día os comenté que copiar una Lista a una Cesta implicaba perder el orden original de la Lista y había que tenerlo en cuenta en nuestro código. El equipo de desarrollo dió una explicación nada convincente.
Imaginad que queréis pasar una Lista ordenada a un Objeto mediante Añadir lista al objeto y perdiérais el orden de la Lista. Sería un desastre, pero tranquilos, que en este caso no pasa.
Al hilo de este tema se ha retomado el problema de gestionar el Orden de las Listas que son entrada de los Informes de Velneo.
Lo que en un principio parece una cuestión banal, cuando vuelves a practicar la “ancestral técnica de Prueba y Error” a la que nos tiene acostumbrados Velneo, el problema de ordenar Listas se convierte en la bestia negra del asunto.
Disponemos de 2 comandos para Ordenar:
- El comando nativo “Ordenar lista” que solo ordena campos simples, es decir, no correspondientes a tablas maestras.
No tiene la opción de Ordenación Ascendente/Descendente. En definitiva, un “asco” de comando. - La función del API RegisterList.sort(campo1, desc, campo2, desc, …). Esta función está diseñada para ordenar como dios manda, con varios campos implicados, incluso enlazados del maestro y con la opción de Ascendente/Descendente.
La pena es que no funciona correctamente y lo más grave de todo es que Velneo no dice nada y muchos estamos perdiendo horas intentando que funcione sin resultados positivos.
Pues este es el “triste” panorama si queremos ordenar por varios campos:
- De forma nativa solo podemos hacerlo con orden Ascendente y campos no enlazados de la tabla.
- Con la función sort() del API podemos además ordenar por campos enlazados del maestro.
Cuando hay varios campos, ejecutamos un sort() por cada campo, empezando por el campo menos significativo. En este caso se respeta la ordenación de un sort() a otro, aunque yo lo tuve que ver para creerlo, ya no me fio.
La ordenación ascendente/descendente independiente de cada campo no es posible, o por lo menos yo no lo he conseguido de una forma inmediata. Lógicamente cada comando “Invertir lista” afecta al último campo ordenado, pero también a la ordenación de los anteriores. Seguramente me faltan más horas de prueba y error.
¿Cómo ordenamos una lista por los campos campo1 desc, campo2 asc, campo3 desc?
¿Habrá algún algoritmo matemático que consiga obtener ese resultado combinando los comandos Ordenar/sort() e Invertir/invert().?
Si alguién puede aportar algo de conocimiento …
Saludos
Paco Satué