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 📗.
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 )
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) <> "+"
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) )
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" )
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
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
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" )
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))
Liens rapides
Informations Légales