ServiceNow中的参考值问题

时间:2017-10-23 09:19:08

标签: servicenow

我是ServiceNow的新手 我有两个表公司和位置。

位置表具有列名称。 公司表有列名和位置。这里的位置类型是参考。

公司和位置表数据如下。

位置
名称
奈 HYD

公司
名称位置
ABC Chennai
CDE HYD

我的任务是从公司表中查询名称和位置。查询如下。

var company = new GlideRecord('u_company');
subCat.query();

while (company.next()) {
   alert("Location: "  + company.location);         

}

此处值始终为十六进制值。如何获取位置的实际文本值?

1 个答案:

答案 0 :(得分:1)

您所看到的应该是sys_id参考字段的location

如果您是在商家规则中执行此操作,则可以使用getRefRecord()方法轻松完成此操作。

var company = new GlideRecord('u_company');
company.query();

while (company.next()) {
    var loc = company.location.getRefRecord()

    gs.log("Company Name: "  + company.getValue('name'));
    gs.log("Location Name: "  + loc.getValue('name'));
}

如果您将其作为客户端脚本执行此操作,则需要更多参与,但您可以使用GlideAjax。看看那里的例子,但这是一个简单的例子。

创建一个新的脚本包含,即客户端可调用。

var MyCompanyUtils = Class.create();
MyCompanyUtils.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getLocationName : function() {
        // parameters
        var company = this.getParameter('sysparm_my_company');

        // query
        var rec = new GlideRecord('u_company');
        rec.addQuery('sys_id', company);
        rec.query();

        data = "Company not found."
        while (rec.next()) {
            var loc = rec.location.getRefRecord();
            data = loc.name;
        }

        return data;
    },

    type : "MyCompanyUtils"
});

创建一个调用此脚本包含的客户端脚本。

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }
    // get the company referece value
    var company = g_form.getValue('company');

    var ga = new GlideAjax('MyCompanyUtils'); // call the object
    ga.addParam('sysparm_name', 'getLocationName'); // call the function
    ga.addParam('sysparm_my_company', company); // pass in company
    ga.getXML(showLocation);
}

function showLocation(response) {
    var answer = response.responseXML.documentElement.getAttribute("answer");

    alert("Location: " + answer);
}