Ajouter un champ à la validation du catalogue de services

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 2 minutes de lecture
  • Il s’agit d’un exemple d’ajout d’un champ Société à la validation sous le champ Demandé pour à l’aide de macros de disposition autres que le panier, c’est-à-dire qu’il glide.sc.use_cart_layouts est faux.

    Avant de commencer

    Rôle requis : admin

    Pourquoi et quand exécuter cette tâche

    Figure 1. Demandé pour le champ

    Ce champ transmettra ensuite la valeur de ce champ au champ Société de la demande de Catalogue de services.

    Cet exemple repose sur les hypothèses suivantes.

    • Cet exemple concerne une instance utilisant la validation en deux étapes. Si la validation en deux étapes n’est pas activée, activez-la avant de commencer.
    • Cet exemple remplit le champ Société du formulaire de demande de Service Catalog. Si le champ n’apparaît pas sur le formulaire, configurez le formulaire avant de commencer.

    Procédure

    1. Accédez à Interface utilisateur du système > Macros d’interface utilisateur et sélectionnez servicecatalog_cart_template.
    2. Recherchez où il y a des variables cachées déclarées et ajoutez la ligne suivante :
      <input type="HIDDEN" name="cart_id" id="cart_id" value="$[sc_cart.sys_id]" />
    3. Recherchez le code suivant, qui génère le code Demandé pour :
      <tr class="header">
      <td width = "30%">
        ${gs.getMessage('Requested for')}:
        </td>
        <td width="70%">
          <label for="requestor_location">${gs.getMessage('Deliver to')}:</label>
        </td>
      </tr>
      <tr><td>$[SP]</td> 
      </tr>
        <tr><td valign="top">
          <j2:if test="$[jvar_can_delta_rf == false]">
            $[sc_cart.requested_for.getDisplayValue()]
          </j2:if>
          <j2:if test="$[jvar_can_delta_rf != false]">
            <g2:catalog_requested_for />
          </j2:if>
        </td>
        <td>
          <textarea id="requestor_location" style="width:100%" rows="4"       name="requestor_location" wrap="soft" onChange="catDeliveryAddress('$[sc_cart.sys_id]', 'requestor_location');"> 
            $[sc_cart.delivery_address]
          </textarea>
        </td>
      </tr>
      <tr>
        <td>$[SP]</td>
      </tr>
    4. Ajoutez ensuite le code suivant :
      <tr class="header">
        <td colspan="2">Company</td>
      </tr>
      <tr>
        <td>$[SP]</td>
      </tr>
      <tr>
        <td colspan="2">
          <g2:ui_reference name="core_company" table="core_company" onchange="setCartValue()"/>
        </td>
      </tr>
      <tr>
        <td>$[SP]</td>
      </tr>
      Remarque :
      La macro 'ui_reference' définit un champ de référence. Il existe plusieurs macros pour différents types de champs. Vous pouvez voir des exemples de ces types de champs sous Interface utilisateur du système > Macros d’interface utilisateur. Ces macros commencent par « ui_ ». Pour cet exemple, le champ de référence créé est nommé core_company.
    5. Accédez maintenant à l’interface utilisateur du système > aux pages de l’interface utilisateur et sélectionnez la page de l’interface utilisateur servicecatalog_checkout_one .
    6. Ajoutez le script suivant au champ Script client .
      function setCartValue() { 
        var newField = gel('core_company'); 
        var myCart = gel('cart_id'); 
        var cart_item = new GlideRecord('sc_cart_item');
        cart_item.addQuery('cart', myCart.value);
        cart_item.query(); 
        if(cart_item.next()) {
          cart_item.hints = "<hints><entry key='sysparm_processing_hint' value='setfield:request.company=" + newField.value + "'/></hints>";
          cart_item.update(); 
        } 
      }

      Pour cet exemple, le champ de référence a été appelé core_company et le champ renseigné dans la demande est company. Si d’autres champs sont utilisés :

      • Recherchez cette ligne : var company = gel('core_company') ; et remplacez core_company par le nom du champ lors de la validation.
      • Dans la ligne qui commence par « cart_item.hints », remplacez « request.company » par le nom du champ à renseigner sur le ticket de demande où « request » est la demande générée et « company » est le nom du champ.

    Résultats

    Lorsqu’un élément est commandé, le champ Société s’affiche sur le formulaire Catalogue :

    Champ ajouté lors de la validation du catalogue de services