Validace! Třeba tyhle někdy pomůžou - Part 1

24.06.2023

Validační pravidla, jak super nástroj! Asi nemá smysl se rozepisovat o tom, k čemu to slouží a kdy je dobré je použit. Spíše se chci zaměřit na pár příkladů, které jsem někdy použil a myslím si o nich, že mohou pomoci i vám.

Pokud vás zajímá co je to za vytuněnou konzolku na psaní validaček, tak jsem o tom psal zde - Better Salesforce Formula.

First Stage - Opportunity vytvořená v první fázi

Občas je nutné zajistit, aby Opportunita (nejenom ta) byla vytvořená v první fázi, nikoliv ve fázi další a podobně. Důvodů to má několik, třeba forecasting, pipeline a podobně. Validace na tohle je velice kraťoučká, ale i tak určitě může pomoci. (Díky Péťo!)

Ukázka:

AND(
ISNEW(),
NOT(ISPICKVAL(StageName, "New")))

Formát telefonního čísla

Ano, telefonní číslo je důležité držet ve formátu, jaký potřebujete (například kvůli telefonní ústředně). Pro zjednodušení a představu, jak může validace vypadat, jsem připravit jednoduché pravidlo, které hlídá:

  • Předvolbu pro ČR
  • Předvolbu pro SK
  • Začátek čísla
  • Počet číslic

Ukázka:

AND(
NOT(
REGEX(Phone, "[+][0-9]{3}[0-9]{3}[0-9]{3}[0-9]{3}") &&
(BEGINS(Phone, "+420")||
BEGINS(Phone , "+421")
)))

Specifické případy

Občas potřebujete pravidlo aplikovat jen na jednotlivé uživatele, případně chcete, aby nějaký profil (př. integrační) měl možnost tuto validaci obejít. I to je možné a není to vůbec složité.

Specifický uživatel

Asi nejednoduší varianta: 

  • Chcete, aby někteří uživatelé měli možnost pravidlo obejít, ale aby velká většina musela podmínku splnit. 
  • Stačí přidat např. checkbox na objekt "User", který poté reflektujete v samotné syntaxi. V našem případě, použijeme předchozí případ - telefonní číslo.

Ukázka:

AND(
$User.PhoneFormatValidation__c = False,
NOT(
REGEX(Phone, "[+][0-9]{3}[0-9]{3}[0-9]{3}[0-9]{3}") &&
(BEGINS(Phone, "+420")||
BEGINS(Phone , "+421")
)))

Uživatel, který má checkbox zaškrtnutý, je vyjmut z podmínky a může tak zadat jakékoliv telefonní číslo.


Specifický profil

Pokud je potřeba zařídit, aby bylo možné pravidlo obcházet na úrovni profilu, opět je to možné a opět je to snadné. Stačí přidat jeden řádek, který definuje profil. V našem případě, chceme vynechat "Integration" profile.

Ukázka:

AND(
$User.PhoneFormatValidation__c = False,
NOT($Profile.Name = "Integration"),
NOT(
REGEX(Phone, "[+][0-9]{3}[0-9]{3}[0-9]{3}[0-9]{3}") &&
(BEGINS(Phone, "+420")||
BEGINS(Phone , "+421")
)))


Vyplň důvod než to zavřeš!

Jo, to je klasika. Skoro každý projekt to má a mě to nebaví vždycky psát, tak si to tady uložím. Zjednodušeně, máte třeba Opportunitu či Case a před uzavřením musíte vyplnit důvod. Zase to patří do kategorie nejjednodušších pravidel.

Ukázka pro Opp:

AND(
IsWon = False,
IsClosed = True,
ISBLANK(What_Happened__c))



Tak a to by pro dnešek stačilo. :-) 

Rozhodně v tomto budu pokračovat, protože těch možností a variant jak validace využít je nespočet (třeba ve flow nebo tak).

Máte nějaké přání nebo by vás zajímalo jak má být podmínka (funkčně) postavena? Dejte vědět!