Como permitir que o usuário escolha várias datas em um fluxo de tela (Screen Flow) do Salesforce
O Flow oferece um campo de data por elemento de tela. Se alguém precisa escolher nove dias, isso vira um problema. Veja as opções e o custo de cada uma.
Todo administrador esbarra nisso um dia. Um pedido de folga, um formulário de disponibilidade, uma inscrição em treinamento: o usuário precisa escolher vários dias, nem sempre seguidos, e o componente de data padrão do Flow captura exatamente um.
As gambiarras, e por que elas atrapalham
| Abordagem | Como funciona | O custo |
|---|---|---|
| Vários campos de data na mesma tela | Data 1, Data 2, Data 3, Data 4... | Limite fixo, feio e quase sempre vazio |
| Um loop que pede uma data por vez | "Adicionar outra data?" e de volta para a tela | Cansativo a partir da terceira data |
| Um campo de texto livre | O usuário digita as datas como texto | Impossível de converter, de usar em relatórios, e sujeito a erros |
| Só data de início e de término | Tratar tudo como um único intervalo contínuo | Errado sempre que os dias não são seguidos |
| Uma lista de opções de seleção múltipla com datas | Gerar os valores de data com antecedência | Fica desatualizada e exige manutenção constante |
| Um componente de calendário de várias datas | Clicar em todas as datas necessárias em uma única tela | Devolve uma coleção pronta para o loop |
A gambiarra de início e término é a mais comum e a que erra mais silenciosamente. "Preciso de folga nos dias 3, 4, 11 e 18" vira do dia 3 ao dia 18, ou seja, dezesseis dias de ausência implícita. Os dados parecem limpos e estão simplesmente errados.
A solução de verdade: um componente de tela que devolve uma coleção
O que o Flow realmente precisa é de um componente de tela em que o usuário clique em quantas datas quiser e que devolva uma coleção. Com isso, o resto do fluxo é rotina: percorrer a coleção em um loop, criar um registro por data e pronto.
O MultiDatePick devolve várias saídas, conforme o que você está capturando:
| Saída | O que contém | Nome da API |
|---|---|---|
| Selected Dates | Uma coleção de texto com datas ISO, pronta para o loop | selectedDates |
| Date Ranges JSON | Intervalos consolidados, quando dias seguidos devem virar um único registro | selectedDateRangesJson |
| Dates With Times JSON | Horários de início e término por data | selectedDatesWithTimesJson |
| Successful Bookings Count, Conflict Dates | O que foi salvo e o que entrou em conflito | bookingSuccessCount |
Transformando o JSON de volta em registros
Duas dessas saídas são JSON, porque o Flow não tem um tipo nativo para "uma lista de objetos com vários campos cada". Não dá para interpretar texto em uma fórmula. O pacote inclui uma ação de fluxo, Parse Date Entries from JSON, que recebe o JSON e devolve uma coleção de verdade com From Date, To Date, Start Time e End Time. Você percorre essa coleção em um loop como qualquer outra.
Uma pegadinha que custa uma hora
$GlobalConstant.True ou $GlobalConstant.False nas caixas de seleção que importam.
Quer que o próprio componente salve os registros? Passe o Id do registro pai em Parent Record Id e ele cria um registro filho por data. Deixe em branco para percorrer a saída em um loop e criar os registros do seu jeito.
Defina o formato dos registros antes de construir
As mesmas nove datas selecionadas podem virar nove registros, ou quatro se os dias seguidos forem agrupados em intervalos, ou um registro pai com sub-blocos. Cada formato é o certo para um relatório diferente. Decida antes de criar o fluxo, porque mudar depois significa migrar dados, além de editar o fluxo.
Coloque um seletor de várias datas de verdade no seu próximo fluxo
Clique nas datas da demo ao vivo e depois siga o guia Primeiros passos para adicionar o componente a uma tela de fluxo.
- US$ 20/usuário/mês, todos os recursos
- Teste grátis de 30 dias, sem cartão
- 100% nativo do Salesforce
- Sem Apex
- Em breve no Salesforce AppExchange