Usar lógica básica em fórmulas de caixa de seleção

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:
  • Descrever qual é o tipo de retorno da fórmula de caixa de seleção.
  • Usar confortavelmente as funções IF(), AND(), NOT() e OR().
  • Descrever casos de uso para fórmulas com o tipo de caixa de seleção.
  • Criar uma fórmula usando o tipo de caixa de seleção.

Introdução aos campos de fórmula

As fórmulas são uma ferramenta poderosa que permite realizar cálculos e outras operações nos dados de sua organização. Usando fórmulas, você pode incorporar hiperlinks, realizar aritmética com campos existentes ou usar a lógica condicional para exibir um valor. Se você nunca usou fórmulas antes, comece em Usar campos de fórmula antes de passar para esta unidade.

Introdução ao tipo Caixa de seleção em fórmulas

Quando se trata de caixas de seleção, você só tem duas opções: selecionada ou não selecionada. E o que isso significa para sua fórmula? Bem, uma fórmula de caixa de seleção é simplesmente uma declaração lógica que é verdadeira ou falsa. Se você quiser saber imediatamente se uma conta contém pelo menos 500 funcionários, por exemplo, pode usar uma fórmula de caixa de seleção simples.

NumberOfEmployees >= 500

Se uma conta tiver 500 funcionários ou mais, a caixa de seleção Conta grande é assinalada na página dessa conta. Caso contrário, Conta grande não será assinalada.

Na maioria das vezes, as declarações lógicas em sua fórmula são muito mais complicadas do que isso. Para aproveitar ao máximo o tipo de dados de fórmula de caixa de seleção, você precisa de algumas ferramentas lógicas básicas.

Operadores lógicos básicos

As funções lógicas são adaptações mais rígidas de palavras que você já usa em quase todas as conversas: e, ou, não e se. Você sabe, por exemplo, que a maçã é uma fruta vermelha, enquanto a banana é uma fruta amarela. Se você estiver no supermercado procurando algo que seja vermelho e uma fruta, vai pegar uma maçã. Se você estiver procurando algo que seja vermelho ou uma fruta, no entanto, vai aceitar uma maçã ou uma banana.

Você pode usar o mesmo tipo de lógica em fórmulas com as funções NOT() (não), AND() (e), OR() (ou) e IF() (se).

AND()

A função interna AND() exige pelo menos dois argumentos. Ela retornará true (verdadeiro) se, e somente se, os dois argumentos forem verdadeiros. É fácil visualizar essa lógica se a examinarmos em uma tabela.

Primeiro argumento = verdadeiro Primeiro argumento = falso
Segundo argumento = verdadeiro Verdadeiro Falso
Segundo argumento = falso Falso Falso

Por exemplo, digamos que você quer que seus usuários olhem para um contato e saibam imediatamente se não há problema em contatá-lo por email ou telefone. Se o contato em questão tiver marcado Não ligar e Recusa de email, queremos selecionar outra caixa de seleção, Não entrar em contato. Como queremos que essa caixa de seleção seja assinalada somente se o contato selecionar Não ligar e Recusa de email, usaremos a função AND().

Crie uma fórmula de caixa de seleção da mesma forma que você criaria qualquer outro campo de fórmula no Salesforce.

  1. Em Configuração, insira Contatos na caixa Busca rápida e selecione Campos | de contato.
  2. Role a tela para baixo até a seção Campos e relacionamentos personalizados do contato e clique em Novo.
  3. Selecione Fórmula e clique em Avançar.
  4. Em Rótulo do campo, insira Não entrar em contato. O nome do campo é preenchido automaticamente.
  5. Selecione Caixa de seleção e clique em Avançar.
  6. Copie o seguinte código snippet e cole-o no editor de fórmula.
    AND(DoNotCall, HasOptedOutOfEmail)
    É assim que ele ficará no editor de fórmula quando você terminar: Fórmula da caixa de seleção Não entrar em contato

