CPQ referência da linguagem de script
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.
Palavras-chave compatíveis
vardeixeconstnovosemais semaisPorpara/deretornar
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
.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
| 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.