Administrator 練習問題 Q107
AW Consultingの管理者は、カスタムの選択リスト項目を作成しました。ビジネスユーザーは、この項目をテキスト項目に変更してほしいと要望しています。管理者が項目のデータ型を変更しようとしたところ、他の設定から参照されているために変更できませんでした。データ型の変更を妨げている設定はどれですか?
左の○で回答を選択。本文を押すと横線で除外でき、もう一度押すと戻せます。
1つ選択してください(0/1)
正答:A. 数式項目
解説
前提知識
選択リスト項目とテキスト項目の違い
選択リスト項目は、あらかじめ用意された選択肢(値のセット)の中から選んで入力する項目です。テキスト項目はユーザーが自由に文字を入力する項目です。型が違うと、その項目を扱える関数も変わります。
項目のデータ型変更とその制約
カスタム項目のデータ型は、あとから設定画面で変更できる場合があります。ただし、その項目が数式項目、Visualforceページ、Apexコード、プロセス、フローなどから参照されている場合は、その参照を解消するまでデータ型を変更できません。また、変換元と変換先の型の組み合わせによっては既存データが失われるため、事前のバックアップと影響調査が必要です。
数式項目とは
他の項目の値を使って自動的に値を計算する項目です。数式の中で対象項目の型に依存した関数(選択リストなら ISPICKVAL や TEXT など)を使っている場合、参照元項目の型を変えると数式が成り立たなくなるため、Salesforceはデータ型変更をブロックします。
[使用場所]とは
項目の詳細画面にあるボタンで、その項目がどの設定から参照されているかを一覧で確認できます。変更がブロックされたときは、まずここを見ます。
設問の状況を分解する
- AW Consultingの管理者が、カスタムの選択リスト項目を作成した
- ビジネスユーザーは、これをテキスト項目に変えてほしいと要望している
- 管理者がデータ型を変更しようとしたところ、他の設定から参照されているためにできなかった
- つまり問われているのは、「項目を参照していることで型変更をブロックする設定はどれか」です 初学者が誤解しがちな点は、「[使用場所]に表示される参照」と「データ型変更を実際にブロックする依存関係」を同一視することです。[使用場所]にはページレイアウトやレポートも表示されますが、公式の型変更に関する考慮事項では、数式項目、Visualforceページ、Apexコード、プロセス、フローなどの型に依存する参照が変更不可の原因として示されています。
選択肢の検討
A. 数式項目 → ⭕ 正解
対象項目を参照する数式項目がある場合、データ型を変えると数式の構文や結果が無効になるため、Salesforceは変更をブロックします。例えば選択リスト専用の ISPICKVAL() を使った数式は、参照先がテキストになった瞬間に意味を失います。先に数式側の参照を削除または修正してから、項目の型を変更します。
B. レコードタイプ → ✕
レコードタイプは、同じオブジェクトを業務の種類ごとに使い分け、選択リストで利用できる値をレコードタイプごとに制御する仕組みです。公式の型変更に関する考慮事項では、レコードタイプの値割り当ては、数式項目のような変更不可の参照として挙げられていません。型変更後は選択リスト値の割り当てが不要になるため、関連設定を見直します。
C. レポート → ✕
レポートは[使用場所]に列や検索条件として表示される場合がありますが、公式の型変更に関する考慮事項では、数式項目のような変更不可の参照として挙げられていません。ただし、選択リストを前提にしたフィルター条件やグループ化は、型変更後に意図しない結果になることがあるため見直しが必要です。
D. ページレイアウト → ✕
ページレイアウトは、レコード詳細画面でどの項目をどこに表示するかを決める設定です。[使用場所]にはページレイアウトも表示されますが、公式の型変更に関する考慮事項では、数式項目のような変更不可の参照として挙げられていません。型変更後は表示や入力方法が要件どおりかを確認します。
管理者としての対処手順
- [設定]→[オブジェクトマネージャ]で対象オブジェクトを開き、対象項目の詳細画面で[使用場所]を実行して、数式項目、Visualforceページ、Apex、フローなどの参照先を確認する。
- 参照元の数式項目を開き、対象項目の参照部分を一時的に削除する、または新しい型でも成り立つ式に修正する。
- 既存データをエクスポートしてバックアップし、選択リスト→テキストの変換によるデータ・リストビュー・入力規則・自動化への影響を確認する。
- 対象項目の[編集]からデータ型をテキストに変更する。
- 一時的に変更した数式を新しいデータ型に合わせて復元し、Sandboxでテストしてから本番に反映する。
- 選択リストを前提にしていたレポートのフィルターやグループ化を見直す。
あわせて覚えておきたいポイント
- データ型変更を妨げる依存関係は数式項目だけではありません。Visualforceページ、Apexクラスやトリガー、フローなどから参照されている場合も変更できません。
- ページレイアウトやレポートは[使用場所]に表示されることがあります。設問の選択肢では、データ型変更を妨げる設定として公式に明示されているのは数式項目です。
- 選択リストからテキストへの変換は比較的安全ですが、逆方向(テキスト→選択リスト)では、選択肢にない値の扱いに注意が必要です。
- 項目を削除・変更する前に[使用場所]を見る習慣をつけると、予期しないエラーを大幅に減らせます。
出典(Salesforce公式)
- Error ‘Cannot change type due to existing data’ when you update custom field data types — 数式項目から参照されているカスタム項目のデータ型変更がブロックされ、変更前に数式の参照を修正または削除する必要があることを裏付けています。
- Considerations for Converting the Field Type of a Custom Field — Visualforceページ、Apexコード、プロセス、フローなどから参照されているカスタム項目もデータ型を変更できないこと、および型変換によるデータ損失の注意事項を裏付けています。
- Find Where a Field Is Used — [使用場所]で数式項目、Visualforceページ、Apex、フロー、Lightningコンポーネントなどの参照先を確認できることを裏付けています。