client scriptで別テーブルから値を取得し、反映する方法  How to get the value from another table with client script and reflect it

Kazuki Maekawa
Mega Explorer

こんにちは。

現在、「1」で設定した値を基に「member」テーブルを参照し、1と一致するレコードの「原価」「利益」の値を取得し、「稼働時間」に入力された数字をかけた値を、それぞれ「shien_kanri」テーブルの「原価」、「利益」フィールドに反映させるという処理を実行したいです。

下記ページを参考にコードを書いているのですが、初学者のためうまくいかず、
どのように書き直せば上記の処理を実現できますでしょうか。
https://community.servicenow.com/community?id=community_question&sys_id=c74a21961b407450a17c62c4bd4bcb31

Hi.

Currently, refer to the "member" table based on the value set in "1", get the "原価" and "利益" values ​​of the records that match 1, and multiply by the number entered in "稼働時間". I want to execute the process of reflecting the value in the "原価" and "利益" fields of the "shien_kanri" table, respectively.

I wrote the code referring to the following page, but it didn't work,
How can I rewrite it to achieve the above process?

Thank you.
 

 

 

10 REPLIES 10

仕様書通りかは分かりませんがサンプルを記述します。例では原価と利益の2つを1つのスクリプトインクルードで返しています。注意が必要なのはスクリプトインクルードで返す値を.toString()する必要があることです。

クライアントスクリプト

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }

    var ajax = new GlideAjax('GetMember'); //Ajaxを利用してサーバを呼び出す。引数にサーバスクリプトファイル名を渡す
    ajax.addParam('sysparm_name', 'getMemberInfo'); //呼び出すメソッド名を指定
    ajax.addParam('sysparm_user_id', newValue); //選択されたユーザのsys_idを設定する
    ajax.getXML(_setFromMemberInfo);

    function _setFromMemberInfo(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
		answer = answer.evalJSON();
        g_form.setValue('u_string_3', answer.cost);
		g_form.setValue('u_string_2', answer.profit);
		g_form.setValue('u_string_1', Number(answer.cost)*Number(answer.profit));
    }
}

スクリプトインクルード

var GetMember = Class.create();
GetMember.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getMemberInfo: function() {
         var gr_member = new GlideRecord('member'); // memberテーブルを検索
         var member_id = this.getParameter('sysparm_member_id');
         if (gr_member.get(member_id)) { // 該当レコードをループして処理
            return JSON.stringify({
                 'cost': gr_member.toString(),
                 'profit': gr_member.toString()
            });
         }
    },
    type: 'GetMember'
});