Introdução

Forms é uma ferramenta simples, prática, e que está em melhoria constante. Mas até a data de publicação desse artigo, não existia uma solução para validação de CPF.

Forms

Crie o formulário e certifique-se que o campo CPF é númerico conforme imagem abaixo:


Power Automate

1) Crie um fluxo da nuvem automatizado com o gatilho: "Quando uma nova resposta é enviada";

2) Preencha os campos:

  • ID de formulário: selecione o formulário criado ou informe seu ID;

3) Adicione uma ação do tipo Obter os detalhes da resposta e preencha os campos:
  • ID de formulário: selecione o formulário criado ou informe seu ID
  • ID da resposta: selecione o campo ID da resposta no conteúdo dinâmico 


4) Adicione uma ação do tipo Inicializar variável e preencha os campos:
  • Nome: CPF_Validado
  • Tipo: Booleano
  • Valor: false


5) Adicione uma ação do tipo Inicializar variável e preencha os campos:
  • Nome: CPF_Original
  • Tipo: Cadeia de Caracteres
  • Valor: selecione o campo CPF no conteúdo dinâmico


6) Adicione uma ação do tipo Inicializar variável e preencha os campos:
  • Nome: CPF
  • Tipo: Cadeia de Caracteres
  • Valor: Expressão abaixo
if(less(length(variables('CPF_Original')),11),
    concat(substring('00000000000',length(variables('CPF_Original'))),variables('CPF_Original')),
    variables('CPF_Original'))



7) 
Adicione uma ação do tipo Inicializar variável e preencha os campos:
  • Nome: CPF_Digito1
  • Tipo: Inteiro
  • Valor: Expressão abaixo
if(equals(mod(mul(add(mul(int(substring(variables('CPF'),0,1)), 10),add(mul(int(substring(variables('CPF'),1,1)), 9),add(mul(int(substring(variables('CPF'),2,1)), 8),add(mul(int(substring(variables('CPF'),3,1)), 7),add(mul(int(substring(variables('CPF'),4,1)), 6),add(mul(int(substring(variables('CPF'),5,1)), 5),add(mul(int(substring(variables('CPF'),6,1)), 4),add(mul(int(substring(variables('CPF'),7,1)), 3),mul(int(substring(variables('CPF'),8,1)), 2))))))))),10),11),10),0,mod(mul(add(mul(int(substring(variables('CPF'),0,1)), 10),add(mul(int(substring(variables('CPF'),1,1)), 9),add(mul(int(substring(variables('CPF'),2,1)), 8),add(mul(int(substring(variables('CPF'),3,1)), 7),add(mul(int(substring(variables('CPF'),4,1)), 6),add(mul(int(substring(variables('CPF'),5,1)), 5),add(mul(int(substring(variables('CPF'),6,1)), 4),add(mul(int(substring(variables('CPF'),7,1)), 3),mul(int(substring(variables('CPF'),8,1)), 2))))))))),10),11))


8) Adicione uma ação do tipo Inicializar variável e preencha os campos:
  • Nome: CPF_Digito2
  • Tipo: Inteiro
  • Valor: Expressão abaixo
if(equals(mod(mul(add(mul(int(substring(variables('CPF'),0,1)), 11),add(mul(int(substring(variables('CPF'),1,1)), 10),add(mul(int(substring(variables('CPF'),2,1)), 9),add(mul(int(substring(variables('CPF'),3,1)), 8),add(mul(int(substring(variables('CPF'),4,1)), 7),add(mul(int(substring(variables('CPF'),5,1)), 6),add(mul(int(substring(variables('CPF'),6,1)), 5),add(mul(int(substring(variables('CPF'),7,1)), 4),add(mul(int(substring(variables('CPF'),8,1)), 3),mul(variables('CPF_Digito1'),2)))))))))),10),11),10), 0, mod(mul(add(mul(int(substring(variables('CPF'),0,1)), 11),add(mul(int(substring(variables('CPF'),1,1)), 10),add(mul(int(substring(variables('CPF'),2,1)), 9),add(mul(int(substring(variables('CPF'),3,1)), 8),add(mul(int(substring(variables('CPF'),4,1)), 7),add(mul(int(substring(variables('CPF'),5,1)), 6),add(mul(int(substring(variables('CPF'),6,1)), 5),add(mul(int(substring(variables('CPF'),7,1)), 4),add(mul(int(substring(variables('CPF'),8,1)), 3),mul(variables('CPF_Digito1'),2)))))))))),10),11))


9) Adicione uma ação do tipo Definir variável e preencha os campos:
  • Nome: selecione a variável CPF_Validado
  • Valor: Expressão abaixo
and(equals(int(substring(variables('CPF'),9,1)),variables('CPF_Digito1')),
and(equals(int(substring(variables('CPF'),10,1)),variables('CPF_Digito2')),
and(not(equals(variables('CPF'),'00000000000')),
and(not(equals(variables('CPF'),'11111111111')),
and(not(equals(variables('CPF'),'22222222222')),
and(not(equals(variables('CPF'),'33333333333')),
and(not(equals(variables('CPF'),'44444444444')),
and(not(equals(variables('CPF'),'55555555555')),
and(not(equals(variables('CPF'),'66666666666')),
and(not(equals(variables('CPF'),'77777777777')),
and(not(equals(variables('CPF'),'88888888888')),
not(equals(variables('CPF'),'99999999999')))))))))))))


10) Adicione uma ação do tipo Condição e preencha os campos:
  • Valor 1: selecione a variável CPF_Validado no conteúdo dinâmico
  • Condição: é igual a
  • Valor 2: Expressão true

Referências