我是ServiceNow的新手 我有两个表公司和位置。
位置表具有列名称。 公司表有列名和位置。这里的位置类型是参考。
公司和位置表数据如下。
位置
名称
奈
HYD
公司
名称位置
ABC Chennai
CDE HYD
我的任务是从公司表中查询名称和位置。查询如下。
var company = new GlideRecord('u_company');
subCat.query();
while (company.next()) {
alert("Location: " + company.location);
}
此处值始终为十六进制值。如何获取位置的实际文本值?
答案 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);
}