如何通过更改请求字段过滤GlideRecord查询以查找任务

时间:2019-01-03 22:23:46

标签: servicenow

我有一些代码应该返回执行时正在发生的某些配置项的所有批准的更改。这个想法是查询task_ci表,并点走到我需要的各个字段。这是代码:

    var changes = new GlideRecord('task_ci');
    changes.addQuery('task.sys_class_name', 'change_request');
    changes.addQuery('task.approval','approved');
    changes.addQuery('ci_item', 'IN', items.join(','));
    changes.addQuery('task.active', true);
    changes.addQuery('task.start_date','<=', gs.nowDateTime());
    changes.addQuery('task.end_date','>=', gs.nowDateTime());
    changes.query();

除了开始和结束日期部分,该代码似乎正常工作。它几乎忽略了那些。我的猜测是,由于start_date和end_date实际上位于变更请求表单(从任务扩展而来)上,因此无法以这种方式对其进行访问。有没有一种方法可以在查询中使用这些字段?

1 个答案:

答案 0 :(得分:2)

更改start_date和end_date在task_ci表上不直接可用。您需要点一下变更请求表并获取它。要获取实际查询,您可以在表上对过滤器应用过滤器,然后复制其查询。

查询:

  task.ref_change_request.start_date<=javascript:gs.nowDateTime()^task.ref_change_request.end_date>=javascript:gs.nowDateTime()

Filter

查询已被修改,以符合您在“现在(当前日期/时间)”上的条件,并按以下方式应用于脚本。

    var changes = new GlideRecord('task_ci');
    changes.addQuery('task.sys_class_name', 'change_request');
    changes.addQuery('task.approval','approved');
    changes.addQuery('ci_item', 'IN', items.join(','));
    changes.addQuery('task.active', true);
    changes.addEncodedQuery('task.ref_change_request.start_date<=javascript:gs.nowDateTime()^task.ref_change_request.end_date>=javascript:gs.nowDateTime()');
    changes.query();

这是脚本的addQuery()版本

    var changes = new GlideRecord('task_ci');
    changes.addQuery('task.sys_class_name', 'change_request');
    changes.addQuery('task.approval','approved');
    changes.addQuery('task.active', true);
    changes.addQuery('task.ref_change_request.start_date', '<=', 'javascript:gs.nowDateTime()');
    changes.addQuery('task.ref_change_request.end_date', '>=', 'javascript:gs.nowDateTime()');
    changes.query();

相关问题