parametracpqDocsApri Studio ↗
DOCUMENTAZIONE / FORMULE

Le formule, nelle due lingue.

Tutte le funzioni del motore CPQ, con nomi inglesi e italiani affiancati. Le traduzioni e gli alias eseguono la stessa operazione e possono essere usati nella stessa formula.

18 funzioni + 1 specialeItaliano / EnglishEsempi equivalenti

Una sintassi comune

  • I nomi delle funzioni e i booleani ignorano maiuscole e minuscole: SE e if sono equivalenti. I nomi di opzioni, costanti e i testi restano distinti.
  • Usa il punto per i decimali e la virgola tra argomenti, anche in italiano: ARROTONDA(12.345, 2). Il punto e virgola non è un separatore valido.
  • Il prefisso = è facoltativo. Scrivi i testi tra virgolette doppie e gli array nelle formule come ["rosso", "blu"].
  • Nelle celle che accettano solo liste — options.values, bom.items, price_rules.incompatible_with e price_rules.depends_on — le parentesi quadre sono facoltative: rosso blu "grigio chiaro". Separa gli elementi con spazi o virgole; racchiudi tra virgolette i testi che contengono spazi o virgole. In rules.values, che accetta anche formule e riferimenti a costanti, le liste mantengono le parentesi quadre.
  • Nessuna conversione implicita: "10" + 2 è un errore. Le condizioni richiedono booleani.

Negli schemi sotto, … indica argomenti ripetibili e i nomi dei parametri sono segnaposto da sostituire con valori o riferimenti. I parametri facoltativi sono indicati nella descrizione.

Testi e ricerche nelle tabelle

Testi e ricerche nelle tabelle: traduzioni, significato ed esempi
IngleseItalianoComportamento ed esempio
CONCAT(testo1, testo2, …)CONCATENA(testo1, testo2, …)

Unisce uno o più testi. Per i numeri usa TEXT: non applica conversioni implicite.

CONCAT("MOD-", "NR")CONCATENA("MOD-", "NR")Risultato: MOD-NR
XLOOKUP(valore, chiavi, risultati)CERCA.X(valore, chiavi, risultati)

Ricerca esatta, sensibile alle maiuscole. Accetta colonne nominate o array piatti della stessa lunghezza. Chiavi duplicate, corrispondenza assente o tipi diversi sono errori. Supporta solo questi tre argomenti.

XLOOKUP("nero", ["nero", "bianco"], ["NR", "BI"])CERCA.X("nero", ["nero", "bianco"], ["NR", "BI"])Risultato: NR
TEXT(numero, formato)TESTO(numero, formato)

Converte un numero in testo decimale. Formato facoltativo: 0, 000, 0.00 (massimo 100 zeri per parte); senza formato conserva tutte le cifre. I decimali richiesti arrotondano a metà lontano da zero. Altri formati Excel non sono supportati.

TEXT(5, "000")TESTO(5, "000")Risultato: 005

Logica e condizioni

Logica e condizioni: traduzioni, significato ed esempi
IngleseItalianoComportamento ed esempio
AND(a, b, …)E(a, b, …)

Vero se tutti gli argomenti sono veri. Accetta uno o più booleani; si ferma al primo falso.

AND(10 > 5, 3 < 8)E(10 > 5, 3 < 8)Risultato: true
OR(a, b, …)O(a, b, …)

Vero se almeno un argomento è vero. Accetta uno o più booleani; si ferma al primo vero.

OR(10 < 5, 3 < 8)O(10 < 5, 3 < 8)Risultato: true
NOT(condizione)NON(condizione)

Inverte un valore booleano.

NOT(true)NON(vero)Risultato: false
IF(condizione, sì, no)SE(condizione, sì, no)

Restituisce il ramo scelto dalla condizione booleana. I due rami devono avere lo stesso tipo; valuta solo quello selezionato.

IF(1200 > 1000, 3, 2)SE(1200 > 1000, 3, 2)Risultato: 3
ISBLANK(valore)VAL.VUOTO(valore)

Vero se un input definito è assente. Zero, false, testo vuoto e array vuoto sono valori presenti.

ISBLANK(0)VAL.VUOTO(0)Risultato: false

Arrotondamenti

Arrotondamenti: traduzioni, significato ed esempi
IngleseItalianoComportamento ed esempio
CEILING(numero, passo)ARROTONDA.ECCESSO(numero, passo)

Arrotonda al multiplo superiore del passo. Alias inglese: CEIL. Numero ≥ 0; passo > 0, facoltativo (default 1).

