(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo crear un formulario con adjuntos condicionales en Power Apps / Power Platform

João Barros 28 de October de 2026 4 min de lectura

Crear un formulario que solicite adjuntos solo cuando sea necesario es útil para reducir datos redundantes y guiar a los usuarios. Este tutorial muestra cómo, en Power Apps / Power Platform, construir un Canvas App que presente campos condicionales de archivo y guarde los adjuntos en SharePoint o Dataverse.

Requisitos previos

  • Cuenta con acceso a Power Apps (licencia con Canvas Apps).
  • Una lista SharePoint o una tabla Dataverse para registro (ej.: lista "Registos").
  • Un flujo Power Automate (opcional) para mover adjuntos o procesar archivos grandes.
  • Conocimientos básicos de Canvas Apps: pantallas, galerías, formularios y colecciones.

Paso 1: Crear la fuente de datos (SharePoint o Dataverse)

Decide dónde vas a guardar los registros. Ejemplo con SharePoint: crea una lista llamada "Registos" con columnas: Title (Texto), Tipo (Elección) y Comentarios (Varias líneas). Para adjuntos condicionales puedes usar la funcionalidad nativa de adjuntos de la lista o almacenar archivos en una biblioteca separada y guardar el enlace.

// Ejemplo: estructura mínima de la lista SharePoint
Lista: Registos
Columnas: Title (Texto), Tipo (Elección: Producto, Servicio), Comentarios (Varias líneas)
Activar adjuntos en la lista

Paso 2: Crear el Canvas App y conectar la fuente de datos

Crea un Canvas App en blanco (Phone o Tablet) y añade la conexión a la lista SharePoint (o a la tabla Dataverse). Inserta un EditForm vinculado a "Registos" y los campos Title, Tipo y Comentarios.

// En Power Apps Studio
Insert > Forms > Edit Form
DataSource = Registos
Fields = [Title, Tipo, Comentarios]

Paso 3: Añadir control condicional de adjuntos

Si usas la funcionalidad nativa de adjuntos del EditForm, puedes mostrar/ocultar el control Attachments según el campo Tipo. Alternativamente, utiliza un control de archivos personalizado (AddMediaButton o Attachment control separado) y guarda los archivos en una colección hasta enviar.

// Ejemplo usando AddMediaButton para recoger archivos condicionalmente
// Añade un AddMediaButton llamado btnAddFile y una Gallery llamada galFiles
// Colección para guardar archivos temporales
OnAddFile: Collect(colFiles, {Name: Last(AddedMedia).Name, Content: Last(AddedMedia).Value})

// Visibilidad del botón controlada por Tipo
btnAddFile.Visible = (DataCardValue_Tipo.Selected.Value = "Serviço")

Paso 4: Mostrar lista de archivos añadidos

Crea una Gallery simple que muestre los elementos de colFiles para permitir eliminar o ver el nombre del archivo antes de enviar.

// Gallery Items
galFiles.Items = colFiles

// Botón Eliminar en la plantilla de la Gallery
OnSelect = Remove(colFiles, ThisItem)

Paso 5: Enviar el formulario y guardar adjuntos

Cuando el usuario envíe el formulario, primero guarda el registro en SharePoint/Dataverse. Si usas SharePoint con adjuntos nativos, puedes usar FormMode y SubmitForm; para archivos guardados por separado, crea el elemento y después sube el archivo a la biblioteca y actualiza el enlace en el registro.

// Botón Guardar - lógica simplificada
// 1. Enviar formulario para crear el registro
SubmitForm(frmRegisto)

// 2. Cuando el formulario tenga éxito, usar OnSuccess para procesar archivos
// OnSuccess de frmRegisto
If(CountRows(colFiles) > 0,
   ForAll(colFiles,
     // Ejemplo de crear archivo en SharePoint en una biblioteca llamada 'Anexos'
     // Usar Patch con SharePointAttachment no está soportado directamente
     // Se recomienda usar Power Automate para upload; aquí mostramos la llamada a un Flow
     'FlowUploadFile'.Run(RegisterID, ThisRecord.Name, ThisRecord.Content)
   )
);

// Donde RegisterID = frmRegisto.LastSubmit.ID

Paso 6: Crear el flujo Power Automate para recibir archivos

Como Power Apps no escribe directamente binarios en bibliotecas con facilidad, crea un Power Automate con trigger "Power Apps" que reciba parámetros: RegisterID, FileName, FileContent (base64). El Flow usa la acción "Create file" en SharePoint y actualiza la lista/registro si es necesario.

// Pasos esenciales en el Flow
Trigger: PowerApps
Action: Create file (SiteAddress, FolderPath, FileName, FileContent) // FileContent en base64
Optional: Update item (Registos) para añadir enlace del archivo
Return: success/URL para Power Apps

Verificar el resultado

Prueba el escenario: elige Tipo = "Serviço" y añade archivos; elige Tipo = "Produto" y verifica que el botón de adjuntos queda oculto. Envía y confirma que el elemento se creó en la lista SharePoint y que los archivos aparecen en la biblioteca con enlace al registro. Errores comunes: archivos no enviados porque el Flow no devuelve éxito, permisos insuficientes o base64 mal formateado.

Conclusión

Con este patrón tienes un formulario en Power Apps que solicita adjuntos solo cuando aplica y los guarda de forma fiable usando Power Automate para la subida. Siguientes pasos: gestionar validación de tamaño/tipo de archivo, mostrar progreso de subida y asociar metadatos de los archivos al registro. Consejo: siempre prueba el Flow de forma aislada con datos de ejemplo para depurar problemas de archivo.