これは、カート以外のレイアウトマクロを使用して、[要求元:] フィールドの下のチェックアウトに [会社 (Company)] フィールドを追加する例です。つまり、glide.sc.use_cart_layouts は falseです。
このタスクについて
図 : 1. フィールドの要求元
このフィールドは、そのフィールドの値をサービスカタログ要求の [会社] フィールドに渡します。
この例は、以下を前提としています。
- この例は、2 ステップチェックアウトを使用するインスタンス用です。2 ステップチェックアウトが有効になっていない場合は、開始する前に有効にしてください。
- この例では、サービスカタログ要求フォームの [会社] フィールドに値を入力します。フィールドがフォームに表示されない場合は、開始する前にフォームを構成します。
手順
-
[システム UI] > [UI マクロ] に移動し、[servicecatalog_cart_template] を選択します。
-
非表示の変数が宣言されている箇所を見つけて、次の行を追加します。
<input type="HIDDEN" name="cart_id" id="cart_id" value="$[sc_cart.sys_id]" />
-
要求元コードを生成する次のコードを探します。
<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>
-
後で次のコードを追加します。
<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>
注: ui_reference マクロは参照フィールドを定義します。さまざまなフィールドタイプにいくつかのマクロがあります。これらのフィールドタイプの例は、[システム UI] -> [UI マクロ]で確認できます。これらのマクロは先頭が「 ui_」で始まります。この例では、作成される参照フィールドの名前は core_company です。
-
[システム UI] > [UI ページ] に移動し、[servicecatalog_checkout_one] UI ページを選択します。
-
次のスクリプトを [クライアントスクリプト] フィールドに追加します。
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();
}
}
この例では、参照フィールドは core_company と呼ばれ、要求に応じて入力されるフィールドは company です。異なるフィールドを使用する場合:
- 次の行を探します。
var company = gel('core_company');。次に、core_company をチェックアウトのフィールドの名前に置き換えます。
- 先頭が「
cart_item.hints」で始まる行で、「request.company」を要求チケットに応じて入力されるフィールドの名前に置き換えます。ここで、「request」は生成される要求であり、「company」はフィールドの名前です。
タスクの結果
アイテムが注文されると、会社フィールドがカタログフォームに表示されます。