📄 Uso de Filtros Custom en Exportaciones Excel (GeneXus + Work With Plus)

📄 Uso de Filtros Custom en Exportaciones Excel (GeneXus + Work With Plus)

🧩 Problema

Al trabajar con exportaciones a Excel/PDF generadas por el patrón Work With Plus (WWP) en GeneXus, se detectó el siguiente comportamiento:

  • ✅ Los filtros estándar del grid (los del pattern) se aplican correctamente en el Excel.
  • ❌ Los filtros personalizados (custom) creados manualmente no se aplican en el export.

Esto genera inconsistencias entre:

  • Lo que el usuario ve en pantalla
  • Lo que realmente se exporta

🔍 Causa raíz

El problema ocurre porque:

  • Los filtros estándar se guardan automáticamente en el GridState y se reutilizan en el procedimiento de exportación mediante el Data Selector.
  • Los filtros personalizados NO forman parte del GridState.
  • Aunque se guarden en Session, no se están cargando en el procedimiento de exportación.

👉 Resultado: en el export, las variables de filtros custom están vacías.


⚠️ Ejemplo del problema

En el Web Panel:

&Session.Set(!"CUSTOM_FILTER_PERARS", &PERARS)

Pero en el Procedure (VAuMAeWWExport):

// Nunca se recupera el valor
&PERARS = ''  // vacío

Entonces esta condición:

Where upper(PERARS) like '%' + upper(&PERARS) + '%'
when Trim(&PERARS) <> ''

👉 NO se ejecuta


✅ Solución

✔ Paso 1: Guardar filtros custom en Session 

Esto debe ir en el evento de llamada al procedimiento Export/ExportReport, previo al código generado por WWPlus

&Session.Set(!"CUSTOM_FILTER_PERARS", &PERARS)
&Session.Set(!"CUSTOM_FILTER_PFINOM", &PFINOM)
&Session.Set(!"CUSTOM_FILTER_CALDESSCOR", &CalDesCor)
&Session.Set(!"CUSTOM_FILTER_VAUPTAENV", &VauPtaEnv.ToString())
&Session.Set(!"CUSTOM_FILTER_IDBIEN", &IdBien.ToString())
&Session.Set(!"CUSTOM_FILTER_VAUNROMOT", &VauNroMot)

✔ Paso 2: Recuperar filtros en el Procedure de Export

Agregar en el LoadGridState de la transacción a modificar y en los Procedure de Exporty ExportReport(este código debe ir al final, por debajo del creado por WWPlus):

&PERARS    = &Session.Get(!"CUSTOM_FILTER_PERARS")
&PFINOM    = &Session.Get(!"CUSTOM_FILTER_PFINOM")
&CalDesCor = &Session.Get(!"CUSTOM_FILTER_CALDESSCOR")
&VauPtaEnv = Val(&Session.Get(!"CUSTOM_FILTER_VAUPTAENV"))
&IdBien    = Val(&Session.Get(!"CUSTOM_FILTER_IDBIEN"))
&VauNroMot = &Session.Get(!"CUSTOM_FILTER_VAUNROMOT")

📌 Nota importante

Esta solución se basa en la transacción VAuMAe, incluyendo sus procedimientos Export y ExportReport.

 
Deja un comentario 2

Your email address will not be published. Campos requeridos marcados *


Tomas Ghersinich

Tomas Ghersinich

Gracias por la info!!

Joaquin Savini

Joaquin Savini

de nada máquina!