ServiceNow: 데이터베이스 검색 결과를 양식으로 표시(이메일 주소 가져오기 및 표시)

개요



ServiceNow는 클라이언트 측에서 실행되는 스크립트와 서버 측에서 실행되는 스크립트가 있습니다.
클라이언트측에서 동작하는 스크립트는 폼 등의 필 속성이나 입력 체크에 관련되는 것이 많습니다. 예를 들어, 날짜 검사를 수행하는 스크립트( htps : // m / ht 쇼자와 / ms / 039220114 A8 A9 Ae 2949 )를 들 수 있습니다. 데이터 테이블을 참조하면, 갱신하는 처리는 서버측에서 실행합니다.
이 기사는 클라이언트 측에서 서버 측을 호출하고 결과를 양식에 표시하는 스크립트를 작성합니다. 사용자 이메일 주소를 검색하는 스크립트의 예로 만듭니다.

이번에 작성하는 양식은 다음 스크린샷과 같이 사용자를 선택하면 오른쪽에 사용자의 이메일 주소가 표시됩니다.


양식(클라이언트 측)



사용자 이름을 선택하면 이메일 주소를 표시하는 양식을 만듭니다. 이메일 주소는 참조 전용입니다. 사용자의 오른쪽에 이메일 주소를 표시하기 위해 컨테이너를 사용합니다.


변수(필드)



사용자, 이메일 주소 및 컨테이너에 대한 필드를 만듭니다.

사용자



sys_user 테이블의 이름을 표시하는 선택 상자에 대한 조회 필드를 작성합니다.




이메일 주소



이메일 주소를 표시하는 한 줄 텍스트 필드를 만듭니다.




UI 정책



이메일 주소 필드는 참조 전용으로 만드는 UI 정책을 만듭니다.


클라이언트 스크립트



메일 주소를 숨기는 스크립트와 서버로부터 메일 주소를 취득하는 스크립트의 2개의 클라이언트 스크립트를 작성합니다.


메일 필 숨기기



이메일 주소를 숨기는 스크립트는 양식을 로드할 때(시작할 때) 시작합니다.
function onLoad() {
    g_form.getControl('email').style.border = '5px solid white';  //メールフィールドの枠を白色にする
    g_form.getControl('email').style.backgroundColor = 'white';   //メールフィールドの背景色を白にする
    g_form.setVisible('email', false);                            //メールフィールドを非表示にする
}



서버에서 이메일 주소 가져오기:



사용자의 sys_id를 서버 측 스크립트로 보내고 이메일 주소를 얻는 스크립트를 만듭니다.
function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    var ajax = new GlideAjax('getUserEmail');   //Ajaxを利用してサーバを呼び出す。引数にサーバスクリプトファイル名を渡す
    ajax.addParam('sysparm_name', 'getEmail');  //呼び出すメソッド名を指定
    ajax.addParam('sysparm_uid', newValue);     //引き渡す値を指定。今回はユーザsys_idを引き渡す
    ajax.getXMLAnswer(function(answer) {        //Ajax呼び出し
        if (answer.length > 0) {                //メールアドレスを取得できたかチェック
            g_form.setVisible('email', true);   //取得できた場合はメールフィールドを表示して
            g_form.setValue('email', answer);   //   結果をメールフィールドに設定する
        } else {
            g_form.setVisible('email', false);  //メールアドレスを取得できない場合はメールフィールドを非表示にする
        }
    });
}



스크립트 포함(서버측)



테이블 참조, 갱신, 삭제 등의 조작은 서버측에서 실시합니다.
클라이언트에서 호출되는 서버 측 스크립트는 스크립트 포함에 설명됩니다.
1. 응용프로그램 네비게이터에서 스크립트 포함을 검색하고 시스템 정의 아래에서 스크립트 포함을 선택하십시오.

2. 클라이언트에서 호출되는 함수를 생성하므로 "클라이언트 호출 가능"을 선택합니다. 체크하면 스크립트의 내용이 바뀝니다.

3. 스크립트를 입력합니다.

var getUserEmail = Class.create();
getUserEmail.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getEmail: function () {
        var user_id = this.getParameter('sysparm_uid');  //クライアントからの引数を取得。今回はユーザのsys_idを取得
        var user_lookup = new GlideRecord('sys_user');   //SystemNowのユーザテーブル(sys_id)を参照する
        if(user_lookup.get(user_id)){                    //指定したユーザが存在するか確認
            return user_lookup.email;                //存在する場合はメールアドレスを返す
        }
        return '';                                       //存在しない場合は空文字を返す 

    },
    type: 'getUserEmail'
});

복수의 레코드를 취득하는 경우는 .query()와 while(user_lookup.next())를 이용합니다만, sys_id는 독특하기 때문에 1개의 레코드만을 취득하기 때문에 .get()와 if를 이용했습니다.

테스트



작성한 양식을 열고 사용자를 선택하면 오른쪽에 이메일 주소가 표시됩니다.

이상

좋은 웹페이지 즐겨찾기