※こちらは過去に公開していたブログからの移行記事です。
選択リスト項目の値を、下図のように矢印の順にしか変更できないように設定するには、何を使用したらいいでしょうか。
・新規作成時は「空白」でないといけない。
・値を設定後、「空白」には変更できない。
・「AAA」に変更するには、前の値が「空白」または「BBB」でないといけない。
・「BBB」に変更するには、前の値が「AAA」でないといけない。
・「CCC」に変更するには、前の値が「AAA」でなくてはいけない。
PRIORVALUEを使用した入力規則で解決
「PRIORVALUE」という、項目の前の値を返す関数を使用した入力規則を設定します。
◇SALESFORCE ヘルプ >ドキュメント >コードではなくてクリックによる SALESFORCE の拡張
数式の演算子と関数 I – ZPRIORVALUE
説明: 項目の前の値を返します。
使用方法: PRIORVALUE(field)
入力規則の例: AND(PRIORVALUE(Amount) > Amount, IsClosed) を入力規則として指定すると、クローズされた商談の期待収益がユーザによって変更されるのを防ぐことができます。
設定した数式
OR (
ISNEW() && NOT( ISPICKVAL( Test__c , "" )) ,
(
AND (
OR (
ISPICKVAL( Test__c , "" ) ,
ISPICKVAL( Test__c , "AAA" ) && NOT(ISPICKVAL( PRIORVALUE ( Test__c ), "" ) || ISPICKVAL( PRIORVALUE (Test__c), "BBB" )) ,
ISPICKVAL( Test__c , "BBB" ) && NOT(ISPICKVAL( PRIORVALUE ( Test__c ), "AAA" )) ,
ISPICKVAL( Test__c , "CCC" ) && NOT(ISPICKVAL( PRIORVALUE ( Test__c ), "AAA" ))) ,
ISCHANGED( Test__c )
)
)
)※「Test__c」が、該当の選択リスト項目です。
※ISBLANKを使用する場合、選択リスト項目では、ISBLANK(TEXT(Test__c))のように一度テキストに変換する必要があるため、今回は""で空白を表現しています。
※レコード作成時、PRIORVALUE関数は空白ではなく、項目に入力された値を返します。
ひとこと
数式の作り方はひとつではないので、今回の数式もあくまでも一例です。似たような状況のときに、参考情報として活用いただければ幸いです。
{{i18n("articles.view.premium")}}