CEILING(12.3, 0.5)ARROTONDA.ECCESSO(12.3, 0.5)Risultato: 12.5
FLOOR(numero, passo)ARROTONDA.DIFETTO(numero, passo)

Arrotonda al multiplo inferiore del passo. Numero ≥ 0; passo > 0, facoltativo (default 1).

FLOOR(12.3, 0.5)ARROTONDA.DIFETTO(12.3, 0.5)Risultato: 12
ROUND(numero, cifre)ARROTONDA(numero, cifre)

Arrotonda alle cifre decimali indicate; a metà arrotonda verso l’alto. Numero ≥ 0; cifre intere ≥ 0, facoltative (default 0).

ROUND(12.345, 2)ARROTONDA(12.345, 2)Risultato: 12.35
MROUND(numero, multiplo)ARROTONDA.MULTIPLO(numero, multiplo)

Arrotonda al multiplo più vicino; a metà sceglie quello superiore. Numero ≥ 0 e multiplo > 0, entrambi obbligatori.

MROUND(13, 5)ARROTONDA.MULTIPLO(13, 5)Risultato: 15

Calcoli numerici

Calcoli numerici: traduzioni, significato ed esempi
IngleseItalianoComportamento ed esempio
SUM(valori…)SOMMA(valori…)

Somma numeri e array numerici, anche annidati. Senza valori restituisce 0.

SUM(10, [20, 30])SOMMA(10, [20, 30])Risultato: 60
MIN(valori…)MIN(valori…)

Restituisce il numero minore. Accetta numeri e array numerici annidati; richiede almeno un numero.

MIN(10, [20, 30])Risultato: 10
MAX(valori…)MAX(valori…)

Restituisce il numero maggiore. Accetta numeri e array numerici annidati; richiede almeno un numero.

MAX(10, [20, 30])Risultato: 30
ABS(numero)ASS(numero)

Restituisce il valore assoluto di un numero.

ABS(-12)ASS(-12)Risultato: 12
MOD(numero, divisore)RESTO(numero, divisore)

Restituisce il resto della divisione. Numero ≥ 0 e divisore > 0.

MOD(10, 3)RESTO(10, 3)Risultato: 1

Appartenenza agli array

Appartenenza agli array: traduzioni, significato ed esempi
IngleseItalianoComportamento ed esempio
INCLUDES(array, valore)CONTIENE(array, valore)

Cerca un valore scalare tra gli elementi diretti dell’array, senza conversioni di tipo né ricerca nelle sottostringhe. Non appiattisce gli array annidati.

INCLUDES(["rosso", "blu"], "blu")CONTIENE(["rosso", "blu"], "blu")Risultato: true

Tabelle dati e SKU composti

Usa il pulsante + nella barra dei fogli per aggiungere una tab libera. Rinominala finiture con doppio clic sulla tab; dal menu delle intestazioni rinomina le colonne A e B in valore e codice, entrambe Testo. Inserisci le righe nero / NR e bianco / BI. Puoi incollare più celle da un foglio di calcolo. Testi e codici non richiedono virgolette; gli zeri iniziali restano conservati.

Ogni colonna ha tipo Testo, Numero o Booleano. Le celle numeriche usano il punto decimale; quelle booleane true/false. Le celle sono libere: quelle vuote conservano la posizione. XLOOKUP ignora le coppie entrambe vuote e segnala una chiave senza risultato o viceversa. I dati sono letterali, senza formule.

Le colonne sono richiamabili da tutte le formule con finiture[valore] e finiture[codice]. Aggiungere righe estende automaticamente la ricerca. I riferimenti già compilati conservano l’identità dopo le rinomine; eliminare una colonna usata produce un errore.

XLOOKUP(finitura, finiture[valore], finiture[codice])

Nel pannello di un articolo BOM scrivi un codice o una formula nello stesso campo SKU. I suggerimenti comprendono articoli e formule. Per esempio:

CONCAT("MOD-", TEXT(larghezza, "000"), "-", XLOOKUP(finitura, finiture[valore], finiture[codice]))

Con larghezza 5 e finitura nero il codice è MOD-005-NR. Deve già esistere nel catalogo: descrizione, prezzo e unità di misura provengono da quell’articolo. L’anteprima nel pannello verifica il codice; quantità e misura restano campi separati. Una regola attiva con errori non produce voci parziali e impedisce la finalizzazione.

Per un riferimento singolo nel campo SKU usa =nome_opzione. La microsintassi accetta SKU:quantità:misura oppure (formula_sku):quantità:misura. Il pannello gestisce parentesi e virgolette nella lista. Una condizione come !ISBLANK(finitura) && !ISBLANK(larghezza) evita il calcolo finché mancano le scelte.