Uma observação rápida. As amostras de fórmula que apresentaremos a você durante este módulo vão variar de relativamente simples a muito complexas. Para facilitar a sua vida, proporcionaremos todas as amostras de fórmula como snippets em vez de capturas de tela de como elas serão exibidas no editor de fórmula. Isso permitirá que você copie e cole o snippet diretamente no editor de fórmula. Para copiar o snippet, basta passar o mouse sobre ele até que três ícones apareçam no canto superior direito. Em seguida, use o ícone “copiar para a área de transferência” para copiar o snippet.

Como sempre, certifique-se de que você está usando o Editor de fórmula avançado para inserir sua fórmula. Você pode acessar o Editor de fórmula avançado selecionando a guia Fórmula avançada no editor de fórmula. O Editor de fórmula avançado oferece acesso fácil a uma ampla gama de funções e operadores de que você precisará ao longo deste módulo.
Nota

Nota

Lembre-se de que você pode criar um campo de fórmula como um campo personalizado, mas também pode criar um campo de fórmula como uma regra de validação. Uma regra de validação permite impedir que os usuários salvem registros com dados inválidos de acordo com sua fórmula. As regras de validação podem ser uma maneira eficaz de impor qualidade dos dados. Porém, com grande poderes vêm grandes responsabilidades. A última coisa que você deseja é usuários infelizes que não conseguem salvar registros. Então, use seu poder com sabedoria. Saiba mais sobre regras de validação aqui.

Usando essa fórmula, se alguém selecionou Não ligar e Recusa de email, o cartão de contato exibe outra caixa de seleção assinalada, Não entrar em contato. Se a pessoa selecionou apenas uma das duas, a caixa de Não entrar em contato não é marcada.

Nota

Nota

Há mais de uma maneira de escrever a função AND(). Você pode escrevê-la como uma função com AND() ou como um operador, vinculando duas declarações com &&. Neste caso, AND(DoNotCall, HasOptedOutOfEmail) é equivalente a DoNotCall && HasOptedOutOfEmail. Não confunda &&, que substitui AND(), com &, que concatena duas strings de texto.

Se quiser verificar mais do que apenas duas condições, não se preocupe: o operador AND() não se limita a duas condições. Exibir um contato com a caixa Não entrar em contato assinalada mediante a condição de que a pessoa selecionou Não ligar, Recusa de email e Recusa de fax não é problema para o operador AND().
AND(DoNotCall, HasOptedOutOfEmail, HasOptedOutOfFax)

Usando essa fórmula, a caixa de seleção Não entrar em contato é marcada apenas se todas as três caixas de seleção (Não ligar, Não enviar email e Não enviar fax) estiverem selecionadas. Se a pessoa não assinalar qualquer uma (ou duas, ou todas as três), Não entrar em contato aparece desmarcada na página do contato.

OR()

A função OR() é semelhante à função AND(). Ela também leva pelo menos dois argumentos. Mas, diferentemente de AND(), OR() retorna true (verdadeiro) se pelo menos uma das condições for verdadeira e só retorna false (falso) se todos os argumentos forem falsos.


Primeiro argumento = verdadeiro Primeiro argumento = falso
Segundo argumento = verdadeiro Verdadeiro Verdadeiro
Segundo argumento = falso Verdadeiro Falso

Vamos ver outro exemplo simples com o objeto de contato. Digamos que você deseja exibir uma caixa de seleção assinalada se um contato estiver no nível executivo de uma organização. Sabemos que alguém está no nível executivo se o cargo começar com “diretor” (como diretor executivo, diretor operacional, etc.) ou incluir a palavra “presidente” (como presidente, vice-presidente, etc.). Observe como já estamos usando a palavra ou para descrever o problema. Esse é um bom indício de que você precisa do operador OR() nesta fórmula.

