CPQ referência da linguagem de script

  • Versão de lançamento: Australia
  • Atualizado 12 de mar. de 2026
  • 3 min. de leitura
  • Exiba os operadores, objetos e palavras-chave CPQ juntamente com informações sobre conversão de tipo, verificação de tipo, scripts alternativos para operações incompatíveis e acesso a propriedades de objeto.

    CPQ Usa uma linguagem semelhante a JavaScript para mudar dinamicamente o valor de campos e dados da BOM por meio de regras e aprimoramentos. JavaScript é uma linguagem complexa construída ao longo de quase trinta anos e, embora não possamos replicar todas as funcionalidades que um desenvolvedor normalmente esperaria durante a codificação, CPQ o script continua sendo uma ferramenta poderosa para ajudar na configuração dinâmica de produtos.

    As capacidades de CPQ os scripts estão sempre se expandindo. Verifique novamente para ver os recursos mais atualizados.

    Operadores compatíveis

    Operadores aritméticos:

    +
    Inserção
    -
    Subtração
    *
    Multiplicação
    /
    Detalhamento
    %
    Módulo
    ++
    Parcela
    --
    Redução

    Operadores de cadeia de caracteres:

    +
    Concatenação
    +=
    Atribuição de adição

    Operadores de atribuição:

    =
    Atribuição
    -
    Atribuição de adição
    -=
    Atribuição de subtração

    Operadores de comparação:

    ==
    Igual a
    ===
    Igual valor e tipo igual
    !=
    Não é igual a.
    !==
    Valor diferente nem tipo igual
    >
    Maior que
    <
    Menos de
    >=
    Maior que ou igual a.
    menor ou igual a
    Menor que ou igual a.

    Operadores lógicos:

    &&
    E
    ||
    Ou

    Objetos compatíveis

    Cada objeto compatível pode ser declarado com o seguinte:

    [ ]
    Matriz
    " "
    Cadeia de caracteres
    ( )
    Número
    verdadeiro | falso
    Booliano
    Novo mapa()
    Mapa
    Nova data ( )
    Data

    indefinido , Nan e. nulo não são compatíveis.

    Nota:
    Objetos de data não podem ser retornados, mas eles podem ser referenciados e manipulados com as APIs de data no menu Ajuda.

    Palavras-chave compatíveis

    • var
    • deixe
    • const
    • novo
    • se
    • mais se
    • mais
    • Por
    • para/de
    • retornar

    Não oferecemos suporte enquanto ou incondicional para em loop com intervalo , devido ao risco de loops infinitos interrompendo o desempenho.

    Não oferecemos suporte a funções, pois o script em si deve ser pequeno o suficiente para ser considerado uma função. Se o script for longo com muitas condições e variáveis, considere criar uma tabela gerenciada e usar uma consulta de tabela. Para obter mais informações sobre como usar tabelas gerenciadas e consultas de tabela, consulte Carregador de matriz: Carregamento de tabela CSV e. Minimizando consultas de tabela.

    Scripts alternativos para operações incompatíveis

    Multiplicação e divisão de atribuição (/ ou *): Número: Número * otherNumber; , Número: Número/otherNumber;

    Exponenciação (x**y): Pow(x, y);

    Conversão de tipo

    Converter matrizes em cadeias de caracteres: ToString()

    Converter números em cadeias de caracteres: ""

    Converter cadeias de caracteres numéricas em números: [cadeia de caracteres] - 0

    Nota:
    As cadeias de caracteres não podem ser tratadas como matrizes, mas .length funciona para cadeias de caracteres.

    Verificação de tipo

    O seguinte retorna um valor booliano que indica se uma entrada é um número: LGK.isNumber(123)

    Acessando propriedades do objeto

    Você pode acessar as propriedades de objetos de mapa, como CfgRequest de duas maneiras.

    objectName.propertyName
    //or
    objectName["propertyName"]

    Isso é útil para substituir grandes quantidades de código repetitivo por resultados de uma Pesquisa de tabela, já que o texto "propertyName" poderia ser substituído por uma variável.

    Por exemplo, considere um blueprint com os seguintes campos associados a ele e uma tabela gerenciada chamada shipstatebooleedest.

    • ShipState
    • boolean1
    • boolean2
    • boolean3
    • quantity1
    • quantity2
    • quantity3
    Tabela 1. shipstatebooleanedest
    id ShipState Verdadeiro Booliano QuantityTest RowQuantity
    1 Arizona boolean1 quantidade1 1
    2 Maine boolean2 quantidade2 2
    3 Califórnia boolean3 quantidade3 3

    Em vez de ter um idêntico se a declaração verifica o quê ShipState E definindo os valores boolianos e quantidades de acordo, você pode substituí-lo por apenas um se declaração que define os valores com base nos resultados de uma pesquisa de tabela.

    Em Configurar/reconfigurar script a seguir, se ShipState o campo tem um valor, os campos retornados pela função de pesquisa são definidos. . ShipState O campo está em branco, então todos os campos boolianos e de quantidade estão definidos.

    if (cfgRequest.shipState.value != "" && cfgRequest.shipState.value != null){
    	var fieldMapping = lookup("Select trueBoolean,quantityTest,rowQuantity from shipstatebooleantest where shipState = :value", { "value": cfgRequest.shipState.value });
    	console.log(fieldMapping);
    	if (fieldMapping != []){
    		cfgRequest[fieldMapping[0].trueBoolean].set("value",true);
    		cfgRequest[fieldMapping[0].quantityTest].set("value",fieldMapping[0].rowQuantity);
    	}
    }
    else{
    	var fieldMapping = lookup("Select trueBoolean,quantityTest,rowQuantity from shipstatebooleantest");
      console.log(fieldMapping);
      for (var row of fieldMapping) {
     		cfgRequest[row.trueBoolean].set("value",true);
     		cfgRequest[row.quantityTest].set("value",row.rowQuantity);
      }
    } 
    Se sua instância de CPQ precisa de funcionalidade não descrita aqui, entre em contato com support@logik.io com seu caso de uso.