Script: Como preencher valores definidos
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.
- Defina o tipo de integração como Salesforce.
- 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
- A matriz setData é inicializada como uma matriz vazia (linha 1).
- Verifique se o conjunto já tem dados, da carga da API ou de uma configuração anterior (linha 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).
- 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).
- Depois de percorrer os contatos, adicione todos os setData ao conjunto, "demoSet_svc", na solicitação de configuração (linha 14).
- Por fim, retorne a solicitação de configuração atualizada (linha 18).
Para reutilizar este script, faça mudanças nas seguintes linhas:
- Linha 5: Atualize o ID da conta (0015f000006lRKcAAM) para um novo valor ou dê um duplo a um campo da cotação.
- Linha 6: Atualize o nome da conexão do Salesforce.
- Linha 10: Atualize o nome do campo (textTest_swc) para um campo no conjunto que você está usando.
- 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 conjuntoNome do campo: O nome da variável do seu campoi: Um índice existente no qual você deseja determinar o valor do campoʼsCampoValue: O valor que você deseja definir para o campo
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