Validace! Třeba tyhle někdy pomůžou - Part 1
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!