Cómo seleccionar varias fechas en un flujo de pantalla (Screen Flow) de Salesforce
Flow te da un campo de fecha por cada elemento de pantalla. Si alguien tiene que elegir nueve días, ahí tienes un problema. Estas son las opciones y lo que cuesta cada una.
A todo administrador le llega este caso tarde o temprano. Una solicitud de vacaciones, un formulario de disponibilidad, una inscripción a una formación: el usuario necesita seleccionar varias fechas que no tienen por qué ser seguidas, y el componente de fecha estándar de Flow captura exactamente una.
Las soluciones provisionales y por qué fallan
| Enfoque | Cómo funciona | El precio |
|---|---|---|
| Varios campos de fecha en una pantalla | Fecha 1, Fecha 2, Fecha 3, Fecha 4... | Límite fijo, feo y casi siempre vacío |
| Un bucle que pregunta de una en una | «¿Añadir otra fecha?» y vuelta a la pantalla | Insufrible a partir de unas tres fechas |
| Un campo de texto libre | El usuario escribe las fechas como texto | Imposible de analizar o de usar en informes, y propenso a errores |
| Solo fecha de inicio y de fin | Se trata como un único rango continuo | Incorrecto cada vez que los días no son seguidos |
| Una lista de selección múltiple de fechas | Generar los valores de fecha por adelantado | Se queda obsoleta y exige mantenimiento constante |
| Un calendario de varias fechas | Haz clic en cada fecha que necesites en una sola pantalla | Devuelve una colección lista para recorrer en bucle |
La solución de inicio y fin es la más habitual y la que falla sin que nadie lo note. «Necesito libres el 3, el 4, el 11 y el 18» se convierte en del 3 al 18, es decir, dieciséis días de ausencia implícita. Los datos parecen limpios y sencillamente están mal.
La solución de verdad: un componente de pantalla que devuelve una colección
Lo que Flow necesita de verdad es un componente de pantalla que deje al usuario hacer clic en todas las fechas que quiera y devuelva una colección. Con eso, el resto del flujo es lo de siempre: recorres la colección en un bucle, creas un registro por fecha y listo.
MultiDatePick devuelve varias salidas, según lo que estés capturando:
| Salida | Contenido | Nombre de API |
|---|---|---|
| Selected Dates | Una colección de texto con fechas ISO, lista para recorrer en bucle | selectedDates |
| Date Ranges JSON | Rangos consolidados, cuando los días consecutivos deben agruparse en un solo registro | selectedDateRangesJson |
| Dates With Times JSON | Horas de inicio y fin por fecha | selectedDatesWithTimesJson |
| Successful Bookings Count, Conflict Dates | Qué se guardó y qué entró en conflicto | bookingSuccessCount |
Convertir el JSON de nuevo en registros
Dos de esas salidas son JSON, porque Flow no tiene un tipo nativo para «una lista de objetos con varios campos cada uno». No hace falta analizar texto en una fórmula: el paquete incluye una acción de flujo, Parse Date Entries from JSON, que recibe el JSON y devuelve una colección de verdad con From Date, To Date, Start Time y End Time. Esa colección se recorre en un bucle como cualquier otra.
Un detalle que hace perder una hora
$GlobalConstant.True o $GlobalConstant.False en las casillas que te importen.
¿Quieres que el propio componente guarde los registros? Pasa el Id del registro principal a Parent Record Id y creará un registro secundario por fecha. Déjalo en blanco para recorrer la salida en un bucle y crear los registros a tu manera.
Decide la forma de los registros antes de crear el flujo
Las mismas nueve fechas seleccionadas pueden convertirse en nueve registros, en cuatro si los días consecutivos se agrupan en rangos, o en un registro principal con sub-bloques. Cada opción es la correcta para un informe distinto. Decídelo antes de crear el flujo, porque cambiarlo después obliga a migrar datos además de editar el flujo.
Pon un selector de varias fechas de verdad en tu próximo flujo
Haz clic en las fechas de la demo en vivo y sigue Primeros pasos para añadir el componente a una pantalla de flujo.
- US$20/usuario/mes, todas las funciones
- Prueba gratis de 30 días, sin tarjeta
- 100 % nativo de Salesforce
- Sin Apex
- Próximamente en Salesforce AppExchange