ユースケース:構成フィールドデータセットオブジェクトの表示名と見積明細の入力

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:11分
  • SFDC でカスタムオブジェクトと Apex トリガーを設定して、 CPQ フィールドの表示名を入力する方法について説明します。

    CPQ管理パッケージの一部として、SFDCの構成フィールドデータセットオブジェクトの機能は、構成の構成ID、詳細計画で使用されるすべてのフィールド変数名、そのフィールドの値、およびCPQコンフィギュレーターから保存されるたびにその値のラベルを返すことです。

    フィールドデータリスト

    ただし、組織が下流プロセスに必要な、管理パッケージによって作成されたこれらのフィールド以外の CPQ の構成には、いくつかの追加の必要性がある場合があります。 たとえば、 CPQ フィールドの表示名を入力したり、関連する構成フィールドデータオブジェクトの見積明細に簡単にジャンプしてBOMに簡単に接続したりできます。

    フィールドデータリスト

    SFDC でカスタムオブジェクトと Apex トリガーを少しセットアップすれば、すべての構成が保存された後にこれらのフィールドを自動的に入力できます。

    必須条件

    まだ有効にしていない場合は、[アドミン設定] で [Logik Salesforce オブジェクトに構成データをプッシュ] を有効にします。これにより、SFDC での構成フィールドデータセットオブジェクトの作成が開始されます。

    アドミン設定

    注:
    これらの構成フィールドデータセットの作成は、見積もり自体が保存されていない場合でも、 CPQから構成が保存されるたびに発生します。これにより、Salesforce 組織で大量のデータが作成される可能性があります。詳細計画で使用されるすべてのフィールドを SFDC にプルするユースケースがない場合は、この設定を無効のままにして、BOM データの [拡張情報] プロパティを使用することをお勧めします。

    表示名を入力

    1. [SFDC セットアップ] で、[オブジェクトマネージャー] に移動します。
    2. 次の属性を持つ「LGK Label」という名前の新しいカスタムオブジェクトを作成します。
      • レコード名:ロジックラベル
      • データタイプ:自動番号
      • 表示形式:LGKLB-{0000}
      • 検索を許可:オン
      • このカスタムオブジェクトを保存した後に新しいカスタムタブウィザードを起動: オン
      残りの値はデフォルトのままにして、[ 保存] をクリックします。
    3. [新しいカスタムオブジェクトタブ] ページで、[タブスタイル] フィールドをクリックし、任意のスタイルを選択します。
    4. [ 次へ] をクリックし、もう一度 [ 次へ ] をクリックして、[ 保存] をクリックします。
    5. [LGK ラベル] の [フィールドと関係] をクリックし、[ 新規] をクリックします。次の属性を持つ新しいフィールドを作成します。
      • データタイプ:TextArea
      • フィールドラベル:label
      • フィールド名:ラベル
      [ 次へ] をクリックし、もう一度 [ 次へ ] をクリックして、[ 保存] をクリックします。
    6. [新規] をクリックします。次の属性を持つ新しいフィールドを作成します。
      • データタイプ:TextArea
      • フィールドラベル:variablename
      • フィールド名:variablename
      [ 次へ] をクリックし、もう一度 [ 次へ ] をクリックして、[ 保存] をクリックします。

    この新しい LGK ラベルオブジェクトは、SFDC でフィールド変数名とフィールドラベル名をホストする場所になります。ラベルは自動的にはインポートされません。また、CPQ アドミンのフィールドの変更や追加を頻繁に行いながら、手動で更新/インポートする必要があります。一括インポートの方法については、このガイドの後半で説明します。

    1. オブジェクトマネージャーで、「構成フィールドデータ」を検索します。
    2. [ フィールド & リレーションシップ] をクリックし、[ 新規] をクリックします。次の属性を持つ新しいフィールドを作成します。
      • データタイプ:TextArea
      • フィールドラベル:表示名
      • フィールド名:Display_Name
      [ 次へ] をクリックし、もう一度 [ 次へ ] をクリックして、[ 保存] をクリックします。
    3. [ トリガー] をクリックし、[ 新規] をクリックします。
    4. Apex コードブロックに次のコードを貼り付けます。
      trigger UpdateConfigurationLabels on LGK__ConfigurationFieldData__c (before insert) {
      	// Step 1: Collect FieldKeys from records to be inserted
      	Set<String> fieldKeys = new Set<String>();
      	for(LGK__ConfigurationFieldData__c confData : Trigger.new) {
      		fieldKeys.add(confData.LGK__FieldKey__c);
      	}
      	
      	// Step 2: Query LGK_Label__c based on collected FieldKeys
      	Map<String, LGK_Label__c> labelMap = new Map<String, LGK_Label__c>();
      	for(LGK_Label__c label : [SELECT label__c, variablename__c FROM LGK_Label__c WHERE variablename__c IN :fieldKeys]) {
      		labelMap.put(label.variablename__c, label);
      	}
      	
      	// Step 3: Loop through records to be inserted and update Display_Name__c
      	for(LGK__ConfigurationFieldData__c confData : Trigger.new) {
      		LGK_Label__c matchedLabel = labelMap.get(confData.LGK__FieldKey__c);
      		if(matchedLabel != null) {
      			confData.Display_Name__c = matchedLabel.label__c;
      		} else if(confData.LGK__ValueLabel__c != null) {
      			confData.Display_Name__c = confData.LGK__ValueLabel__c;
      		}
      	}

    フレームワークが完成しました。新しい [表示名] フィールドを [構成フィールドデータセット] レイアウトに追加します。あとは、フィールドラベル名を LGK ラベルオブジェクトにインポートするだけです。CPQフィールドの使用方法に応じて、これを実現する方法は 3 つあります。

    表 : 1. フィールドラベルのインポート方法フィールドラベル名を LGK ラベルオブジェクトにインポートする方法

    CPQラベルの手動作成

    1. [LGK ラベル] タブから新しい Logik ラベルオブジェクトを作成します
    2. CPQ変数名と正確に一致するように「variablename」を入力します
    3. 「ラベル」を任意のラベルに入力します

    長所:

    • 表示名が必要なフィールドの数が少ない場合に適しています
    • フィールドラベル名をカスタマイズして、 CPQ 管理およびレイアウトでの表示方法とは異なるものにすることができます

    短所:多数のフィールドで面倒なプロセスになる可能性がある

    すべての CPQ フィールドのエクスポートからの一括インポート

    1. CPQアドミンフィールドのタブで、[エクスポート] をクリックします
    2. CSV ファイルを開き、列「B」と「C」以外のすべてのデータを削除します
    3. ヘッダーの名前を「label」と「variablename」に変更して保存します
    4. SFDC で、[LGK ラベル] タブに移動し、[インポート] をクリックします
    5. 「LGK ラベル」を選択
    6. [新しいレコードを追加] を選択
    7. 保存した CSV ファイルを選択
    8. アップロード

    長所:

    • 多数のフィールドに適しています
    • 詳細計画全体で使用されるグローバルフィールドは、SFDC で一貫してラベル付けされます

    短所:

    • フィールドラベル名の設定、パートナーフィールド、およびシステムフィールドはこのメソッドではインポートされないため、表示名はデフォルトでフィールドの値になります
    • これらのフィールドは、手動ラベル作成方法を使用して、LGK ラベルオブジェクトとして手動で追加できます

    詳細計画レイアウトのエクスポートからの一括インポート

    1. 使用したいCPQブループリントから [レイアウト] に移動し、[エクスポート] をクリックします
    2. CSV を開く
    3. 列「A」を「フィールド」でフィルタリング
    4. 列「A」、「D」、「E」を除くすべてのデータを削除します
    5. 列「D」と「E」列を新しい CSV にコピーし、必要なフィールドのラベルの名前を変更します
    6. SFDC で、[LGK ラベル] タブに移動し、[インポート] をクリックします
    7. 「LGK ラベル」を選択
    8. [新しいレコードを追加] を選択
    9. 保存した CSV ファイルを選択
    10. アップロード

    長所:

    • 多数のフィールドに適しています
    • 設定フィールド、システムフィールド、パートナーフィールドなど、すべてのフィールドのレイアウトに表示名を入力します

    短所:

    • レイアウトで使用されるフィールドのみが表示名に入力されます。詳細計画にのみ関連付けられているフィールドでも、ラベルが null となる構成フィールドデータセットオブジェクトが作成されます
    • 複数のブループリントで使用されるフィールドでは、この方法でインポートされた最初のフィールド ラベルのみが [表示名] フィールドに入力されます

    インポートしたものとは異なる表示名を表示したいフィールドがある場合は、Labelオブジェクトを任意のラベルに簡単に編集でき、更新後にその方法で構成フィールドデータセットへの入力が開始されます。

    見積品目を入力します

    1. [SFDC セットアップ] で、[オブジェクトマネージャー] に移動します。
    2. 「構成フィールドデータ」を検索します。
    3. [ フィールド & リレーションシップ] をクリックし、[ 新規] をクリックします。次の属性を持つ新しいフィールドを作成します。
      • データタイプ:リレーションシップをルックアップ
      • 関連先:見積依頼明細行
      • フィールドラベル:見積明細行
      • フィールド名:Quote_Line
      [ 次へ] をクリックし、もう一度 [ 次へ ] をクリックして、[ 保存] をクリックします。
    4. オブジェクトマネージャーで、「見積明細行」を検索します。
    5. [ トリガー] をクリックし、[ 新規] をクリックします。
    6. Apex コードブロックに次のコードを貼り付けます。
      trigger PopulateConfigFieldData on SBQQ__QuoteLine__c (after insert, after update) {
      	// Step 1: Collect the Configuration Ids from the new Quote Lines
      	Set<String> configIds = new Set<String>();
      	Map<String, Id> quoteLineMap = new Map<String, Id>(); // Mapping Configuration UUID to Quote Line Id
      
      	for (SBQQ__QuoteLine__c ql : Trigger.new) {
      		if (String.isNotBlank(ql.LGK__ConfigurationId__c)) {
      			configIds.add(ql.LGK__ConfigurationId__c);
      			quoteLineMap.put(ql.LGK__ConfigurationId__c, ql.Id); // Storing Quote Line Id
      		}
      	}
      	
      	if (configIds.isEmpty()) {
      		return;
      	}
      	
      	// Step 2: Query the Configuration Field Data records
      	List<LGK__ConfigurationFieldData__c> confFieldsToUpdate = [SELECT Id,LGK__ConfigurationId__c FROM LGK__ConfigurationFieldData__c WHERE LGK__ConfigurationId__c IN:configIds];
      
      	// Step 3: Update the Field Data records
      	for (LGK__ConfigurationFieldData__c cf : confFieldsToUpdate) {
      		Id quoteLineId = quoteLineMap.get(cf.LGK__ConfigurationId__c);
      		if (quoteLineId != null) {
      			cf.Quote_Line__c = quoteLineId; // Assigning the Quote Line Id
      		}
      	}
      
      	update confFieldsToUpdate;

    これで、見積もりがSFDCに保存されるたびに、親構成可能製品の見積明細が構成フィールドデータセットに入力されます。このカスタムフィールドを「構成フィールドデータセット」レイアウトに追加してタブに表示することを忘れないでください。

    注:
    構成フィールドデータセットは、CPQコンフィギュレーターで [保存] をクリックした直後に作成されます。見積品目エディターに入っても、[見積品目] フィールドはまだ作成または更新されていないため、入力されません。エディターから保存した後にのみ、見積品目がフィールドに表示されます。