Salesforce 認定 Platform アドミニストレーター 上級 無料問題 1 / 10 ・ 分野1: セキュリティとアクセス
取引先責任者-to-複数取引先を有効にした組織で、取引先責任者「佐藤」は、主取引先のほかに取引先 B と間接リレーションを持つ。この間接リレーションは、本当は取引先 C との関係だった。管理者はデータローダで、このリレーションのレコード(AccountContactRelation)の AccountId を C に書き換えて直そうとしている。Object Reference(Summer '22)の説明に合うものはどれか。
- AccountId を C に書き換えて更新すれば、役割(Roles)や開始日を保ったまま、関係が C に付け替わる
- AccountId は既存のレコードの更新では書き換えられないので、B との関係を削除し、C との関係を作り直す
- AccountId を C に書き換えて更新すると、関係は C に付け替わるが、役割(Roles)は空に戻る
- AccountId は通常の更新では変えられないが、外部 ID を使った upsert でなら書き換えられる
正解と解説を見る
正解: B
正解の理由
Object Reference(Summer '22)の AccountContactRelation は、AccountId の項目について、既存のリレーションのレコードを更新するときには変更できない(can't be modified when updating existing account-contact relationship records)と書く。ContactId も同じである。プロパティにも Update が無く、作成(Create)のときだけ値を入れられる。オブジェクトは create() と delete() に対応しているので、B との関係のレコードを削除し、C との関係を新しく作ることになる。
違う選択肢
「AccountId を C に書き換えて更新すれば、役割(Roles)や開始日を保ったまま、関係が C に付け替わる」… AccountId は既存のレコードの更新では変更できない。役割や開始日を保ったまま相手の取引先だけを付け替える更新はできず、相手を変えるには関係を作り直す。
「AccountId を C に書き換えて更新すると、関係は C に付け替わるが、役割(Roles)は空に戻る」… AccountId は既存のレコードの更新では変更できないので、付け替えたうえで役割だけが空に戻る、という結果にもならない。役割(Roles)は作成と更新のどちらでも入れられる項目である。
「AccountId は通常の更新では変えられないが、外部 ID を使った upsert でなら書き換えられる」… upsert は、外部 ID で一致した既存のレコードには更新として働く。AccountId は既存のレコードの更新では変更できないので、upsert でも書き換えられない。プロパティにも Update が無い。
押さえどころ
AccountContactRelation は API 37.0 から使え、個人取引先にも対応する。IsDirect は、その取引先が取引先責任者の主取引先かどうかを表し、作成時に既定で決まる項目で、作成や更新で直接は入れられない。関係の履歴は StartDate と EndDate で残せ、IsActive で有効かどうかを表す。役割(Roles)は複数選択リストである。