client scriptで別テーブルから値を取得し、反映する方法 How to get the value from another table with client script and reflect it
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-08-2021 11:22 PM
こんにちは。
現在、「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.
Labels:
- Labels:
-
Studio
10 REPLIES 10

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-10-2021 01:08 AM
仕様書通りかは分かりませんがサンプルを記述します。例では原価と利益の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'
});