# Agregar Lista a la Cesta y Orden de Lista

**URL:** <https://foros.velneo.com/t/agregar-lista-a-la-cesta-y-orden-de-lista/8654>\
**Category:** Velneo\
**Created:** [27 Enero, 2016 12:46 UTC](https://foros.velneo.com/t/agregar-lista-a-la-cesta-y-orden-de-lista/8654 "2016-01-27T12:46:11Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [27 Enero, 2016 12:46 UTC](https://foros.velneo.com/t/agregar-lista-a-la-cesta-y-orden-de-lista/8654/1 "2016-01-27T12:46:11Z")

</div>

Hola.

Estaba programando una rutina para preparar la Lista con Agrupamientos, destinada a ser la entrada de un Informe personalizado de VReport.

El procedimiento consiste en:

- Crear Cesta cesInforme
- N-Iteraciones de Cargar lista para obtener los registros de cada Agrupamiento ordenados por un determinado Campo  
– Cesta: Cargar lista
- Cesta: Procesar cesInforme
- Informe personalizado

Bien, pues el orden de los registros dentro de cada Agrupamiento no se respeta al pasar la Lista a la Cesta, en realidad solo se respeta en la primera Iteración, es decir, si tenemos 5 agrupaciones solo estará ordenada la primera.

Consultado a Soporte, no es un error, es el ¡¡funcionamiento correcto!! para optimizar el traspaso de Fichas.

La solución para respetar el Orden es cargar la Lista de registro en registro:

- Recorrer lista solo lectura  
— Cesta: Añadir ficha

El resultado final es que tengo que usar un procedimiento poco óptimo (Recorrer lista) porque el equipo de desarrollo ha querido optimizar el traspaso de Fichas sin respetar el Orden establecido.

En fin, os lo comento para que lo tengáis en cuenta: en el traspaso de Listas a la Cesta se puede perder el Orden que tengamos previamente.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![manuel.rd](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/manuel.rd/32/3508_2.png) [@manuel.rd](https://foros.velneo.com/u/manuel.rd)\
**Post date:** [27 Enero, 2016 13:09 UTC](https://foros.velneo.com/t/agregar-lista-a-la-cesta-y-orden-de-lista/8654/2 "2016-01-27T13:09:19Z")

</div>

Muchas gracias Paco.

Curioso comportamiento.

Dentro de la ignorancia, no te sirve un cargar lista solo, ordenar y enviar al informe?

---

<div class="post-metadata">

**Author:** ![overall](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/overall/32/5437_2.png) [@overall](https://foros.velneo.com/u/overall)\
**Post date:** [27 Enero, 2016 14:26 UTC](https://foros.velneo.com/t/agregar-lista-a-la-cesta-y-orden-de-lista/8654/3 "2016-01-27T14:26:40Z")

</div>

Hola,  
Tenemos un problem en vReport con el Orden en que queremos presentar los registros y sus agrupaciones.  
Ahora, si creas un informe y le añades distintas Cabeceras, nunca te ordena en función de las Cabeceras, sino el orden te lo da la lista de salida. Un serio problema. Ya que si tenemos una lista con x registros y queremos imprimir un informe vReport, antes tendremos que ordenar los registros según las agrupaciones que tenga el informe. Dile a un Cliente que se dedique a ordenar la lista varias veces según el informe que vaya a imprimir.  
Yo tengo definidos los informes vReport en una tabla, y el Usuario selecciona el informe según criterios de tabla. Hay muchos informes y cada uno tiene distintas agrupaciones.  
En su dia se hizo un pequeño proceso en JavaScript que ordenaba el informe según las agrupaciones, pero se ve que hay un bug de Velneo que solo ordena la primera agrupación ([paso foro](http://velneo.es/foros/topic/vreport-orden-en-los-informes/) :

```auto
var list = theRegisterListIn;
var regex = /(?:groupExp=")(?:\w+\.)?(\#\w+(\.\w+)*)/gi
var myArray;
var sort = "";

while ((myArray = regex.exec(theRoot.varToString("INF_DEF" ))) !== null){
	(sort != "" )? sort+=";" : sort;
	sort += myArray[1].replace("#", "");
	//alert(sort);
}
list.sort( sort ); // No funciona con varios campos y la documentación...
theRegisterListOut.append( list );

```

De momento es un verdadero incordio y quebradero de cabeza.  
Saludos

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [27 Enero, 2016 15:29 UTC](https://foros.velneo.com/t/agregar-lista-a-la-cesta-y-orden-de-lista/8654/4 "2016-01-27T15:29:05Z")

</div>

Hola Luis.

Ya quedó claro en [ese hilo](http://velneo.es/foros/topic/vreport-orden-en-los-informes/) que VReport no ordena, ni lo hace vReport ni ningún motor de Informes que yo haya usado.

Simplemente tenemos que alimentar al informe con una Lista ya agrupada y ordenada. El motor de VReport recorrerá la Lista de inicio a fin secuencialmente, creando las cabeceras/pies de los agrupamientos e imprimiendo los Detalles.

Agrupar y ordenar cualquier lista en Velneo es muy fácil, ¡como debe de ser!.

Para ilustrar el caso que he comentado anteriormente, pongo un ejemplo para ver que a veces no sirve con Cargar lista -\> Ordenar campos -\> Imprimir.

Supongamos una tabla con 3 tipos de operaciones Ventas-V, Gastos-G e Ingresos-I (TIPO\_OPE). Dentro de cada operación habrá diferentes Conceptos de Ventas (Ventas en caja, Ventas en máquinas, …), Gastos (Gastos documentados, Personal, Anticipos, …) e Ingresos (Efectivo, Visa, AmericanExpress, …) (TIPO\_CON).

Queremos sacar un Informe con todas las Operaciones agrupadas por Ventas, Gastos e Ingresos y dentro de cada agrupación a su vez agrupadas por Conceptos.

Los requisitos son que el Usuario decidirá el Orden en que aparecen los tipos de Operaciones, es decir, puede querer la secuencia Ventas-Ingresos-Gastos o Ingresos-Ventas-Gastos.

Por lo tanto tenemos 2 campos de ordenación TIPO\_OPE y TIPO\_CON. La pega es que el campo TIPO\_OPE tiene ordenación arbitraria, decidida por el usuario y por esta razón no podemos usar Cargar lista -\> Ordenar campos -\> Imprimir.

Así que no nos queda más remedio que:

- El Usuario decide la secuencia Ingresos-I , Ventas-V, Gastos-G.  
Cesta crear cesInforme  
Cargar TIPO\_OPE = “I”  
Ordenar por TIPO\_CON  
Recorrer lista solo lectura (¡¡OJO!! no funciona Cesta: Añadir lista, se pierde el Orden)  
– Cesta: Añadir ficha  
Cargar TIPO\_OPE = “V”  
Ordenar por TIPO\_CON  
Recorrer lista solo lectura  
– Cesta: Añadir ficha  
Cargar TIPO\_OPE = “G”  
Ordenar por TIPO\_CON  
Recorrer lista solo lectura  
– Cesta: Añadir ficha  
Cesta: Procesar cesInforme  
Imprimir informe personalizado

Necesitamos una Cesta obligatoriamente para ir volcando los tres TIPO\_OPE (I,V,G) en el orden decidido por el Usuario.

Por supuesto podemos automatizar el proceso con un Array que rellena el Usuario:  
Array: Insert item (ATIPO\_OPE, “I”)  
Array: Insert item (ATIPO\_OPE, “V”)  
Array: Insert item (ATIPO\_OPE, “G”)  
For (N, 0, N\<3, 1)  
– Cargar TIPO\_OPE = ATIPO\_OPE[N]  
– Ordenar por TIPO\_CON  
– Recorrer lista solo lectura (¡¡OJO!! no funciona Cesta: Añadir lista, se pierde el Orden)  
---- Cesta: Añadir ficha

Tened en cuenta que las operaciones entre Listas y Cestas son muy rápidas, se ejecutan en primer plano en memoria y solo se copian los punteros de tabla. Por lo tanto no hay problema de montar un Informe con varios niveles de agrupamiento cuyo orden sea arbitrario como en este caso.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![overall](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/overall/32/5437_2.png) [@overall](https://foros.velneo.com/u/overall)\
**Post date:** [28 Enero, 2016 07:36 UTC](https://foros.velneo.com/t/agregar-lista-a-la-cesta-y-orden-de-lista/8654/5 "2016-01-28T07:36:18Z")

</div>

Hola Paco,  
Razón tienes cuando dices que ordenar una lista es juego de niños, pero… Te pongo un ejemplo que sucede a menudo y no sólo en Velneo sino en muchas plataformas.  
A los clientes les damos la facilidad de poder crear o personalizar informes. Aquí no entra nuestra intervención, solo ésta el cliente.  
Ejemplo; quieren sacar un informe de la tabla facturas, y como siempre, sacan por pantalla los registros que quieren imprimir (inicialmente sale ordenada la lista última factura la primera, orden fecha invertida). Desde esta rejilla de pueden imprimir un sinfín de informes y cada uno con distintas agrupaciones o orden.  
Como lo hacemos? Que le digo al cliente?  
Lo que no se puede hacer es un proceso por cada informe. Que sentido tiene el personalizar de informes si nunca salen bien ordenados?  
No creo que sea el único que tenga este problema, no?  
Saludos

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [28 Enero, 2016 09:51 UTC](https://foros.velneo.com/t/agregar-lista-a-la-cesta-y-orden-de-lista/8654/6 "2016-01-28T09:51:45Z")

</div>

Hola Luis.

Estás planteando un problema de Interface. El usuario no solo dispone de una Rejilla en la que puede hacer agrupaciones y ordenaciones a voluntad, sino que además quiere reflejar el resultado en un Informe.  
Tendríamos que disponer de una Rejilla mucho más avanzada de la que disponemos ahora en Velneo y con un motor que generara la estructura XML de vReport. Pongo un ejemplo del XML generado por el diseñador de vReport:

```auto

<?xml version="1.0" encoding="UTF-8"?>
<NCReport version="2.13.0" name="Estructura xml del Informe" type="report">
    <options>
        <encoding>UTF-8</encoding>
		...
		<subReportOnNewPage>true</subReportOnNewPage>
    </options>
    <datasources>
        <datasource id="DATA_1" ... > ... </datasource>
    </datasources>
    <variables>
        <variable id="VAR_1" type="num" ... > ... </variable>
		...
	</variables>
    <pageheader id="PH" ... >
		...
    </pageheader>
    <pagefooter id="PF" ... >
    <reportheader id="RH" height="16">
		...
    </reportheader>
    <details>
        <detail id="DETALLE_1" ... >
            <items>
				...
            </items>
            <groups>
                <group id="GRUPO_1" ... >
                    <groupheader id="GH_GRUPO_1" ... > ... </groupheader>
                </group>
                <group id="GRUPO_2" ... >
                    <groupheader id="GH_GRUPO_2" ... > ... </groupheader>
                    <groupfooter id="GF_GRUPO_2" ... > ... </groupfooter>
                </group>
            </groups>
        </detail>
    </details>
</NCReport>

```

Por lo tanto, estamos hablando de diseñar un programa que haga lo siguiente:

- El usuario agrupa y ordena las filas/columnas en una Rejilla avanzada
- Una vez el usuario finaliza, analizamos la Lista resultante con la estructura de agrupaciones/ordenaciones
- Generamos un XML compatible con el motor de Informes de NCReport (léase VReport)

Generar el XML es fácil porque es puro texto.  
Quizás lo más complicado es diseñar un sistema de plantillas XML con todos los Items de los Detalles/Agrupaciones/Cabeceras/Pies preparadas únicamente para decidir la estructura de agrupaciones/ordenaciones.

Reconozco que sería un Plugin estupendo para Velneo.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![overall](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/overall/32/5437_2.png) [@overall](https://foros.velneo.com/u/overall)\
**Post date:** [28 Enero, 2016 10:34 UTC](https://foros.velneo.com/t/agregar-lista-a-la-cesta-y-orden-de-lista/8654/7 "2016-01-28T10:34:56Z")

</div>

Hola Paco,  
Gracias por tu respuesta.  
Gracias al aporte de Wikan en el artículo del foro “[vReport - Orden en los informes](http://velneo.es/foros/topic/vreport-orden-en-los-informes/)” podemos disfrutar del orden correcto en las agrupaciones que creamos en los informes de vReport.  
Saludos

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [28 Enero, 2016 10:53 UTC](https://foros.velneo.com/t/agregar-lista-a-la-cesta-y-orden-de-lista/8654/8 "2016-01-28T10:53:31Z")

</div>

Hola Luis.

Me alegro mucho, problema resuelto entonces.  
Así da gusto el foro, solucionando problemas reales.

Saludos  
Paco Satué
