※過去に公開していたブログからの移行記事を修正しました。
前回の記事のように、カスタムオブジェクトでレコードの名前(Name)を重複しないよう、入力規則でVLOOKUPを使用することができます。
同じように、取引先に住所を入力する際に「郵便番号と住所の組み合わせが正しくない場合は保存させない」ように設定することができます。
手順の概要
カスタムオブジェクトの作成
1.カスタムオブジェクト『郵便番号マスタ(PostalMaster_c)』を作成します。
入力規則で利用するVLOOKUP関数において、検索先として指定できるのはカスタムオブジェクトの名前項目だけです。そのため、「郵便番号マスタ名(NAME)」には郵便番号を登録し、一意となるような運用を考えておきます。
カスタムオブジェクトの定義・オブジェクトの表示レベル:郵便番号マスタ
・オブジェクト名:PostalMaster
・レコード名(表示ラベル):郵便番号マスタ名
・レコード名のデータ型:テキスト
※データ型以外は、わかりやすければOKです。
2.郵便番号に対応する「住所」を入力するカスタム項目を作成します。
データ型:テキスト(100文字としていますが、調整してください)
表示ラベル:住所
項目名:Address
「郵便番号マスタ」タブを使用したい場合は、タブを作成します。
郵便番号の登録
作成した郵便番号マスタ(レコード)に、郵便番号と住所を登録します。
※大量に登録するときはデータローダを使用します。
入力規則の設定
取引先に入力規則を設定します。
数式は次の通りです。
AND(
VLOOKUP(
$ObjectType.PostalMaster__c.Fields.Address__c , $ObjectType.PostalMaster__c.Fields.Name , BillingPostalCode ) <> BillingCity
)・「$ObjectType.PostalMaster__c.Fields.Address__c 」は、【項目の挿入】から「$ObjectType >」、「郵便番号マスタ >」をクリックして、「住所」を挿入します。
・「$ObjectType.PostalMaster__c.Fields.Name」 は、【項目の挿入】から「$ObjectType >」、「郵便番号マスタ >」をクリックして、「郵便番号マスタ名」を挿入します。
・「BillingPostalCode」は、【項目の挿入】から「取引先 >」をクリックして、「郵便番号(請求先)」を挿入します。
・「BillingCity」は、【項目の挿入】から「取引先 >」をクリックして、「市区群(請求先)」を挿入します。
数式の意味
※かなりざっくり、どこが何を意味しているかの説明です。
$ObjectType.PostalMaster__c.Fields.Name , BillingPostalCode 「郵便番号マスタ名」=郵便番号と『取引先』の「郵便番号(請求先)」を照合し、
$ObjectType.PostalMaster__c.Fields.Address__c , 同じ郵便番号を持つ『郵便番号マスタ』の「住所」の値をもってきて参照して、
<> BillingCity『取引先』の「市区群(請求先)」と不一致である。
テストします
郵便番号と住所の組み合わせが誤っているものを登録しようとすると、エラーになりました。
ポイント
一致させる値は、カスタムオブジェクトのレコード名(名前項目)です。また、一致させる項目同士は、同じデータ型にしないといけません。
感想
実際には、市区郡だけでは郵便番号が一意とならない(番地まで鑑みる必要がある)場合があるので、郵便番号のチェックとして使用するためには、細かな設定の検討が必要そうです。
マスターがあり、それと必ず一致させなければならないデータが大量にある場合、そしてカスタムオブジェクトの上限が迫っていないときには、こちらを試してみてもいいかもしれません。
関連記事
入力規則でVLOOKUPを使って、カスタムオブジェクトのレコード名の重複を防ぐ