問題
開発者がプログラムで新しい取引先責任者レコードを作成する際、どの標準項目が必須で入力が求められますか。
- Accountld
- Name
- LastName
- FirstName
正解
- Accountld
- Name
- LastName
- FirstName
解説
それぞれの選択肢の理由について説明します。
□ Accountld
これは不正解です。取引先責任者レコード(Contact)を作成する際にはAccountId項目は必須ではありません。AccountIdは取引先(Account)と取引先責任者(Contact)を関連付けるために使用されますが、必須条件ではなく、AccountIdを指定せずにContactレコードを作成することは可能です。ただし、これは通常の業務フローからは逸脱した操作となります。具体的には以下です。
- 情報の断片化: 取引先責任者が取引先に紐づかない場合、その取引先責任者がどの企業や組織に所属しているのか不明確となります。これにより、CRM内の情報が断片的かつ非構造的となり、効果的な顧客管理が難しくなる可能性があります。
- レポートの不正確さ: データの関連性が欠けていると、取引先や取引先責任者に関するレポートやダッシュボードが不正確になる可能性があります。たとえば、ある企業に所属する取引先責任者の数や、取引先ごとの売上高を正確に算出するのが難しくなります。
- 業務プロセスの障害: Salesforce内の自動化ツールや入力規則などが、取引先と取引先責任者の関連性を前提として設定されている場合があります。関連性が確立されていないデータが存在すると、これらのツールやルールが正常に動作しない場合があります。
- 顧客対応の遅延: 取引先責任者の情報が取引先と関連付けられていない場合、営業やカスタマーサポートなどのチームが顧客の背景情報を迅速に参照できないため、顧客対応に遅れが生じる可能性があります。
これらの理由から、取引先と取引先責任者の間の関連性はSalesforceのデータモデルにおいて重要であり、データの整合性を保つためには、この関連性を正しく設定することが推奨されます。
□ Name
これは不正解です。取引先責任者レコード(Contact)を作成する際、Name項目に直接書き込むことはできません。Name項目は読み取り専用で、FirstNameとLastName項目から自動的に生成されます。そのため、プログラムで新しい取引先責任者レコードを挿入する場合、Name項目を直接指定するのではなく、FirstNameまたはLastName項目に値を設定することで間接的にName項目の値を制御します。これはSalesforceのデータモデルにおける標準的な振る舞いであり、開発者がName項目に直接値を書き込むことを試みると、「Field is not writeable: Contact.Name」というエラーが出るためです。
□ LastName
これは正解です。取引先責任者レコード(Contact)を作成する際にはLastName項目が必須となります。LastName項目が入力されていない場合、Contactレコードの作成はエラーとなります。
□ FirstName
これは不正解です。取引先責任者レコード(Contact)を作成する際にはFirstName項目は必須ではありません。FirstName項目はオプションとなり、入力しなくてもContactレコードの作成は可能です。
実践
Salesforceの動作や設定の確認には、具体的なコードセグメントを利用して直接試してみることが非常に有効です。以下に提供するコードセグメントは、特定の項目の挙動や設定を確認するためのサンプルとなります。開発者コンソールの匿名ブロックで実行してみることで、想定した動作やエラーメッセージが返されるかどうかを確認することができます。
Salesforceにログイン > 画面の右上にある設定のアイコンをクリック > 開発者コンソール > Debugタブ > Open Execute Anonymous Window > 以下コードを挿入
で試してみましょう。
- LastNameが必須であることを確認するコード
Contact newContact = new Contact();
//newContact.LastName = 'TestLastName'; // LastNameをコメントアウトしています。
insert newContact;
System.debug('New Contact Id: ' + newContact.Id);
- Nameを設定するとエラーが発生するコード
Contact newContact = new Contact();
newContact.Name = 'TestName'; // Name項目を直接設定しています。
insert newContact;
System.debug('New Contact Id: ' + newContact.Id);
コメント