Para fazer essa fórmula funcionar, vamos usar algumas funções de texto sobre as quais você pode saber mais em Usar fórmulas de texto:

  • BEGINS(text, compare_text) informa se uma string (text) começa com outra string (compare_text).
  • CONTAINS(text, compare_text) informa se uma string (text) começa com outra string (compare_text).
Crie um campo de fórmula com o tipo Caixa de seleção e o nome É executivo. Insira a fórmula a seguir.
OR(Begins(Title, "Chief"), CONTAINS(Title, "President"))

Assim como no caso da função AND(), você pode escrever OR() de mais de uma maneira. Você pode escrever BEGINS(Title , "Diretor") || CONTAINS(Title , "Presidente").

OR(), como AND(), aceita mais de dois argumentos. Para verificar também se o Título de um contato contém a palavra “diretor”, tente:
BEGINS(Title, "Chief") ||
CONTAINS(Title, "President") ||
CONTAINS(Title, "Executive")

NOT()

A função NOT() faz exatamente o que você esperaria: muda tudo que é verdadeiro para falso e tudo que é falso para verdadeiro. Digamos que você deseja exibir uma caixa de seleção na página de um contato para indicar se faltam informações essenciais no cartão de contato. Neste exemplo, consideramos um contato completo quanto ele inclui nome, sobrenome, número de telefone, endereço de email e endereço para correspondência. A fórmula é avaliada como true somente se nenhum desses campos estiver em branco.

Para verificar se o contato tem as informações que estamos procurando, use a função ISBLANK(). ISBLANK() usa um campo como argumento, retornando true se ele estiver em branco e false se estiver preenchido.
NOT(
  ISBLANK(FirstName) ||
  ISBLANK(LastName) ||
  ISBLANK(Phone) ||
  ISBLANK(Email) ||
  ISBLANK(MailingAddress)
)
Nota

Nota

Como nas fórmulas os espaços e quebras de linha entre funções e operadores não importam, as quebras de linha e os espaços mostrados aqui não são necessários. No entanto, usar quebras de linha e espaços em sua fórmula facilita a leitura dela. Também ajuda qualquer pessoa que tenha de entender ou atualizar a fórmula mais tarde.

E aqui está! Você pode testar essa fórmula examinando um contato em sua organização. Se todas as informações de contato relevantes forem preenchidas, o contato será marcado como completo e a caixa de seleção Contato completo que você criou estará selecionada. Se um ou mais campos que verificamos estiverem em branco, a caixa de seleção estará desmarcada.

Observe que NOT() também pode ser escrito como um ponto de exclamação simples. Usando essa notação, nossa fórmula pareceria um pouco diferente, mas teria o mesmo efeito.
!(ISBLANK(FirstName) ||
ISBLANK(LastName) ||
ISBLANK(Phone) ||
ISBLANK(Email) ||
ISBLANK(MailingAddress))

IF()

Em vez de unir operadores lógicos como AND() e OR(), você pode usar declarações IF(). IF() usa três argumentos, no formato IF(Teste, Resultado, Alternativa). Em termos leigos: Se o teste for verdadeiro, avalie o resultado. Caso contrário, avalie a alternativa.

Você está de volta ao supermercado e, mais uma vez, está procurando uma fruta vermelha. Você sabe como escrever esse cenário com AND() e OR(), mas também pode pensar nele em termos de declarações IF(). Primeiro, você pega um vegetal e vê se é uma fruta. Se for o caso, verifique se é vermelho. Se você escrevesse uma fórmula para escolher vegetais usando declarações IF(), o processo de tomada de decisões ficaria assim:

IF(Mystery_Produce = "Fruit", Mystery_Produce_Color = "Red", false)
Você pode aplicar a mesma lógica baseada em IF às suas fórmulas. Por exemplo, você quer saber se um contato é um contato principal. Definimos um contato principal como alguém que é um executivo (usando o campo de fórmula É executivo que criamos antes) e está no departamento de marketing. Você já sabe como fazer isso com AND e OR.
Is_Executive__c && Department = "Marketing"
Usando uma declaração IF(), a fórmula fica assim:
IF(Is_Executive__c, Department = "Marketing", false)

