🟢 Introducción

¿Tienes fórmulas largas y difíciles de leer en tu aplicación Canvas? 🤯

La función With() te permite definir variables temporales dentro de una sola fórmula, mejorando la claridad, el rendimiento y el mantenimiento del código.

Es una herramienta perfecta para simplificar cálculos, evitar variables globales innecesarias (Set) y reducir llamadas repetidas a la misma fuente de datos.

🧠 Qué es / para qué sirve

With() se usa para definir valores locales (solo disponibles dentro de la fórmula donde se usan).

Sirve para:

Guardar resultados intermedios (como una búsqueda o cálculo). Evitar repetir la misma operación varias veces. Mejorar el rendimiento al evitar consultas duplicadas. Mantener tus fórmulas más limpias y fáciles de leer.

📘 En otras palabras, With() actúa como una variable de contexto temporal dentro de una fórmula.

🧩 Sintaxi

With( { Name1: Value1 [, Name2: Value2, ...] }, Formula )

Parámetros:

ParámetroDescripción
Name1, Name2, …Nombres de variables locales (no requieren Set() ni UpdateContext()).
Value1, Value2, …Valores o expresiones asignadas a cada nombre.
FormulaLa fórmula que usará esas variables dentro de su alcance.

💻 Ejemplos con código

🔹 Ejemplo 1: simplificar un cálculo

With(
    { Precio: 200, Descuento: 0.15 },
    Precio - (Precio * Descuento)
)

➡️ Devuelve el valor final con descuento aplicado (170).

🔹 Ejemplo 2: evitar llamadas duplicadas

Sin With():

LookUp(Orders, ID = 1001).Total + LookUp(Orders, ID = 1001).ShippingCost

Con With():

With(
    { order: LookUp(Orders, ID = 1001) },
    order.Total + order.ShippingCost
)

➡️ La tabla Orders se consulta una sola vez, mejorando rendimiento y legibilidad.

🔹 Ejemplo 3: combinar datos locales y globales

With(
    {
        PrecioBase: 1200,
        Impuesto: 0.16,
        Total: PrecioBase * (1 + Impuesto)
    },
    Notify("El total con impuestos es $" & Text(Total, "[$-es-MX]#,##0.00"))
)

🔹 Ejemplo 4: usar With() dentro de galerías

With(
    { producto: ThisItem },
    "Producto: " & producto.Nombre & " - Precio: $" & producto.Precio
)

🧱 Buenas prácticas

✅ Usa With() para operaciones locales, no para valores que necesites fuera del control.

✅ Evita anidar demasiados With(), puede dificultar la lectura.

✅ Úsala para reducir repeticiones y optimizar cargas de datos.

✅ Combínala con If() o Switch() para fórmulas más limpias y legibles.

✅ Usa nombres descriptivos dentro del bloque, como pedido, cliente, precioTotal.

⚠️ Errores comunes

🚫 Intentar usar una variable de With() fuera de su alcance (solo vive dentro de la fórmula).

🚫 Reutilizar nombres de variables globales o contextuales (puede causar confusión).

🚫 Olvidar cerrar correctamente el bloque con paréntesis.

🚫 No entender que With() se evalúa una sola vez al momento de ejecutarse, no dinámicamente.

🔄 Variantes o alternativas

Set() → crea variables globales que persisten en toda la app. UpdateContext() → define variables contextuales dentro de una pantalla. Let() (en Power Fx futuro) → será la versión extendida para múltiples niveles de alcance.

📚 Recursos oficiales

📘 Documentación oficial de With() en Power Fx

📗 Variables globales y contextuales

📙 Optimización de rendimiento en Power Apps

🧩 Mini práctica

Objetivo: Calcular el precio final con descuento usando With().

1️⃣ Crea tres TextInput:

txtPrecio (precio base) txtDescuento (porcentaje en decimal, ej. 0.1 para 10%) lblResultado (etiqueta para mostrar resultado)

2️⃣ En el OnSelect de un botón, agrega:

With(
    {
        Precio: Value(txtPrecio.Text),
        Descuento: Value(txtDescuento.Text),
        Total: Precio - (Precio * Descuento)
    },
    Set(varTotal, Total);
    Notify("El precio final es $" & Text(varTotal, "[$-es-MX]#,##0.00"))
)

3️⃣ Ejecuta la app y prueba diferentes valores: verás el resultado calculado con With() en acción. ⚡

✨ Conclusión:

With() es una joya oculta de Power Fx.

Te ayuda a escribir fórmulas más limpias, eficientes y profesionales, mejorando el rendimiento de tus aplicaciones Canvas. 💪

Deja un comentario

¡Gracias por tu mensaje!

Me pondré en contacto tan rápido como pueda.

Descubre más desde Power Platform En Español

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo