Maitriser les règles de validation

Publié dans Administrateurs
19 juillet, 2022
2 min de lecture
Maitriser les règles de validation

Les règles de validation dans Salesforce vérifient que les données saisies par un utilisateur répondent à certains critères. Si la règle est vraie, un message d’erreur s’affiche afin d’expliquer à l’utilisateur ce qu’il doit faire pour corriger l’enregistrement.Observons quelques exemples 📗.


⚙️ Configuration

  • Allez dans Configuration
  • Cliquez sur le gestionnaire d’objets
  • Sélectionnez un objet
  • Choississez Règles de validation à gauche puis Nouveau
  • Saisissez un nom et une description (cf: Convention de nommage)
  • Définissez vos critères dans Formule de condition d’erreur
  • Cliquez sur Vérifier la syntaxe (Optionnel)
  • Définissez un message d’erreur explicite pour l’utilisateur
  • Enregistrez

🧠 Fonctions communes

  • AND() renvoie vrai si tous les éléments contenus sont vrais.
  • OR() renvoie vrai si l’un des éléments contenus est vrais.
  • NOT() renvoie vrai si l’élément contenu est faux (et inversement).
  • ISBLANK(champ) renvoie vrai si le champ est vide.
  • TEXT(champ) convertit une valeur en texte.
  • LEN(champ) renvoie la longueur d’une valeur.
  • ISNEW() renvoie vrai si l’enregistrement est en cours de création.
  • ISCHANGED(champ) renvoie vrai si le champ à changé.
  • PRIORVALUE(champ) renvoie la valeur précédente d’un champ.
  • Plus d'opérateurs et fonctions ici

💼 Règles de validation de comptes

Le chiffre d’affaires doit être positif sans excèder 100 milliards

OR(
AnnualRevenue < 0,
AnnualRevenue > 100000000000
)

Le numéro de compte doit être renseigné et numérique

OR(
ISBLANK(AccountNumber),
NOT(ISNUMBER(AccountNumber))
)

Le numéro de compte doit comporter sept chiffres quand il n’est pas vide

AND(
NOT(ISBLANK(AccountNumber)),
LEN(AccountNumber) <> 7
)

👩‍💼 Règles de validation de contacts

Les champs d’adresse postale sont obligatoires

OR(
ISBLANK(MailingStreet),
ISBLANK(MailingCity),
ISBLANK(MailingCountry)
)

Le numéro de téléphone doit commencer par + (code pays)

LEFT(Phone, 1) <> "+"

✍️ Règles de validation de d’opportunités

La date de livraison est nécessaire pour cette étape

AND(
OR(
ISPICKVAL(StageName, "Closed Won"),
ISPICKVAL(StageName, "Negotiation/Review")
),
ISBLANK(DeliveryDate__c)
)

La date de clôture ne peut pas être antérieure au mois en cours

AND(
OR(
ISNEW(),
ISCHANGED(CloseDate)
),
CloseDate < DATE(YEAR(TODAY()), MONTH(TODAY()), 1)
)

La date de clôture ne doit pas être un jour passé

CloseDate < TODAY()

Le taux de remise doit être compris entre 0 et 40 %

OR(
DiscountRate__c < 0,
DiscountRate__c > 0.40
)

Le nom doit comporter un trait d’union

FIND( " - ", Name ) = 0

Impossible de supprimer les produits des opportunités clôturées

AND(
OR(
ISPICKVAL(StageName, "Closed Won"),
ISPICKVAL(StageName, "Closed Lost")
),
NumberOfProducts__c < PRIORVALUE(NumberOfProducts__c)
)

👤 Règles de validation d’utilisateurs, de rôles et de profils

Seul le propriétaire d’enregistrement peut modifier le champ

AND(
ISCHANGED(PersonalGoal__c),
Owner <> $User.Id
)

Seul le propriétaire ou l’administrateur peuvent changer le champ

AND(
ISCHANGED(PersonalGoal__c),
Owner <> $User.Id,
$Profile.Name <> "Custom: System Admin"
)

🗓️ Règles de validation de dates

La date doit être un jour de semaine

CASE(
MOD(MyDate__c - DATE(1900, 1, 7), 7),
0, 0,
6, 0,
1
) = 0

La date doit faire partie du mois en cours

OR(
YEAR(MyDate__c) <> YEAR(TODAY()),
MONTH(MyDate__c) <> MONTH(TODAY())
)

La date doit être le dernier jour du mois

DAY(MyDate__c) <>
IF(
Month(MyDate__c) = 12,
31,
DAY(DATE(YEAR(MyDate__c),MONTH(MyDate__c)+1,1) - 1)
)

La date doit être comprise dans une période d’un an à compter d’aujourd’hui

MyDate__c - TODAY() > 365

🔢 Règles de validation de nombres

Le nombre doit être positif et pair

OR(
MyNumber__c < 0,
MOD(MyNumber__c, 2) <> 0
)

Le nombre doit être un entier

FLOOR(MyNumber__c) <> MyNumber__c

Le nombre doit être compris entre -50 et 50

ABS(MyNumber__c) > 50

Autoriser l’augmentation mais non la diminution d’un nombre

PRIORVALUE(MyNumber__c) > MyNumber__c

📖 Règles de validation diverses

Interdiction de modifier un champ après la création d’un enregistrement

ISCHANGED(MyField__c) && NOT(ISNEW())

Champs obligatoires quand un prospect est converti

AND(
IsConverted,
OR(
ISBLANK(Phone),
ISBLANK(Email),
ISPICKVAL(Rating, “”)
)
)

Numéro de sécurité sociale: 9-99-99-99-999-999-99

NOT(OR(
ISBLANK(SocialSecurityNumber__c),
REGEX(SocialSecurityNumber__c, "[0-9]{1}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{3}-[0-9]{3}-[0-9]{2}")
))

Devise valide

CASE(CurrencyIsoCode,
"USD", 1,
"EUR", 1,
"GBP", 1,
"JPY", 1,
0
) = 0

Adresse IP: 4 fois 3 chiffres (0 à 255) séparés par des points

NOT(REGEX(IPAddress__c, "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.)
{3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$" ))

Carte de crédit: 9999-9999-9999-9999 ou 9999999999999999

NOT(REGEX(CreditCardNumber__c , "(((\\d{4}-){3}\\d{4})|\\d{16})?"))

Le site Web doit avoir une extension .com, .org, .net ou .fr

AND(
RIGHT(WebSite__c, 4) <> ".COM",
RIGHT(WebSite__c, 4) <> ".com",
RIGHT(WebSite__c, 4) <> ".ORG",
RIGHT(WebSite__c, 4) <> ".org",
RIGHT(WebSite__c, 4) <> ".NET",
RIGHT(WebSite__c, 4) <> ".net",
RIGHT(WebSite__c, 6) <> ".FR",
RIGHT(WebSite__c, 6) <> ".fr"
)

🍭 Astuces Bonus: Désactivation (Utilisateurs/Flux)

Pour avoir la possibilité de désactiver les règles de validation pour un utilisateur, créez un champ sur l’objet User nommé overpassVR, puis ajoutez dans chaque règle

&& NOT($User.OverpassVR__c)

Sur le même principe il est possible de désactiver une règle pour un flux. Par exemple créez une case à coché “Toggle” sur l’objet mis à jour dans votre flux, ajoutez sur ce dernier une variable de formule appelée “ChangeToggle” en utilisant “IF(Toggle__c = TRUE, FALSE,TRUE)”, puis définissez la valeur de Toggle dans votre flux égale à ChangeToggle. Enfin complétez votre règle de validation avec

&& NOT(ISCHANGED(Toggle__c))

Etienne Gaudry

Etienne Gaudry

Lead Salesforce

Articles Similaires