:::: MENU ::::

Salesforceでアカウント毎に特定項目を非表示にしたいときの注意点

  • ユーザからの入力時に必須項目を設けたい
  • Web-to-リードを利用したい
  • ログインアカウントによってページレイアウトを変更して閲覧できる情報を制限したい

例えばこのような要件があった場合を想定する。
通常の DB 設計と同じように必須項目などを決めていると、
実はできませんでしたといった落とし穴があるのでメモ。

必須項目を扱う上での制約


・ 標準項目は、必須にはできません。
・ 必須項目は、すべてのレコードタイプで必須です。
・ 必須項目は、項目レベルセキュリティに関係なく、編集ページに常に表示されます。
・ ページレイアウトを設計するとき、必須項目は次の制約を持ちます。
・ ページレイアウトから削除できません。
・ ページレイアウトに存在しない場合には、ページレイアウトの最初のセクションの終わりに自動的に追加されます。
・ 参照のみまたは省略可能には設定できません。
・ 常に可視であることを表す太字で表示されます。
・ 項目プロパティページでは、必須設定を削除できないため、無効になります。
・ インポートファイルに必須項目を入れないと、インポートが失敗します。
・ Web-to-リードおよび Web-to-ケース要求データは、Salesforce によって検証されません。要求を送信しても、無効なデータは保存されません。たとえば、カスタム項目が通貨項目の場合に、ユーザが数値ではなく「Abc」などの英字を入力しても、要求は送信されますが、カスタム通貨項目に値は保存されません。

いくつか重要そうなものを引用させてもらったが、
ページレイアウトから必須項目は削除できないなど、
レイアウトに関する制約で困ることが多いため、
アカウントによって表示項目を制限している場合は、必須項目を利用しないほうがよい。

リードの標準必須項目

・名前
・会社名
・リード状況

リードの標準項目で必須となっているのは上記3件。

リードのページレイアウト編集にある必須項目
なぜか必須項目でもないのに「メール」がページレイアウトから削除できないのは謎。。

ちょっとリードで変わっているのは「名前」という項目は、
「姓(必須)」+「名(任意)」から生成された項目だということ。
直接 POST する項目ではない。

必須項目になっているのは実は「姓」だけ。
入力時の必須判定は「姓」にのみ行われるが、
ページレイアウトに関しては「姓」「名」を選択できないので、
制約は「名前」のほうにつく。

そのため「名前」にアカウント毎に表示・非表示を制御したい内容を入れてしまうと、
ページレイアウトでの制御ができなくなるため、絶対に入れてはいけない。

同じ用途のカスタム項目を作成する必要がある。

カスタム項目で必須項目にできるもの


・ 通貨
・ 日付
・ 日付/時間
・ メール
・ 主従関係 (常に必要)
・ 数値
・ パーセント
・ 電話
・ テキスト
・ テキストエリア
・ URL

アカウント毎に出し分けをする必要もなく、
かつ入力必須にしたいものだけを必須項目にすればいいかと。

個人的には、Salesforce 上から入力することがなければ
Web フォームにて js と php などで入力制御していれば、
入れる側の箱で制限する必要はないのではないかと思う。
(まぁここは抜け道がどのくらいあって、抜けられると致命的かどうかで決めるところだが)