Tabelle e formule partecipano a Salva/Riapri e Annulla/Ripeti. Gli intervalli A2:A20 e i riferimenti a file Excel esterni non sono supportati.

Funzioni speciali

Queste funzioni leggono i dati del configuratore. IN_BOM mantiene lo stesso nome in italiano e inglese ed è disponibile solo nelle condizioni di price_rules, dopo il calcolo della distinta base.

IN_BOM("MOTORE")

Vero se lo SKU è presente nella BOM. È la forma abbreviata di INCLUDES(skus, "MOTORE").

IN_BOM(["PANNELLO", "MOTORE"])

Vero se tutti gli SKU indicati sono presenti. Equivale a IN_BOM("PANNELLO") && IN_BOM("MOTORE"). Per richiederne almeno uno, usa || tra le due chiamate.

  • Uno SKU è presente se almeno una sua riga ha quantità e misura entrambe positive. Le righe a zero non contano.
  • Accetta un testo o un array piatto di testi, anche da costanti: IN_BOM(kit_standard) oppure IN_BOM(constants!B2).
  • IN_BOM([]) restituisce false. I duplicati non cambiano il risultato e il confronto degli SKU distingue maiuscole e minuscole.
  • Gli SKU letterali e quelli ricavati da costanti sono verificati rispetto al catalogo. Uno SKU inesistente genera un errore; uno SKU valido ma assente dalla BOM restituisce false.
  • Non è utilizzabile nelle regole che costruiscono la BOM o filtrano le opzioni. INCLUDES, CONTIENE e .includes restano disponibili per gli array generici e le formule esistenti.

Operatori, alias e booleani

Le forme simboliche condividono le stesse regole delle funzioni. CEIL è un ulteriore alias di CEILING.

Sintassi degli operatori e forme equivalenti
SintassiEquivalente / traduzioneSignificato
a && bAND(a, b) · E(a, b)Tutte le condizioni vere.
a || bOR(a, b) · O(a, b)Almeno una condizione vera.
!aNOT(a) · NON(a)Negazione booleana.
condizione ? a : bIF(condizione, a, b) · SE(condizione, a, b)Scelta tra due valori dello stesso tipo.
array.includes(valore)INCLUDES(array, valore) · CONTIENE(array, valore)Appartenenza a un array.
a = b · a == bIdentici nelle due lingueUguaglianza tra scalari dello stesso tipo.
a <> b · a != bIdentici nelle due lingueDisuguaglianza tra scalari dello stesso tipo.
> · < · >= · <=Identici nelle due lingueConfronti tra numeri.
+ · - · * · /Identici nelle due lingueAritmetica numerica; la divisione per zero produce un errore.
+a · -aPOS(a) · NEG(a)Segno unario: conserva o inverte il segno del numero.
valore ?? alternativaIdentico nelle due lingueUsa l’alternativa solo se il valore è assente; non intercetta gli errori. I tipi devono coincidere.
TRUE · FALSEVERO · FALSOLetterali booleani, senza parentesi.

Le parentesi controllano l’ordine di valutazione. Per combinare ?? con && o ||, sono necessarie parentesi esplicite. Scrivi due confronti come larghezza > 0 && larghezza < 1000; i confronti concatenati non sono supportati.

Riferimenti e input assenti

Puoi usare il nome di un’opzione o di una costante, oppure i riferimenti options!A2 e constants!B2, anche con $. La prima riga dati è la 2. Gli intervalli come A1:A10 non sono supportati.

Un input definito ma non compilato è assente. Gestiscilo con ISBLANK / VAL.VUOTO oppure ??. Un riferimento inesistente resta un errore.

(larghezza ?? 0) > 1000

Con larghezza assente restituisce false, senza modificare la configurazione.

SE(VAL.VUOTO(larghezza), 0, larghezza / 1000)

Restituisce 0 se manca la larghezza; altrimenti converte il valore da millimetri a metri.

Nelle condizioni di price_rules puoi verificare la presenza di articoli con IN_BOM("MOTORE"). Sono disponibili anche le costanti e l’array skus derivato dalla distinta base. Le opzioni non sono accessibili direttamente in queste condizioni.

Gli arrotondamenti e RESTO seguono i limiti indicati sopra. Le aggregazioni accettano solo numeri; MIN([]) e MAX([]) producono un errore. Il linguaggio CPQ non include tutte le funzioni Excel: .length e INTERSECTS non sono supportati.