Glide Record查询

时间:2018-04-19 06:19:03

标签: include servicenow

我正在尝试构建一个自定义应用程序,在表格中我有两个字段角色和费率。

该表有三个不同的行值。我正在尝试脚本包含滑动记录不是自定义应用程序的好方法,我需要获取像SQL查询这样的值。

Select  rates from the table where role ='x'

并运行此查询以获取3个不同变量中的所有值。

  1. 我试图在范围应用程序中使用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);`
    
  2. 另外由于查询结果应该是3个不同的变量,我需要一些帮助,如何在脚本中包含多个返回值

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://docs.servicenow.com/bundle/kingston-application-development/page/script/server-scripting/concept/c_UsingGlideRecordToQueryTables.html

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}
]