Script: Como preencher valores definidos

  • Versão de lançamento: Australia
  • Atualizado 12 de mar. de 2026
  • 3 min. de leitura
  • Veja um exemplo detalhado de como usar um script de aprimoramento de blueprint em Configurar/reconfigurar para carregar valores de campo em um conjunto.

    Este artigo demonstra como usar um script de aprimoramento de blueprint "ao configurar/reconfigurar" para carregar valores de campo em um conjunto.

    Este exemplo mostra como fazer uma chamada de SOQL para o Salesforce usando uma conexão externa para obter os sobrenomes de todos os contatos da conta e pré-carregá-los em um conjunto para configuração adicional.

    Pré-requisitos

    Para concluir este exemplo, você precisa de:

    • Aprimoramentos habilitados em CPQ instância
    • Conexões externas habilitadas em CPQ instância
    • Um conjunto criado e associado ao blueprint
    • Um campo de texto associado ao conjunto

    Conexão externa: Chamada SOQL

    Em CPQ Tela do administrador, localize as conexões externas em Utilitários.

    Tela do administrador

    1. Defina o tipo de integração como Salesforce.
    2. Defina a consulta SOQL a ser feita. Neste exemplo, estamos recuperando todos os contatos associados a uma conta específica e armazenando o sobrenome.

    Consulta SOQL:

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

    Em Configurar/reconfigurar script

    No blueprint, navegue até a área Aprimoramentos e adicione o script ao aprimoramento "Ao configurar/reconfigurar".

    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;

    Passo a passo do script

    Tela do administrador

    1. A matriz setData é inicializada como uma matriz vazia (linha 1).
    2. Verifique se o conjunto já tem dados, da carga da API ou de uma configuração anterior (linha 3).
    3. Defina as entradas da consulta para o Salesforce (linha 5). Neste exemplo, o ID da conta é codificado, mas pode ser passado de um campo ou mapeado de um campo duplo na cotação. Faça a consulta SOQL para o Salesforce usando a conexão externa que foi definida, salve a resposta (linha 6) e obtenha a matriz de registros (linha 7).
    4. Se a chamada retornou registros (linha 8), passe os registros (linha 9) e defina o valor do campo "textTest_swc" como o sobrenome do contato (linha 10). Por fim, adicione o novo elemento set à matriz setData (linha 11).
    5. Depois de percorrer os contatos, adicione todos os setData ao conjunto, "demoSet_svc", na solicitação de configuração (linha 14).
    6. Por fim, retorne a solicitação de configuração atualizada (linha 18).

    Para reutilizar este script, faça mudanças nas seguintes linhas:

    1. Linha 5: Atualize o ID da conta (0015f000006lRKcAAM) para um novo valor ou dê um duplo a um campo da cotação.
    2. Linha 6: Atualize o nome da conexão do Salesforce.
    3. Linha 10: Atualize o nome do campo (textTest_swc) para um campo no conjunto que você está usando.
    4. Linha 16: Atualize o nome do conjunto (demoset_svc) para o nome do conjunto que você está usando.

    Definir dados de uma conexão externa em cada configuração

    Em vez disso, você quiser que os dados padrão substituam o que o usuário inseriu na configuração anterior, exclua o. se cláusula na linha 4.

    Se você quiser que somente determinados campos no conjunto substituam os campos editados pelo usuário, mas quiser manter outros campos entre as configurações, faça referência aos índices do conjunto explicitamente:

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

    Substitua o seguinte para usar em seu aprimoramento:

    • Nome de configuração : O nome da variável do seu conjunto
    • Nome do campo : O nome da variável do seu campo
    • i : Um índice existente no qual você deseja determinar o valor do campoʼs
    • CampoValue : O valor que você deseja definir para o campo
    Nota:
    Para garantir que você não esteja referenciando uma matriz de dados vazia, esta chamada deve ocorrer após o código padrão definido no script de aprimoramento. Caso contrário, causará um erro de referência nula na inicialização.

    Você também deve garantir que o índice que você está referenciando nos dados exista. Incluir uma verificação do tamanho da matriz de dados definida é uma boa maneira de garantir que ela exista. Veja o exemplo a seguir.

    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"});
    }

    Observe que, enquanto o. comprimento a função retorna "1", o índice é "0", porque os índices são referenciados a partir de 0 como o primeiro índice.

    Experiência de configuração

    Caso de uso: Usando o aprimoramento Init para preencher os valores definidos