Unir varias listas de SharePoint en una galería

 Tenemos 3 listas de SharePoint.


Las 3 listas tienen la misma estructura de campos, solo varia la información contenida.


Insertaremos una galería vertical.


Si queremos utilizar colecciones para el llenado, crearemos las colecciones en el evento OnVisible de la ventana.


En el evento Item de la galería llamaremos la colección unir_Articulos.


Ahora crearemos 3 etiquetas para llamar los campos de la colección.


Al ejecutar la ventana se visualizará todos los registros de las 3 listas.


Esta es la forma más recomendada, si las listas de SharePoint tienen más de 3000 registros cada una, la forma recomendable es la siguiente.

Coloca el siguiente código en la propiedad OnVisible de la ventana o en el evento OnStart de la app, si quieres que no sea lenta la visualización colócalo en el OnStart para que se ejecute al iniciar la app.

1. Limpiamos la colección principal

Clear(colTodosLosArticulos);

2. Cargar Lista 1 en bloques de 2000 (Bloque 0-2000 y 2000-4000)

ClearCollect(colTemp1, articulos1);

With(

    { UltimoID: Last(colTemp1).ID },

    Collect(colTemp1, Filter(articulos1, ID > UltimoID))

);

3. Cargar Lista 2 en bloques de 2000

ClearCollect(colTemp2, articulos2);

With(

    { UltimoID: Last(colTemp2).ID },

    Collect(colTemp2, Filter(articulos2, ID > UltimoID))

);

4. Cargar Lista 3 en bloques de 2000

ClearCollect(colTemp3, articulos3);

With(

    { UltimoID: Last(colTemp3).ID },

    Collect(colTemp3, Filter(articulos3, ID > UltimoID))

);

5. Unir y estandarizar las 3 listas dentro de la colección final

Collect(

    colTodosLosArticulos,

    ForAll(colTemp1, {Folio: Folio, Articulo: Articulo, Empresa: Empresa}),

    ForAll(colTemp2, {Folio: Folio, Articulo: Articulo, Empresa: Empresa}),

    ForAll(colTemp3, {Folio: Folio, Articulo: Articulo, Empresa: Empresa})

);

6. Limpiar colecciones temporales para liberar memoria

Clear(colTemp1);

Clear(colTemp2);

Clear(colTemp3);


En la propiedad Items de la Galería, teclea: colTodosLosArticulos


¿Cómo funciona este método?

  • Evita la trampa de delegación: El operador Filter(articulos, ID > UltimoID) sí es delegable en SharePoint. Esto le permite a Power Apps traer los primeros 2000 registros y luego hacer una segunda llamada para traer del registro 2001 en adelante.

  • Combina 9,000 registros sin errores: Al usar ForAll dentro de Collect, homogeniza la estructura de los campos (Folio, Articulo, Empresa) eliminando cualquier conflicto de metadatos de SharePoint.

  • Máximo rendimiento: La galería cargará los 9,000 registros de forma instantánea al desplazarte, ya que los datos residen en la memoria local del dispositivo.

Nota: Recuerda ir a Configuración de la App > Configuración general > Límite de filas de datos no delegables y asegurarte de que esté configurado en 2000 (el máximo permitido).







Publicar un comentario

Artículo Anterior Artículo Siguiente