---
sourceDocument: 호주 판매 고객 관계 관리
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ko-KR/order-management

 Release :

    - australia

ft:locale :

    - ko-KR

ft:publication_title :

    - 호주 판매 고객 관계 관리

ft:clusterId :

    - omgmt

bundleId :

    - omgmt

workflow :

    - Customer and Industry


---

# CPQ 스크립팅 언어 참조

# CPQ 스크립팅 언어 참조 {#ariaid-title1}

* 릴리스 버전: Australia
* 
* 업데이트 날짜 2026년 03월 12일
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 소요 시간: 4분

형식 변환, 형식 검사, 지원되지 않는 작업에 대한 대체 스크립트 및 개체 속성 액세스에 대한 정보와 함께 지원하는 연산자, 객체 및 키워드 CPQ 를 봅니다.
CPQ 는 JavaScript와 유사한 언어를 사용하여 규칙 및 보강을 통해 필드 및 BOM 데이터의 값을 동적으로 변경합니다. JavaScript는 거의 30년에 걸쳐 만들어진 복잡한 언어이며, 개발자가 코딩 CPQ 하는 동안 일반적으로 기대하는 모든 기능을 복제할 수는 없지만 스크립팅은 여전히 제품의 동적 구성을 지원하는 강력한 도구입니다.

스크립팅의 CPQ 기능은 항상 확장됩니다. 최신 기능을 다시 확인하십시오.

## 지원되는 연산자 {#cpq-logik-io-scripting-language-reference__suported_operators}

산술 연산자:

+
:   더하기

-
:   빼기

\*
:   곱셈

/
:   디비전

%
:   계수

++
:   증가

--
:   감소

문자열 연산자:

+
:   연결

+=
:   추가 할당

할당 연산자:

=
:   할당

+=
:   추가 할당

-=
:   빼기 할당

비교 연산자:

==
:   다음과 같음

===
:   같은 값 및 같은 유형

!=
:   같지 않음

!==
:   값이나 유형이 같지 않음

\>
:   보다 큼

\<
:   보다 작음

\>=
:   크거나 같음

\<=
:   작거나 같음

논리 연산자:

\&\&
:   및

\|\|
:   또는

## 지원되는 객체 {#cpq-logik-io-scripting-language-reference__supported_objects}

지원되는 각 객체는 다음과 같이 선언할 수 있습니다.

\[ \]
:   배열

" "
:   문자열

( )
:   번호

예 \| 아니오
:   부울

{ }, 새 맵( )
:   맵

새 날짜( )
:   날짜

`undefined`, `NaN` 및 `null` 은 지원되지 않습니다.  
주:  
날짜 객체는 반환할 수 없지만 도움말 메뉴의 날짜 API를 사용하여 참조하고 조작할 수 있습니다.

## 지원되는 키워드 {#cpq-logik-io-scripting-language-reference__supported_keywords}

* `변수`
* `하자`
* `상수`
* `신규`
* `if`
* `else if`
* `else`
* `- 대상`
* `대상/의`
* `돌아오다`

