【Salesforce】Sandboxでは入力規則を無効にしたい!
Salesforceの入力規則、便利なのですが、「sandbox環境でテストデータを作る際に弾かれて面倒くさい!!」ってこと、ありますよね?
そうなると考えたいのが、Sandbox環境では入力規則が働かないようにすることです。
Apexだと、org.IsSandboxが使えるらしいのですが、入力規則の数式では使えません。
そこで使うのが、以下の数式です。
$Organization.Id = $CustomMetadata.SystemRecordId__mdt.PrdOrgId.RecordId__c
前提として、システムで使うメタデータは、カスタムメタデータであるSystemRecordId__mdt に登録してあります。
$Organization.Id で、現在の組織のIdが返されます。
それが、カスタムメタデータに登録したProdOrgId.RecordIdと一致しているかを判断するわけですね。
ちなみに、本番組織IDを文字列で書いたり、カスタム表示ラベルに格納しておくと、Sandbox作成時にSandboxのIDに置換されてしまいます!
なんでやねん!!!
なのでカスタムメタデータを使いましょう。
上記の数式を使うための準備のやりかた
ざっくり解説しておきます。
設定→カスタムメタデータ型から、新規カスタムメタデータ型を作成
表示ラベル:システムレコードId
オブジェクト名:SystemRecordId
カスタムメタデータ型にカスタム項目を追加
表示ラベル:レコードId
API名:RecordId
型:テキスト(18)
カスタムメタデータに、レコードを追加
表示ラベル:Salesforce本番組織ID
システムレコードId名:PrdOrgId
レコードId:私の組織情報で確認して入力
入力規則で、当初の式でメタデータが参照できるようになる。