Scripting : comment renseigner les valeurs définies

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 4 minutes de lecture
  • Consultez un exemple détaillé d’utilisation d’un script d’enrichissement de plan On Configure/Reconfigure pour charger des valeurs de champ dans un ensemble.

    Cet article explique comment utiliser un script d’enrichissement de plan « On Configure/Reconfigure » pour charger des valeurs de champ dans un ensemble.

    Cet exemple montre comment effectuer un appel SOQL vers Salesforce à l’aide d’une connexion externe pour obtenir les noms de famille de tous les contacts du compte et les précharger dans un ensemble pour une configuration ultérieure.

    Prérequis

    Pour compléter cet exemple, vous avez besoin des éléments suivants :

    • Enrichissements activés dans votre CPQ instance
    • Connexions externes activées dans votre CPQ instance
    • Ensemble créé et associé au plan
    • Champ de texte associé à l’ensemble

    Connexion externe : appel SOQL

    Dans l’écran CPQ Admin, recherchez les connexions externes sous Utilitaires.

    Écran Administrateur

    1. Définissez le type d’intégration sur Salesforce.
    2. Définissez la requête SOQL à effectuer. Dans cet exemple, nous récupérons tous les contacts associés à un compte particulier et stockons le nom de famille.

    Requête SOQL :

    SELECT LastName FROM Contact WHERE AccountId = '{{accId}}'

    Sur Configurer/Reconfigurer le script

    Dans le plan, accédez à la zone Enrichissements et ajoutez le script à l’enrichissement « En cours de configuration/reconfiguration ».

    let setData = []; // initialize the set data as an empty array
    
    //if initializing, default in setData
    if (cfgRequest.demoset_swc.data == []) {
    	const inp = {"accId":"0015f000006lRKcAAM" }; // Hardcoded accountId, could be mapped in from a field
    	const response = Salesforce.getSetInit_swc(inp); // SELECT LastName FROM Contact WHERE AccountId = '{{accId}}'
    	const contactList = response.body.records;
    	if (contactList.length > 0) {
    		for (var contact of contactList) {
    			let elem = {"textTest_swc":{"value": contact.LastName } }; // set the field value
    			setData.push(elem); // add to the setData array
    		}
    		// after looping through all the contacts/previous set data, add them to the set
    		cfgRequest.demoset_swc.set("data",setData);
    	}
    }
    
    return cfgRequest;

    Procédure pas à pas du script

    Écran Administrateur

    1. Le tableau setData est initialisé en tant que tableau vide (ligne 1).
    2. Vérifiez si l’ensemble contient déjà des données, soit à partir de la charge utile de l’API, soit à partir d’une configuration précédente (ligne 3).
    3. Définissez les entrées de la requête vers Salesforce (ligne 5). Dans cet exemple, l’ID de compte est codé en dur, mais peut être transmis à partir d’un champ ou mappé à partir d’un champ jumeau sur le devis. Effectuez la requête SOQL vers Salesforce en utilisant la connexion externe qui a été définie, puis enregistrez la réponse (ligne 6) et obtenez le tableau des enregistrements (ligne 7).
    4. Si l’appel a renvoyé des enregistrements (ligne 8), passez en boucle sur les enregistrements (ligne 9) et définissez la valeur de champ « textTest_swc » sur le nom de famille du contact (ligne 10). Enfin, ajoutez le nouvel élément set au tableau setData (ligne 11).
    5. Après avoir parcouru les contacts, ajoutez toutes les setData à l’ensemble, « demoSet_swc », dans la demande de configuration (ligne 14).
    6. Enfin, renvoyez la demande de configuration mise à jour (ligne 18).

    Pour réutiliser ce script, apportez des modifications aux lignes suivantes :

    1. Ligne 5 : mettez à jour l’ID de compte (0015f000006lRKcAAM) vers une nouvelle valeur ou jumelez un champ à partir du devis.
    2. Ligne 6 : Mettez à jour le nom de la connexion Salesforce.
    3. Ligne 10 : Mettez à jour le nom de champ (textTest_swc) d’un champ de l’ensemble que vous utilisez.
    4. Ligne 16 : Mettez à jour le nom de l’ensemble (demoset_swc) au nom de l’ensemble que vous utilisez.

    Définition des données à partir d’une connexion externe à chaque configuration

    Si, à la place, vous souhaitez que les données par défaut écrasent ce que l’utilisateur avait saisi dans la configuration précédente, supprimez la clause if à la ligne 4.

    Si vous souhaitez que seuls certains champs de l’ensemble remplacent les champs modifiés par l’utilisateur, mais que vous souhaitez conserver d’autres champs entre les configurations, vous devez référencer explicitement les index d’ensemble :

    cfgRequest.[setName].data[i].set("fieldName",{"value":"fieldValue"});

    Remplacez les éléments suivants pour les utiliser dans votre enrichissement :

    • setName : le nom de variable de votre ensemble
    • fieldName : nom de variable de votre champ
    • i : index existant auquel vous souhaitez déterminer la valeur du champ
    • fieldValue : valeur que vous souhaitez définir pour le champ
    Remarque :
    Pour vous assurer de ne pas référencer un tableau de données vide, cet appel doit se produire après le code par défaut défini dans le script d’enrichissement. Sinon, cela provoquera une erreur de référence nulle lors de l’initialisation.

    Vous devez également garantir que l’index auquel vous faites référence dans les données existe. Inclure une vérification de la longueur du tableau de données défini est un bon moyen de garantir qu’il existe. Consultez l'exemple suivant.

    if (cfgRequest.setTest.data.length >= 1) {
         cfgRequest.setTest.data[0].set("setTestNumberField",{"value":cardNumber});
         cfgRequest.setTest.data[0].set("setTestSingleSelect picklist",{"value":"set option 1"});
    }

    Notez que si la fonction length renvoie « 1 », l’index est « 0 », car les index sont référencés à partir de 0 comme premier index.

    Expérience de configuration

    Cas d’utilisation : Utilisation de l’enrichissement d’initiation pour renseigner les valeurs définies