【Salesforce】[リファレンス] 入力規則の設定

スポンサーリンク

Salesforceのカスタマイズにおいてよく利用する入力規則の設定を紹介します。

なお、入力規則の設定可能な数は契約のエディションによって異なります。
現在設定可能な数については最後の参考サイトにて記載されていますが、
その点は注意してください。

正規表現を使用して入力規則を設定します。

例:テキスト項目 NumAlphabet__c に対して、半角英数字のみの入力規則を設定する

NOT( REGEX( NumAlphabet__c , “^[A-Za-z0-9]*$” ) )

^[A-Za-z0-9]*$
上記の正規表現ですが、意味としては左から順に
先頭、半角大文字小文字の英数字が0文字以上、末尾
となります。

半角英数字以外の文字があれば、(NOT)により入力規則に合致しエラーと判定されることになります。「0文字の場合も含めなければ、必須入力項目化してしまう」ので、その点は注意しましょう。

なお、この例で表現している正規表現はSalesforce独自の正規表現というわけではなく、
一般的な正規表現のみを利用した形式としているので、覚えておくとよいです。

入力エラーとなることを確認します。

取引先項目名に「㈱」などの機種依存文字を入力できないようにする

Windowsなどを利用している環境では、「㈱」(括弧付きの株)の文字を入力するユーザが比較的多いです。ですが、この文字は一般的に「機種依存文字」と呼ばれるものです。このことから、Salesforceへは入力しないようにあらかじめ制限します。
任意の文字位置に該当文字が含まれないように、正規表現を利用します。
 
例:テキスト項目 Name に対して、機種依存文字「㈱」の入力はエラーとなるよう設定する

REGEX( Name , “.*㈱.*” )

エラーとなることを確認します。

ちなみにこの入力規則ですが、「Salesforceへ入力できるのであれば問題ないのではないか?」と思われる方がいるかもしれません。

今後Salesforceでしか運用しないといったことであればそれでも構いませんが、将来のことはわかりません。また、システム間でデータの連携を行うといったケースは多く、後になってから意図しない問題が発生すると後々面倒になります。
なので、すぐに問題が発生するわけではないのですが、データの入力時点で問題の混入原因となりうるものは排除しておくことをおすすめいたします。

一部の項目を更新しようとした際、特定の項目が未入力だった場合はエラーとする

例:商談のフェーズ StageName を「見積提示」に変更する際、
  回答期限日 QuoteDate__c が空欄になっていた場合はエラーとする

AND (
ISPICKVAL( StageName, “見積提示” ),
ISBLANK( QuoteDate__c )
)

エラーとなることを確認します。

日付項目の値を後日に延期することを禁止する

例:商談の完了予定日を後日に延期更新しようとすると、エラーを表示する

AND(
  ISCHANGED( CloseDate ),
  CloseDate > PRIORVALUE( CloseDate )
)

エラーとなることを確認します。

上記の入力規則を設定することで、入力当初の計画に対する状況を把握するという面では商談管理が安定します。ただ商談管理の方法として、あえて完了予定日の延期更新を可能としておくことで組織管理者の気づきとすることもあります。どちらが良いかよく検討しましょう。
また、Salesforceでどのように運用するのかによっては、前倒しも含めて「完了予定日は更新そのものを禁止したい」といったケースもあるかと思います。その場合は以下の設定で実現できます。
ISCHANGED( CloseDate )

新規登録時のみ入力可能とし、内容の更新は禁止する(データ内の一部項目のみ)

例:外部システムID OuterID は初回入力のみ可能とし、内容を更新しようとするとエラーを表示する

AND(
  NOT( ISBLANK( PRIORVALUE( outerID__c ))),
  PRIORVALUE( outerID__c )<>outerID__c
)

エラーとなることを確認します。

マスターデータに紐づく情報として初回登録のみ許可し、以降の書き換えは禁止するといったケースで利用します。
なお、該当項目を
  • 特定の担当者のみ内容を更新できなくしたいが、それ以外の担当者は更新可能としない
  • データローダでしか内容を更新しない
として運用したいケースもよくあります。その場合はこの入力規則を設定するのではなく、アクセス権限を分割したいユーザー毎にプロファイル設定を分け、ページレイアウト設定の割り当てを変更する方法で制限するのが良いです。

新規登録時のみ入力可能とし、内容を更新しようとするとエラーとする(特定のデータのみ、全項目の内容更新を禁止する)

レコードタイプを設定することにより、更新不可とします。

例:商談データの予算と実績データが存在し、このうち予算データは更新不可とする

まずは以下のように予算データを判別するためのレコードタイプを設定します。

次に、以下の入力規則を設定します。

AND (
  RecordType.DeveloperName = “RecordTypePlan”,
  NOT(ISNEW())
)

設定したレコードタイプで予算管理データを新規登録した後、更新時にエラーとなることを確認します。

万が一該当データの修正が必要となった場合は、いったん該当データを削除し登録しなおすかシステム管理者に「一時的に入力規則を無効化する」ことを依頼した上で修正することとなります。

参考(外部リンク)

Copyrighted Image.