Você pode aninhar declarações IF(). Qualquer argumento dentro de uma declaração IF() pode ser outra declaração lógica, incluindo outra declaração IF(). Para este exemplo, definimos um contato principal como alguém que é um executivo e, além disso, está no departamento de marketing em São Francisco ou no departamento de vendas em Nova Iorque. Vamos criar uma caixa de seleção que será selecionada somente se essas condições forem atendidas.

Descobrimos em qual cidade o contato está analisando o código de área do número de telefone, pois 415 corresponde a São Francisco e 212 corresponde a Nova Iorque. Usando AND e OR, a fórmula fica assim:
Department = "Marketing" &&
Is_Executive__c &&
BEGINS(Phone, "(415)") ||
Department = "Sales" &&
Is_Executive__c &&
BEGINS(Phone, "(212)")
Nota

Nota

Os operadores lógicos, assim como os operadores matemáticos, têm uma ordem de operação. AND() é sempre avaliado antes de OR(). Você também pode agrupar operadores lógicos entre parênteses para que eles sejam avaliados em determinada ordem.

Queremos uma fórmula que seja verdadeira se um contato atender a todos os requisitos para ser um contato principal. Primeiro, queremos verificar se o contato é um executivo usando a caixa de seleção É executivo que criamos anteriormente. Se o contato for um executivo, vamos verificar se o departamento é de vendas. Se isso for verdade também, então a última coisa que queremos verificar é o código de área do número de telefone. Por outro lado, se o contato é um executivo, mas o departamento não é de vendas, vamos verificar se é marketing. Se for o caso, vamos verificar se o número de telefone tem código de área de São Francisco. Geralmente é mais fácil visualizar uma série de declarações IF() com um diagrama de seleção. Desenhar um deles é uma ótima primeira etapa quando você está escrevendo uma fórmula que usa IF().


Cada ramificação da árvore corresponde a uma condição em uma declaração IF() de nossa fórmula.
IF(Is_Executive__c,
  IF(Department = "Sales", BEGINS(Phone, "(212)"), False),
  IF(Department = "Marketing", BEGINS(Phone, "(415)"), False))

Em fórmulas como essa, é especialmente importante incluir quebras de linha e espaços claros. Assim, quem ler sua fórmula mais tarde saberá como suas declarações IF() estão aninhadas.

Exemplos de fórmula de caixa de seleção

  1. Esta fórmula de caixa de seleção identifica uma oportunidade como pequena se a probabilidade for menor do que 50% (0,5) e a receita esperada for menor que 10.000.
    AND(Probability < 0.5, ExpectedRevenue < 10000)
  2. Esta fórmula marca um caso como prioridade máxima se a prioridade for marcada como alta, o caso não estiver fechado e ele for escalado ou não tiver sido atualizado em mais de uma semana. Esta fórmula é executada de forma diferente com base no lugar onde os parênteses são colocados.
    ISPICKVAL(Priority, "High") &&
    NOT(IsClosed) &&
    (IsEscalated || Days_Since_Last_Update__c > 7)
    Esta fórmula, por exemplo, usa parênteses com posicionamento ligeiramente diferente para verificar se um caso é de alta prioridade, fechado e escalado, ou se faz mais de sete dias desde a última atualização do caso.
    (ISPICKVAL(Priority, "High") &&
    NOT(IsClosed) && IsEscalated)||
    Days_Since_Last_Update__c > 7
  3. Esta fórmula exibe uma caixa de seleção, OK para chamar, que é marcada quando não há problema em chamar um contato. A fórmula verifica se o contato selecionou Não ligar. Se o contato não tiver feito isso, a fórmula garante que o campo número de telefone não esteja em branco.
    IF(NOT(DoNotcall), NOT(ISBLANK(Phone)), false)