A função ForAll
Anteriormente, você aprendeu a usar funções de finalidade única para operar em uma tabela. Elas são ideais e têm um bom desempenho, mas, às vezes, você precisa de mais flexibilidade ou fazer algo que não é abordado por uma dessas funções. Para essas situações, existe a função ForAll.
A função ForAll avalia uma fórmula quanto a todos os registros de uma tabela. A fórmula pode calcular um valor e/ou executar ações, como modificar dados ou trabalhar com uma conexão.
Os campos do registro que está sendo processado no momento estão disponíveis na fórmula. Você pode fazer referência a eles pelo nome como faria com qualquer outro valor. Você também pode fazer referência às propriedades de controle e a outros valores por todo o aplicativo.
Por exemplo, você pode usar ForAll(CustomerOrders, Office365.SendEmail(Email, "Obrigado", "Você é um ótimo cliente" e FirstName)) para enviar um email separado para todos os endereços de email na tabela CustomerOrders. O assunto do email será "Obrigado" e o corpo dele será "Você é um ótimo cliente" seguido do valor armazenado no campo FirstName.
Esse exemplo é diferente do exemplo de Concat de duas maneiras importantes. Em primeiro lugar, ele enviará um email para cada registro da tabela CustomerOrders. Portanto, se houver 50 registros, 50 emails diferentes serão enviados. No exemplo de Concat, apenas um email foi enviado com todos os 50 endereços de email na linha Para:. Em segundo lugar, esse email também referencia o campo FirstName da tabela CustomerOrders. Quando você usa a função ForAll, todos os campos para cada registro ficam disponíveis para uso.
Coisas que você precisa saber ao usar ForAll
Com ForAll, há uma enorme capacidade, mas também há várias coisas que você precisa saber ao começar a criar sua fórmula.
A fórmula pode incluir funções que executam uma ação, como modificar os registros de uma fonte de dados com as funções Patch e Collect.
Não é possível modificar a tabela que é o assunto da função ForAll. Isso inclui usar Patch ou Coleção na tabela.
A fórmula pode chamar métodos em conexões.
Você pode executar várias ações por registro usando o operador ;.
Ao escrever sua fórmula, tenha em mente que os registros podem ser processados em qualquer ordem e, quando possível, em paralelo. Você pode processar o primeiro registro da tabela após o último registro. Lembre-se de evitar dependências de ordem. Por esse motivo, não é possível usar as funções Set, UpdateContext, Clear e ClearCollect em uma função ForAll porque elas podem ser usadas com facilidade para armazenar variáveis que são suscetíveis a esse efeito. Você pode usar Collect, mas a ordem na qual os registros são adicionados é indefinida.
ForAll não é delegável, o que significa que poderá não passar por todos os seus registros se for usado com dados externos. O resultado obtido pode não representar o panorama completo. Um aviso pode ser mostrado enquanto você escreve sua fórmula para lembrá-lo dessa limitação e sugerir a alteração para alternativas delegáveis sempre que possível. ForAll funciona bem com coleções, mas lembre-se de que não é delegável. Para obter mais informações, consulte visão geral de delegação.
A função ForAll tem muito mais regras do que a maioria das funções do Power Apps. Além disso, como não é possível usar funções como Set e UpdateContext, às vezes, é necessário encontrar outra maneira de lidar com a fórmula. Geralmente, o motivo pelo qual você deseja usar Set com ForAll é para acompanhar o número de registros que foram modificados ou para capturar informações sobre esses registros. Você pode achar que o uso de Patch para atualizar uma coleção em que você acompanha esses mesmos dados gera o mesmo resultado.
Para obter mais informações sobre o uso e as regras da função ForAll, confira Função ForAll no Power Apps.