Gestionnaire de transactions : intégrations : syntaxe de Handlebars

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 6 minutes de lecture
  • Vous pouvez utiliser le langage de modélisation Handlebars lorsque vous créez un modèle de transformation d’intégration.

    Le guidon est un langage de modélisation léger utilisé pour générer du contenu dynamique. Les administrateurs qui créent des modèles de transformation d’intégration utilisent les éléments clés suivants de la syntaxe Handlebars, ainsi que des améliorations spécifiques à CPQ:

    • Expressions en guidon : entourées d’accolades {{ }}doubles, les expressions permettent aux administrateurs d’insérer des variables, des fonctions ou des propriétés dans le modèle. Par exemple, {{user.name}} affiche la valeur de la propriété name de l’objet utilisateur.
    • Les aides intégrées comprennent les aides conditionnelles et les aides d’itération.
      • Les assistants conditionnels vous permettent de restituer le contenu de manière conditionnelle en fonction d’une valeur. Par exemple :
        • #if Affiche le contenu si la condition est vraie.
          {{#if user.isActive}} 
            Active 
          {{/if}}

          Cet extrait de code affiche « Actif » uniquement si user.isActive est vrai.

        • #unless – Le contraire de #if, il rend le contenu si la condition est fausse.
          {{#unless user.isActive}} 
            Inactive 
          {{/unless}}

          Cet extrait de code affiche « Inactif » si user.isActive est faux.

      • Les aides d’itération vous permettent de parcourir les listes ou de modifier le périmètre.
        • #each parcourt un tableau en boucle et affiche le contenu de chaque élément.
          {{#each users}} 
            <li>{{this.name}}</li> 
          {{/each}}

          Cet extrait parcourt les utilisateurs et affiche le nom de chaque utilisateur sous forme d’élément de liste.

        • #with Change le périmètre en un objet spécifique.
          {{#with user}} 
            <p>{{name}}</p> 
          {{/with}}

          Cet extrait simplifie l’accès aux propriétés de l’utilisateur dans le bloc.

    Syntaxe avancée de Handlebars pour les intégrations

    Voici une explication de chaque élément syntaxique utilisé dans le modèle d’intégration, qui exploite le langage de modélisation Handlebars.

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

      {{#if}} Vérifie si quelque chose est vrai.

      L’extrait suivant vérifie s’il y a quelque chose dans les lignes. Si les lignes ont une valeur (comme une liste d’éléments ou des données), elles feront quelque chose à l’intérieur du bloc. Si les lignes sont vides ou n’existent pas, elles ignorent le bloc.

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

      S’il existe des lignes, cela indique « Nous avons des lignes à traiter ! ». Sinon, il affiche « Aucune ligne disponible ».

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

      {{#each}} Répète quelque chose pour chaque élément d’une liste.

      L’extrait suivant itère chaque élément de la liste des lignes et affiche le contenu à l’intérieur du bloc pour chaque élément. Les symboles ~ sont des caractères de contrôle d’espace blancs dans Handlebars. Ils aident à supprimer les espaces supplémentaires ou les sauts de ligne avant et après le bloc, assurant une sortie plus propre et plus compacte. (Voir ci-dessous.)

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

      L’extrait parcourt chaque élément en lignes et place chaque élément dans une balise de paragraphe.

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

      {{#if <logik ...}} Vérifie si une donnée spécifique est vraie ou existe. Il vérifie si un champ ou une valeur spécifique (comme varname) dans vos données existe ou est vrai. C’est un moyen de vérifier des informations spécifiques dans une structure plus complexe (comme dans un ensemble de données).

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

      Cet extrait de code vérifie si logik.lineLevelField.isActive est vrai (par exemple, vérifier si quelque chose est « actif »). Si c’est le cas, il affiche « Le champ est actif ! » Si ce n’est pas le cas, il affiche « Le champ n’est pas actif ».

    Le tilde (~)

    Le tilde (~), un caractère de contrôle, masque les espaces et les sauts de ligne, ce qui permet de garder la sortie propre. Cela rend le HTML plus compact et évite les problèmes d’espacement dans la sortie.

    Dans certains des exemples ci-dessus, un tilde de début avant #each supprime l’espace avant le début du bloc. Le tilde de fin après #each supprime l’espace après le démarrage du bloc.

    L’assistant personnalisé zeroIfMissing

    L’aide zeroIfMissing empêche les erreurs dues à des valeurs manquantes et garantit que les champs numériques ont toujours une valeur par défaut valide.

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

    L’aide personnalisée lgkFilter

    L’assistant lgkFilter itère une collection et inclut uniquement les éléments qui remplissent une condition spécifiée.

    {
      "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}}
      ]
    }
    Cette aide remplace #each et #unless bloque.
    • Syntaxe simple : {{#lgkFilter lines "<predicate_field>"}}
    • Syntaxe conditionnelle : {{#lgkFilter lines "<predicate_field> <comparator> <literal_value>"}}
    • Comparateurs pris en charge : <, , >, >=<=, !=,==
    • Les conditions complexes telles que & ne sont pas prises en charge

    Le bloc else est pris en charge dans l’assistant.

    L’assistant génère une erreur lorsque sa syntaxe est incorrecte et lorsque les champs ne peuvent pas être analysés.

    L’assistant effectue des jointures par virgule en interne pour une sortie JSON valide.

    Le symbole @

    Le @ garantit que vous extrayez la valeur du contexte externe ou parent et non du contexte actuel. Il est souvent utilisé lorsque les données dont vous avez besoin se trouvent à un niveau supérieur de la structure et que vous voulez éviter de les confondre avec les données locales du périmètre actuel.

    Dans l’expression "LGK__TransactionId__c": "@{parentTransaction.id}", le @ symbole est utilisé pour référencer une valeur d’un contexte ou d’un objet parent dans les systèmes de modèles, tels que Handlebars ou d’autres systèmes similaires.

    La @{} syntaxe indique au système d’examiner le contexte parent (l’objet ou les données en dehors du champ d’application actuel) et de récupérer la valeur de parentTransaction.id.

    Par exemple, supposons que vous ayez un objet comme celui-ci :

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

    Lorsque vous utilisez "LGK__TransactionId__c": "@{parentTransaction.id}", l’ID de parentTransaction (qui est 12345) sera utilisé comme valeur pour "LGK__TransactionId__c".

    Exemple d’affectation conditionnelle

    La ligne "LGK__ParentTransactionLineId__c": {{#if txn.line.custom.parentLineReferenceId}} "@{line_{{txn.line.custom.parentReferenceId}}.id}" {{else}} null {{/if}} fait partie d’un modèle de guidon et définit conditionnellement la valeur du champ LGK__ParentTransactionLineId__c.

    • LGK__ParentTransactionLineId__c’est la clé où la valeur résultante sera placée.
    • {{#if txn.line.custom.parentLineReferenceId}} vérifie si txn.line.custom.parentLineReferenceId existe et a une valeur.
    • @{line_{{txn.line.custom.parentReferenceId}}.id} Crée une référence dynamique à l’ID d’une ligne spécifique en fonction de parentReferenceId.
    • {{else}} null {{/if}} Définit la valeur sur null si la condition est fausse.

    Concaténation des champs Salesforce avec la ponctuation conditionnelle

    Dans Handlebars, la concaténation de plusieurs champs avec la ponctuation (comme les virgules, les espaces et les vérifications conditionnelles) peut être effectuée en combinant des variables dans le modèle et en utilisant des blocs {{#if}} pour gérer la logique conditionnelle.

    Par exemple, vous pouvez utiliser l’approche suivante pour concaténer des champs tels que l’adresse postale, l’adresse postale2, la ville, l’état et le code postal d’une adresse, tout en veillant à ce qu’une virgule et un espace après adresse postale2 ne soient inclus que si l’adresse postale 2 est renseignée :

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

    Cela concatène des champs tels que streetAddress, streetAddress2 et city, en veillant à ce que les virgules ne soient incluses que lorsque les champs correspondants sont renseignés.

    Exemple de sortie avec streetAddress2 : "123 Main St, Apt 4, San Francisco, CA, 94105"

    Exemple de sortie sans streetAddress2 : "123 Main St, San Francisco, CA, 94105"

    En conclusion

    À l’aide de ces éléments clés, les administrateurs peuvent créer des modèles de transformation d’intégration dynamiques, flexibles et faciles à gérer. Comprendre et exploiter des expressions, des helpers, des blocs, des conditionnels et des références de contexte parent permet de gérer facilement des données et une logique complexes.

    Pour plus d’informations sur la syntaxe Handlebars, consultez la documentation Handlebars.
    Remarque :
    La syntaxe de Handlebars ne prend pas en charge toutes les fonctionnalités décrites dans ce document externe.