{#cpq-logik-io-scripting-language-reference__ul_j4r_z42_dhc}

무한 루프가 성능을 중단시킬 위험이 있기 때문에 `중단`이 있는 루프에 `대한``while` 또는 무조건부는 지원하지 않습니다.

스크립트 자체는 하나의 기능으로 간주될 수 있을 만큼 작아야 하므로 함수를 지원하지 않습니다. 조건과 변수가 많은 스크립트가 길면 관리 테이블을 만들고 테이블 쿼리를 사용하는 것이 좋습니다. 관리되는 테이블 및 테이블 쿼리 사용에 대한 자세한 내용은 해당 문서를 참조하십시오 [매트릭스 로더: CSV 테이블 업로드](https://servicenow-prod.fluidtopics.net/dhs4v8hgryObu5V~HGNnDQ "매트릭스 로더를 사용하여 테이블 데이터를 임포트하고 관리합니다 CPQ. 테이블 스키마를 정의하고 일치하는 CSV 파일을 준비한 후 업로드하여 데이터 업데이트를 위해 다시 배포할 필요 없이 규칙, 조회 및 구성에 사용할 테이블을 채우거나 업데이트합니다.")[테이블 쿼리 최소화](https://servicenow-prod.fluidtopics.net/SBHeVD_E_DNi7dTfSMwKdg "쿼리를 최소화하여 성능을 최대화하는 방법을 알아봅니다.").

## 지원되지 않는 운영을 위한 대체 스크립트 {#cpq-logik-io-scripting-language-reference__alternative_scripts_for_unsupported_operations}

할당 곱셈과 나눗셈(/= 또는 \*=): `숫자 = 숫자 * otherNumber;`, `숫자 = 숫자 / otherNumber;`

지수(x\*\*y): `Math.pow(x, y);`

## 유형 변환 {#cpq-logik-io-scripting-language-reference__type_conversion}

배열을 문자열로 변환: `Array.toString()`

숫자를 문자열로 변환: `[number] + ""`

숫자 문자열을 숫자로 변환: `[문자열] - 0`  
주:  
문자열은 배열로 처리할 수 없지만 `.length` 는 문자열에 대해 작동합니다.

## 유형 검사 {#cpq-logik-io-scripting-language-reference__type_checking}

다음은 입력이 숫자인지 여부를 나타내는 부울 값을 반환합니다 `. LGK.isNumber(123)`

## 객체 속성 액세스 {#cpq-logik-io-scripting-language-reference__accessing_object_properties}

두 가지 방법으로 `cfgRequest` 와 같은 맵 객체의 속성에 액세스할 수 있습니다.

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

"propertyName" 텍스트를 변수로 대체할 수 있으므로 이는 많은 양의 반복 코드를 테이블 조회의 결과로 대체할 때 유용합니다.

예를 들어 다음 필드가 연결된 Blueprint와 shipstatebooleantest라는 관리 테이블을 생각해 보십시오.

* shipState
* 부울1
* 부울2
* 부울3
* quantity1
* quantity2
* quantity3

{#cpq-logik-io-scripting-language-reference__ul_i5d_fq2_dhc}

|-|-|-|-|-|
| ID | shipState | true부울 | 수량 테스트 | rowQuantity |
| 1 | 아리조나 | 부울1 | 수량1 | 1 |
| 2 | 메인 | 부울2 | 수량2 | 2 |
| 3 | 캘리포니아 | 부울3 | 수량3 | 3 |
[표 1. shipstatebooleantest]

{#cpq-logik-io-scripting-language-reference__table_l5q_jr2_dhc}

동일한 `if` 문을 사용하여 `shipState` 가 무엇인지 확인하고 그에 따라 부울 값과 수량을 설정하는 대신, 테이블 조회 결과에 따라 값을 설정하는 `if` 문 하나로만 대체할 수 있습니다.

다음 구성/재구성 시 스크립트에서 `shipState` 필드에 값이 있으면 조회 함수에 의해 반환되는 필드가 설정됩니다. `shipState` 필드가 비어 있으면 모든 부울 및 수량 필드가 설정됩니다.

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

인스턴스에 CPQ 기능에 대해 여기에 설명되지 않은 경우 사용 사례와 함께 support@logik.io 에게 문의하십시오.
**관련 개념**   

* [설명과 콘솔을 사용하여 스크립트 디버깅](https://servicenow-prod.fluidtopics.net/_MpFdGHHwqUr54qohl~DiA "설명과 콘솔이 스크립트 디버그에 어떻게 도움이 되는지 알아봅니다.")
* [스크립팅: 첫 번째 및 후속 구성 확인 중](https://servicenow-prod.fluidtopics.net/ENe398lTNQia3CwTau67jw "구성이 초기화 중인지 또는 재구성되는지 테스트하고 결과에 따라 실행할 코드를 설정할 수 있습니다.")  
**관련 참조**   

* [샘플 스크립트](https://servicenow-prod.fluidtopics.net/YAVyDe1sBPIE3MGJC8mwcA "일반적으로 요청되는 샘플 스크립트를 선택하십시오.")

