我正在尝试构建一个自定义应用程序,在表格中我有两个字段角色和费率。
该表有三个不同的行值。我正在尝试脚本包含滑动记录不是自定义应用程序的好方法,我需要获取像SQL查询这样的值。
Select rates from the table where role ='x'
并运行此查询以获取3个不同变量中的所有值。
我试图在范围应用程序中使用GlideRecord,但getValue();返回(null)值
var role = new GlideRecord ('x_estimation_offsh_india_rates');
x= role.getValue('roles');
gs.info(x);`
这里有什么问题?
我甚至尝试了get()但没有工作,因为我不能将它用于表中的所有值
var x;
var role = new GlideRecord ('x_estimation_offsh_india_rates');
role.get('role','it1');
x=role.rates;
gs.info(x);`
另外由于查询结果应该是3个不同的变量,我需要一些帮助,如何在脚本中包含多个返回值
答案 0 :(得分:0)
首先,我要提一下,你所做的很多事情都与最佳做法有所不同,所以我建议你看一下我的书:学习ServiceNow({{3} })和ServiceNow开发手册(http://lsn.sngeek.com)。
那说,问题是你永远不会调用.query()或.next()方法。
在声明您的GlideRecord变量并添加任何过滤条件后,请调用.query()API来执行查询。然后,调用.next()使用第一个返回记录中的值填充GlideRecord变量。它返回一个布尔值,指示是否找到了记录,因此您可以将其用作while循环的条件来迭代所有返回的记录:
while(gr.next()) { /*do stuff*/ }
答案 1 :(得分:0)
如果你想打印所有
var ratesGr = new GlideRecord ('x_estimation_offsh_india_rates');
ratesGr.query();
while(ratesGr.next()){
var x = ratesGr.getValue('roles');
gs.info(x);
}
如果你想获取一条记录
var ratesGr = new GlideRecord ('x_estimation_offsh_india_rates');
if(ratesGr.get('d3e87e9d73d91300cbb654eb7df6a7a5')){ // sys_id of the record
var x = ratesGr.getValue('roles');
gs.info(x);
}
有用的链接:
https://www.servicenowguru.com/scripting/gliderecord-query-cheat-sheet/
答案 2 :(得分:0)
您尚未添加 query()
方法。使用以下内容:
var obj=[];
var record = new GlideRecord ('x_estimation_offsh_india_rates');
record.query();
while(record.next()){
obj.push({
"role":record.getValue("role"),
"rate":record.getValue("rates"),
});
}
gs.info(obj);
所以,如果你有一张这样的桌子:
role | rate
x 1
y 2
z 3
该对象应如下所示:
obj = [
{"role":"x", "rate":1},
{"role":"y", "rate":2},
{"role":"z", "rate":3}
]