数式を実際に書くときのためだけのサンプルを整理しておきます。
よく使う資料 | Answersで回答する時に使う情報のまとめ |
---|---|
よく使うオブジェクト | SOQL関係のまとめ |
関数一覧【独自のまとめ】 | 数式で参照先のNameでエラーが出る時 |
Examples of Validation Rules | Case(数式)のまとめ |
数式の整理 | Rich text項目を持つ数式項目を作成できません |
CONTAINS(field__c, "text") | 前方のゼロを消す TEXT(VALUE(ContractNumber)) |
RecordType.Name:日本語 DeveloperName:一意の英語 | >=, <= |
注意事項 | ISCHANEDを入れておいかないと起動を修正時だけに限定できない |
---|---|
ADDMONTHS( Start_Date__c , Months__c ) ADDMONTHS( DATE(YEAR(TODAY()),MONTH(TODAY()),1),1) -1 | DAY(DATEVALUE(ClosedDate)) HOUR(TIMEVALUE(ClosedDate)) MINUTE(TIMEVALUE(ClosedDate)) |
$Profile.Name <> 'System Administrator' | NOW()-CreatedDate |
TODAY()-DATEVALUE(CreatedDate) | Probability <= 0.75 //%型の時は少数で指定する |
OwnerId <> LastModifiedById --> $User.Id <> OwnerId //書き換えること | CreatedBy.FirstName CreatedBy.LastName |
Owner:User.FirstName & ' ' & Owner:User.LastName | TEXT(PRIORVALUE(Status))="Working" |
Owner:User.Username otsubo@brave-hawk-3moqt3.com | $UserRole.Name |
$Permission.sampleByPass = FALSE |
数式
この式の場合は太字の部分は文字列として認識されると思います。(URLのパラメータなど)
{! }の部分は結果が文字列として返されると私は認識しています。
XX__c={! IF( CONTAINS(TEXT(Opportunity.ContractType__c), "AA"),"AA","")}
エラーになった最初の式だと太字の部分が文字列として認識されるので保存はできたとしてもパラメータとしては正しくないと思います。よって今回の場合はIFの結果を文字列として返したいのでIFの前に{!を置くの正解だと思います。
XX__c=IF( CONTAINS({!TEXT(Opportunity.ContractType__c)}, "AA"),"AA","")
Owner.Nameが参照できない。
I don't think the Name of the user object can be referenced properly.
try using this formula.
{!$Record.Owner.FirstName} & " " & {!$Record.Owner.LastName}
連絡先はアカウント ID に関連付けられています
ISBLANK(AccountId)
when contains(FirstName, ''') then 'Invalid'
contains(FirstName, '\'')
ベースURLをべた書きしない方法
カスタム設定とかのほうがいいかな?
LEFT({!$Api.Enterprise_Server_URL_570} , FIND('/services', {!$Api.Enterprise_Server_URL_570})) & "/lightning/r/kenmei__c/"& {!$Record.Id} &"/view"
15桁のId
Use 15-digit Ids in formulas
I think it's better to use Name/DeveloperName instead of hardcoding id.
評価前の状態が重要
メールフィールドが空です >> フィールドを編集できます
メール フィールドが null ではありません >> フィールドを編集できません
AND(
NOT(ISNEW()),
NOT(ISBLANK(PRIORVALUE(Email))),
)
ライセンスの指定
NOT(ISPICKVAL( $Profile.UserType , 'Standard'))
NOT(ISPICKVAL( $Profile.UserType , 'PowerCustomerSuccess')) //カスタマーポータルマネージャ
PowerPartner //パートナー
CSPLitePortal //大規模ポータル
住所複合項目
SELECT Name, BillingStreet, BillingCity, BillingState, BillingPostalCode,BillingCountry, BillingLatitude, BillingLongitude from Account
式ではIdを直接書かない
AND(
ISNEW(),
$User.Username <> 'exempt.user@your.org',
ISBLANK( TEXT(LeadSource))
)
If you are gonna use " " or ' ' make sure you don't leave a blank space between the quotaion marks, because this => " " and this => ' ' do not equal blank/empty, they are literally a single blank space character (which is not the same thing)
Need help with validation rules excluding specific user and blank picklist field
条件式の場合には入力していない場合を忘れないようにする
AND(
NOT(ISBLANK(FieldName)),
OR(
LEN(FieldName) <> 6,
NOT(ISNUMBER( FieldName))
)
)
restrict field to numbers and not zero
ISCHANGEDの注意
ISNEWと使う時は、ORで場合分けする。
The ISCHANGED function only evaluates when the value of a field is updated, it will not evaluate on NEW, so to cover all scenarios I would write it like this
ISCHANGED関数は、フィールドの値が更新されたときにのみ評価され、NEWでは評価されないため、すべてのシナリオをカバーするために、次のように記述します。
OR(
AND(
ISNEW(),
NOT(ISBLANK(Price_Per_Unit__c)),
ISBLANK( Description__c)
),
AND(
ISCHANGED(Price_Per_Unit__c),
ISBLANK( Description__c)
)
)
checkbox型にISBLANKは使えない
Checkboxes are never empty -- they are either TRUE or FALSE.
So, for the checkbox, you can use. NOT(Set_CFIN_Defaults__c)
Validation Ruleはレコードの保存前に実行されるので、データ作成時には関連先のフィールドは参照できないです。
Validation not working before record is saved
Nameは必須項目なので、nullのチェックをしても意味がない
文字数を無意味に増やしているだけ
Job__c.Construction_Start_Date__c = " ",には要注意
Just an fyi , this Job__c.Construction_Start_Date__c = " " <== is not saying "ob__c.Construction_Start_Date__c field is blank, or null, or empty".
That is litrerally saying "Job__c.Construction_Start_Date__c field has a single space character in it.
Also, it kills a baby seal....
Warning Error when encoding row-level formula: Syntax error. Missing ')'
100円の位を切り捨て
FLOOR(X20221205a__c/1000) *1000
フィルターロジック
OR (1 AND 2 AND (4 OR 5)) OR (1 AND 3 AND (4 OR 5)) OR (2 AND 3 AND (4 OR 5)) OR (2 AND 6) OR (2 AND 7) OR (1 AND 3 AND 6) OR (2 AND 3 AND 6)
先頭のORは必要ない
(1 AND 2 AND (4 OR 5)) OR (1 AND 3 AND (4 OR 5)) OR (2 AND 3 AND (4 OR 5)) OR (2 AND 6) OR (2 AND 7) OR (1 AND 3 AND 6) OR (2 AND 3 AND 6)