트랜잭션 관리자: 통합 - 핸들바 구문

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 8분
  • 통합 변환 템플릿을 빌드할 때 핸들바 템플릿 언어를 사용할 수 있습니다.

    핸들바는 동적 콘텐츠를 생성하는 데 사용되는 경량 템플릿 언어입니다. 통합 변환 템플릿을 빌드하는 관리자는 다음과 같은 주요 Handlebars 구문 요소와 함께 다음과 같은 개선 사항과 관련된 개선 사항을 사용합니다.CPQ

    • 핸들바 표현식: 이중 중괄호로 {{ }}묶인 표현식을 사용하면 관리자가 변수, 함수 또는 속성을 템플릿에 삽입할 수 있습니다. 예를 들어 {{user.name}} 사용자 객체의 name 속성 값을 렌더링합니다.
    • 기본 제공 도우미에는 조건부 도우미와 반복 도우미가 포함됩니다.
      • 조건부 도우미를 사용하면 값에 따라 조건부로 컨텐츠를 렌더링할 수 있습니다. 예:
        • #if 조건이 예일 경우 컨텐츠를 렌더링합니다.
          {{#if user.isActive}} 
            Active 
          {{/if}}

          이 스니펫은 user.isActive 가 예일 때만 "활성"을 렌더링합니다.

        • #unless – #if와 반대로 조건이 false인 경우 컨텐츠를 렌더링합니다.
          {{#unless user.isActive}} 
            Inactive 
          {{/unless}}

          이 스니펫은 user.isActive 가 아니오인 경우 "비활성"을 렌더링합니다.

      • 반복 도우미를 사용하면 목록을 반복하거나 범위를 수정할 수 있습니다.
        • #each 배열을 반복하고 각 항목의 컨텐츠를 렌더링합니다.
          {{#each users}} 
            <li>{{this.name}}</li> 
          {{/each}}

          이 스니펫은 사용자를 반복하고 각 사용자의 이름을 목록 항목으로 표시합니다.

        • #with 범위를 특정 객체로 변경합니다.
          {{#with user}} 
            <p>{{name}}</p> 
          {{/with}}

          이 스니펫은 블록의 사용자 속성에 대한 액세스를 단순화합니다.

    통합을 위한 고급 핸들바 구문

    다음은 핸들바 템플릿 언어를 활용하는 통합 템플릿에 사용되는 각 구문 요소에 대한 설명입니다.

    • {{#if lines}} {{/if}}

      {{#if}} 어떤 것이 사실인지 확인합니다.

      다음 스니펫은 에 무언가가 있는지 확인합니다. 에 값(예: 항목 목록 또는 일부 데이터)이 있는 경우 블록 내에서 작업을 수행합니다. 이 비어 있거나 없으면 블록을 건너뜁니다.

      {{#if lines}} 
        We have lines to process! 
      {{else}} 
        No lines available. 
      {{/if}}

      라인이 있으면 "처리할 라인이 있습니다!"로 표시됩니다. 그렇지 않으면 "사용 가능한 회선 없음"으로 표시됩니다.

    • {{~#each lines~}} {{/each}}

      {{#each}} 목록의 각 항목에 대해 내용을 반복합니다.

      다음 스니펫은 라인 목록의 각 항목을 반복하고 모든 항목에 대한 블록 내부의 콘텐츠를 렌더링합니다. ~ 기호는 핸들바의 공백 제어 문자입니다. 블록 전후의 추가 공간이나 줄 바꿈을 제거하여 더 깨끗하고 컴팩트한 출력을 보장합니다. (아래 참조)

      {{~#each lines~}} 
        <p>{{this}}</p> 
      {{/each}}

      스니펫은 각 항목을 한 줄 로 살펴보고 각 항목을 단락 태그에 넣습니다.

    • {{#if <logik line-level field varname>}} {{/if}}

      {{#if <logik ...}} 특정 데이터가 사실인지 존재하는지 확인합니다. 데이터의 특정 필드 또는 값(예: varname)이 존재하는지 또는 예인지 확인합니다. 데이터 세트와 같은 보다 복잡한 구조에서 특정 정보를 확인하는 방법입니다.

      {{#if logik.lineLevelField.isActive}} 
        The field is active! 
      {{else}} 
        The field is not active. 
      {{/if}}

      이 스니펫은 logik.lineLevelField.isActive 가 예인지 여부를 확인합니다(예: "활성"인지 확인). 활성 상태이면 "필드가 활성 상태입니다!"로 표시됩니다. 그렇지 않은 경우 "필드가 활성화되어 있지 않습니다"라고 표시됩니다.

    물결표(~)

    제어 문자인 물결표(~)는 공백과 줄 바꿈을 숨겨 출력을 깔끔하게 유지하는 데 도움이 됩니다. HTML을 더 컴팩트하게 만들고 출력의 간격 문제를 방지합니다.

    위의 예 중 일부에서 앞의 #each 선행 물결표는 블록이 시작되기 전에 공백을 제거합니다. #each 뒤의 후행 물결표는 블록이 시작된 후 공백을 제거합니다.

    zeroIfMissing 사용자 지정 도우미

    zeroIfMissing 도우미는 누락된 값으로 인한 오류를 방지하고 숫자 필드가 항상 유효한 기본값을 갖도록 합니다.

    Custom Helper 'zeroIfMissing'
    "price": {{zeroIfMissing txn.price}}, would become -> "price": 0 (or "price": 9.99, if txn.price is present)

    lgkFilter 사용자 지정 도우미

    lgkFilter 도우미는 컬렉션을 반복하고 지정된 조건을 충족하는 항목만 포함합니다.

    {
      "numericFiltered": [
        {{#lgkFilter lines "txn.line.custom.someNumber > 10"}}
          {
          "id": "{{txn.line.product.id}}",
          "someNumber": "{{txn.line.custom.someNumber}}"
        }
        {{else}}
          {
          "error": "Item could not be added (numeric condition)"
        }
        {{/lgkFilter}}
      ],
      "textFiltered": [
        {{#lgkFilter lines "txn.line.custom.status == Active"}}
          {
          "id": "{{txn.line.product.id}}",
          "status": "{{txn.line.custom.status}}"
        }
        {{else}}
          {
          "error": "Item could not be added (text condition)"
        }
        {{/lgkFilter}}
      ]
    }
    이 도우미는 바꾸 #each#unless 차단합니다.
    • 간단한 구문: {{#lgkFilter lines "<predicate_field>"}}
    • 조건부 구문: {{#lgkFilter lines "<predicate_field> <comparator> <literal_value>"}}
    • 지원되는 비교기: <, , ><=, >=, !=,==
    • &와 같은 복잡한 조건은 지원되지 않습니다.

    else 블록은 도우미 내에서 지원됩니다.

    구문이 올바르지 않고 필드를 구문 분석할 수 없는 경우 도우미가 오류를 발생시킵니다.

    도우미는 유효한 JSON 출력을 위해 내부적으로 쉼표 조인을 수행합니다.

    @ 기호

    @는 현재 컨텍스트가 아닌 외부 또는 상위 컨텍스트에서 값을 끌어오도록 합니다. 필요한 데이터가 구조의 상위 수준에 있고 현재 범위의 로컬 데이터와 혼동하지 않으려는 경우에 자주 사용됩니다.

    표현식 "LGK__TransactionId__c": "@{parentTransaction.id}"@ 에서 기호는 핸들바 또는 기타 유사한 시스템과 같은 템플릿 시스템의 상위 컨텍스트 또는 개체의 값을 참조하는 데 사용됩니다.

    이 구문은 @{} 시스템에 상위 컨텍스트(현재 범위 밖의 객체 또는 데이터)를 보고 parentTransaction.id 값을 검색하도록 지시합니다.

    예를 들어 다음과 같은 객체가 있다고 가정합니다.

    { 
      "parentTransaction": { 
        "id": "12345" 
      } 
    }

    를 사용하면 "LGK__TransactionId__c": "@{parentTransaction.id}"parentTransactionid(12345)"LGK__TransactionId__c"가 .

    조건부 할당 예시

    이 라인 "LGK__ParentTransactionLineId__c": {{#if txn.line.custom.parentLineReferenceId}} "@{line_{{txn.line.custom.parentReferenceId}}.id}" {{else}} null {{/if}} 은 핸들바 템플릿의 일부이며 필드 LGK__ParentTransactionLineId__c의 값을 조건부로 설정합니다.

    • LGK__ParentTransactionLineId__c 는 결과 값이 배치될 키입니다.
    • {{#if txn.line.custom.parentLineReferenceId}}txn.line.custom.parentLineReferenceId가 존재하고 값이 있는지 확인합니다.
    • @{line_{{txn.line.custom.parentReferenceId}}.id}parentReferenceId를 기반으로 특정 줄의 ID에 대한 동적 참조를 생성합니다.
    • {{else}} null {{/if}} 조건이 false이면 값을 null로 설정합니다.

    Salesforce 필드와 조건부 구두점 연결

    핸들바에서 템플릿의 변수를 결합하고 {{#if}} 블록을 사용하여 조건부 논리를 처리하여 구두점(예: 쉼표, 공백 및 조건부 확인)과 함께 여러 필드를 연결할 수 있습니다.

    예를 들어, 다음 접근 방식을 사용하여 도로명 주소, 도로명 주소2, 도시, 주 및 주소의 우편 번호와 같은 필드를 연결하고 도로명 주소2 뒤의 쉼표와 공백이 도로명 주소2가 채워진 경우에만 포함되도록 할 수 있습니다.

    {{#if streetAddress}} 
      {{streetAddress}} 
      {{#if streetAddress2}}, {{streetAddress2}}{{/if}} 
      {{#if city}}, {{city}}{{/if}} 
      {{#if state}}, {{state}}{{/if}} 
      {{#if zipcode}}, {{zipcode}}{{/if}} 
    {{else}} 
      No address available 
    {{/if}}

    이는 streetAddress, streetAddress2 및 city와 같은 필드를 연결하여 해당 필드가 채워지는 경우에만 쉼표가 포함되도록 합니다.

    streetAddress2가 있는 출력 예:"123 Main St, Apt 4, San Francisco, CA, 94105"

    streetAddress2가 없는 출력 예:"123 Main St, San Francisco, CA, 94105"

    결론

    관리자는 이러한 핵심 요소를 사용하여 동적이고 유연하며 유지관리 가능한 통합 변환 템플릿을 만들 수 있습니다. 표현식, 도우미, 블록, 조건부 및 상위 컨텍스트 참조를 이해하고 활용하면 복잡한 데이터와 논리를 쉽게 처리할 수 있습니다.

    핸들바 구문에 대한 자세한 내용은 핸들바 설명서를 참조하십시오.
    주:
    핸들바 구문은 이 외부 문서에 설명된 모든 기능을 지원하지 않습니다.