CPQ 스크립팅 언어 참조

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 4분
  • 형식 변환, 형식 검사, 지원되지 않는 작업에 대한 대체 스크립트 및 개체 속성 액세스에 대한 정보와 함께 지원하는 연산자, 객체 및 키워드 CPQ 를 봅니다.

    CPQ 는 JavaScript와 유사한 언어를 사용하여 규칙 및 보강을 통해 필드 및 BOM 데이터의 값을 동적으로 변경합니다. JavaScript는 거의 30년에 걸쳐 만들어진 복잡한 언어이며, 개발자가 코딩 CPQ 하는 동안 일반적으로 기대하는 모든 기능을 복제할 수는 없지만 스크립팅은 여전히 제품의 동적 구성을 지원하는 강력한 도구입니다.

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

    지원되는 연산자

    산술 연산자:

    +
    더하기
    -
    빼기
    *
    곱셈
    /
    디비전
    %
    계수
    ++
    증가
    --
    감소

    문자열 연산자:

    +
    연결
    +=
    추가 할당

    할당 연산자:

    =
    할당
    +=
    추가 할당
    -=
    빼기 할당

    비교 연산자:

    ==
    다음과 같음
    ===
    같은 값 및 같은 유형
    !=
    같지 않음
    !==
    값이나 유형이 같지 않음
    >
    보다 큼
    <
    보다 작음
    >=
    크거나 같음
    <=
    작거나 같음

    논리 연산자:

    &&
    ||
    또는

    지원되는 객체

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

    [ ]
    배열
    " "
    문자열
    ( )
    번호
    예 | 아니오
    부울
    { }, 새 맵( )
    새 날짜( )
    날짜

    undefined, NaNnull 은 지원되지 않습니다.

    주:
    날짜 객체는 반환할 수 없지만 도움말 메뉴의 날짜 API를 사용하여 참조하고 조작할 수 있습니다.

    지원되는 키워드

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

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

    스크립트 자체는 하나의 기능으로 간주될 수 있을 만큼 작아야 하므로 함수를 지원하지 않습니다. 조건과 변수가 많은 스크립트가 길면 관리 테이블을 만들고 테이블 쿼리를 사용하는 것이 좋습니다. 관리되는 테이블 및 테이블 쿼리 사용에 대한 자세한 내용은 해당 문서를 참조하십시오 매트릭스 로더: CSV 테이블 업로드테이블 쿼리 최소화.

    지원되지 않는 운영을 위한 대체 스크립트

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

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

    유형 변환

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

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

    숫자 문자열을 숫자로 변환: [문자열] - 0

    주:
    문자열은 배열로 처리할 수 없지만 .length 는 문자열에 대해 작동합니다.

    유형 검사

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

    객체 속성 액세스

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

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

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

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

    • shipState
    • 부울1
    • 부울2
    • 부울3
    • quantity1
    • quantity2
    • quantity3
    표 1. shipstatebooleantest
    ID shipState true부울 수량 테스트 rowQuantity
    1 아리조나 부울1 수량1 1
    2 메인 부울2 수량2 2
    3 캘리포니아 부울3 수량3 3

    동일한 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 에게 문의하십시오.