ServiceNow 中的参考值问题

Issue with reference value in ServiceNow

我对 ServiceNow 很陌生 我有两个 table 的公司和地点。

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

公司和位置table数据如下。

地点
姓名
钦奈 海德

公司
姓名 地点
ABC 钦奈
CDE HYD

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

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

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

}

这里的值总是十六进制值。如何获取位置的实际文本值?

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

如果您在 业务规则 中执行此操作,则可以使用 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。看看那里的例子,但这里是一个简单的例子。

创建一个新的 Script Include 客户端可调用。

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);
}