Salesforceの各レコードには必須項目があり、その項目は値を埋めた状態でないと保存することが出来ません。
代表的な必須項目として各レコードの名前にあたるName項目があります。取引先で言えば取引先名、カスタムオブジェクトであればオブジェクト新規作成時に設定するレコード名です。
Name項目は自動採番型/テキスト型の2つがありますが、テキスト型では常に値入力が求められます。
今回はName項目をブランクのまま保存する方法とそのメリットを見ていきます。
Name項目をレコード保存後に項目自動更新する場合
Name項目をある一定のルールで更新したい場合があります。例えば商談では商談名を”取引先名”+”完了予定日”などで統一したいなどです。
商談を作成するユーザが”取引先名”+”完了予定日”となるように手動で商談名を入力してくれればいいですが、必ずルール通りでない入力はあるので保存後に自動更新させる仕組みをよく使います。
その際にネックになるのが
「保存前にName項目になにか文字を入力しないと保存できない」
というものです。
”A”でも”あ”でもいいのですが、Name項目が必須のため何か入力することが必要です。
ただユーザにその運用を求めることはスマートとは言えません。
動的フォームとは
レコードへの項目配置は通常ページレイアウトで行いますが、動的フォームではLightningページで配置します。
1項目がLightningページでの1コンポーネント扱いとなるので、項目Aが入力された時のみ項目Bを表示するといったことが可能です。
ただしSpring’22時点でカスタムオブジェクトでのみ使用可能なため、取引先などの標準オブジェクトでは使用できません。

この動的フォームを適用すると、Name項目は必須となりません。つまりName項目をブランクのままでレコード保存が出来ます。(出来てしまいます。)
動的フォーム適用/非適用時の違い
動的フォームを使用しないで通常のページレイアウトにて項目を配置している場合、下記のようにName項目(=カスタムオブジェクトA名)は必須となります。
【動的フォーム適用前の通常レコード編集画面】

一方Lightningページで動的フォームを適用した場合を見てみます。
【Lightningページでの動的フォーム設定画面】

【動的フォーム適用後のレコード新規作成画面】

分かりづらいですが、「カスタムオブジェクトA名」というName項目で赤い*マークが外れているため必須でないことが分かります。
ではこのName項目をブランクの状態で保存すると、保存後のName項目には何が表示されるのでしょうか。
【動的フォーム適用後のレコード保存後画面】

このように、Name項目にはSalesforceIDがセットされました。結果的にName項目に値が入るという意味では標準ページレイアウトでも動的フォームでも一緒ですが、保存前にName項目が必須でないという点では大きな差があります。
注意点
動的フォームを適用している状態でも、レコード作成/編集時に常に適用されるとは限らないようです。
1.各オブジェクトから”新規”ボタンでレコード作成時:動的フォームが適用される
2.関連するレコードの関連リスト内から”新規”ボタンでレコード作成時:動的フォームが適用される
3.参照項目の”新規”からレコード作成時:動的フォームが適用されない
3の例 動的フォームを適用しているオブジェクト(下記例ではカスタムオブジェクトA)の子にあたる別オブジェクトからレコードを新規作成する場合

↓この場合は動的フォーム適用時でも通常のページレイアウト画面になりName項目は必須となります。

その他にも下記も考慮が必要になりそうです。
・ExperienceCloudで外部ユーザがレコード作成や編集する際には動的フォームが適用されずにName項目が必須となる
・ページレイアウトでは下記のように”空白スペース”があるが、動的フォームでは使用できないようなので細かな項目配置は苦手

これらの注意点は下記サイトを参考に記載させて頂きました。

Salesforceドキュメントにも動的フォームの既知の問題が記載されています。
最後に
ここまでカスタムオブジェクトであれば動的フォームを使えるのでユーザがName項目をブランクのままでも保存できること、
結果的にName項目がブランクのまま保存しても項目自動更新でルールに沿ったName項目に揃えられることを見てきました。
現在のロードマップではWinter’23で取引先/取引先責任者/商談、Spring’23でリード、Summer’23でケースに対して動的フォームリリースが予定されているようです。
その他の標準オブジェクトでも動的フォームが使えるようになればより汎用的に使用できそうですね。

コメント