如何通过更改请求字段过滤任务的 GlideRecord 查询
How do I filter a GlideRecord Query for tasks by a Change Request Field
我有代码应该 return 在执行时发生的某些 CI 的所有已批准更改。这个想法是查询 task_ci table 并点走到我需要的各个字段。这是代码:
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 实际上在更改请求表(从任务扩展)上,因此无法通过这种方式访问它们。有没有办法在我的查询中使用这些字段?
更改 start_date 和 end_date 不能直接在 task_ci table 上使用。您需要遍历更改请求 table 并获取它。要获得实际查询,您可以在 table 上应用过滤器并复制其查询。
查询:
task.ref_change_request.start_date<=javascript:gs.nowDateTime()^task.ref_change_request.end_date>=javascript:gs.nowDateTime()
Filter
查询已修改为符合您现在的条件(当前 date/time)并应用于脚本,如下所示。
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();
我有代码应该 return 在执行时发生的某些 CI 的所有已批准更改。这个想法是查询 task_ci table 并点走到我需要的各个字段。这是代码:
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 实际上在更改请求表(从任务扩展)上,因此无法通过这种方式访问它们。有没有办法在我的查询中使用这些字段?
更改 start_date 和 end_date 不能直接在 task_ci table 上使用。您需要遍历更改请求 table 并获取它。要获得实际查询,您可以在 table 上应用过滤器并复制其查询。
查询:
task.ref_change_request.start_date<=javascript:gs.nowDateTime()^task.ref_change_request.end_date>=javascript:gs.nowDateTime()
Filter
查询已修改为符合您现在的条件(当前 date/time)并应用于脚本,如下所示。
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();