Ir al contenido principal

Etiqueta: Errores

Power Apps Standards: Manejo de Errores

Aquí tienes una guía sobre cómo manejar errores en tus aplicaciones, explicada de forma sencilla para que tus apps sean robustas y no dejen tirados a los usuarios.

Manejo de Errores: El Plan B para una App a Prueba de Fallos 🛡️

Una aplicación profesional no se bloquea ni se queda callada cuando algo sale mal. Al contrario, tiene un «Plan B» para cada situación. Anticiparse a los errores es lo que diferencia una app mediocre de una excelente. Aquí te explicamos cómo hacerlo.

1. Primer Paso: Activa el «Modo Plan B»

Antes de nada, tienes que activar una opción en la configuración avanzada de Power Apps llamada «Manejo de errores a nivel de fórmula».

Al encender este interruptor, «desbloqueas» las funciones (IfError, IsError) y propiedades (OnError) que te permitirán crear estos planes B.

2. Al Guardar Datos (Patch): Confirma Siempre la Entrega 📦

Cuando usas las funciones Patch o Collect para guardar datos, nunca des por hecho que ha funcionado. La conexión a internet podría fallar, o el usuario podría no tener permisos.

Piensa en ello como si enviaras un paquete importante: no te quedas tranquilo hasta que recibes la confirmación de entrega. La función IsError es esa confirmación.

Fragmento de código

// Intentamos crear una nueva factura
If(
    // PREGUNTAMOS: "¿Ha dado error el envío del paquete (Patch)?"
    IsError(
        Patch(
            'Facturas',
            Defaults('Facturas'),
            {
                // ... datos de la factura ...
            }
        )
    ),
    // SI HAY ERROR (Plan B):
    // Mostramos un mensaje de error claro.
    Notify(
        "Error: no se pudo crear la factura.",
        NotificationType.Error
    ),
    // SI TODO VA BIEN (Plan A):
    // Llevamos al usuario a la pantalla de éxito.
    Navigate('PantallaExito')
)

3. Con Formularios Estándar: Usa los Buzones de «Éxito» y «Fallo» ✅❌

Si usas un control de Formulario estándar, Power Apps te lo pone aún más fácil. El formulario tiene dos «buzones» especiales:

  • OnSuccess: Aquí pones el código que se ejecutará solo si el formulario se guarda correctamente.
  • OnFailure: Aquí pones el código para tu Plan B, lo que se ejecutará si falla el guardado.

Fragmento de código

// En la propiedad OnSelect del botón de ENVIAR
// Simplemente le decimos al formulario que se envíe. Nada más.
SubmitForm(frm_Factura);

// En la propiedad OnSuccess del PROPIO FORMULARIO
// Si todo va bien, navegamos a la pantalla de éxito.
Navigate('PantallaExito');

// En la propiedad OnFailure del PROPIO FORMULARIO
// Si algo falla, mostramos un mensaje de error.
Notify(
    "Error: no se pudo crear la factura.",
    NotificationType.Error
);

¡REGLA DE ORO! ¡MUY IMPORTANTE! Nunca pongas código justo después de la función SubmitForm() en el botón.

Fragmento de código

// ¡¡¡NO HAGAS ESTO!!!
SubmitForm(frm_Factura);
Navigate('PantallaExito'); // ¡Esto está MAL!

¿Por qué? Porque si SubmitForm falla, Power Apps seguirá ejecutando la siguiente línea de código. El resultado es que el usuario será llevado a la pantalla de «Éxito» aunque sus datos no se hayan guardado. ¡Un desastre!

4. Con Power Automate: La Misma Regla de «Confirmar Entrega» 🤖

Cuando tu app llama a un flujo de Power Automate, aplica la misma lógica que con Patch. Un flujo puede fallar por muchas razones. Usa IsError para comprobar la respuesta antes de continuar.

Fragmento de código

// Preguntamos si la ejecución del flujo ha dado error
If(
    IsError(
        MiFlujoParaTraerFacturas.Run("C0001023")
    ),
    // Si falla, notificamos
    Notify("Error: no se pudieron recuperar las facturas.", NotificationType.Error),
    // Si va bien, continuamos
    Navigate('PantallaExito')
)

5. La Red de Seguridad para tus Cálculos (Función IfError) 🤸

A veces, una operación matemática puede dar un error (el más típico es dividir por cero). La función IfError es una red de seguridad que te permite indicar un valor alternativo en caso de que el cálculo falle.

Fragmento de código

// Queremos calcular el porcentaje de tareas completadas
// Si gblTareasTotales es 0, esto daría un error de "división por cero".
// Con IfError, si eso ocurre, simplemente devolverá 0. ¡Sin dramas!
IfError(
    gblTareasCompletadas / gblTareasTotales,
    0 
)

6. La Alarma General para Errores Inesperados (OnError) 🚨

La propiedad OnError de la aplicación es la «alarma de incendios» general. Atrapa cualquier error que tú no hayas controlado previamente con IsError o IfError.

  • Durante el desarrollo: Puedes usarla para mostrarte a ti, como desarrollador, un mensaje muy detallado sobre qué ha fallado, dónde y por qué. Te ayuda a encontrar y arreglar fallos rápidamente.
  • En producción (la app final): Nunca muestres ese mensaje técnico al usuario final, ¡le asustarás! Para las apps en producción, lo que se hace es usar OnError para registrar el error de forma silenciosa en un sistema de análisis (como Trace y Azure Application Insights), de modo que los desarrolladores puedan verlo y arreglarlo sin que el usuario se entere del detalle técnico.
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.