You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ServiceNow中生成排除周末的工作日SLA任务报表

在ServiceNow中实现仅按工作日计算SLA的报表方案

方法1:用内置工作日函数直接计算

ServiceNow自带处理工作日计算的原生函数,可自动排除周末和系统配置的节假日:

  • 打开报表构建器,在筛选条件中选择「新建条件」,类型选「脚本」
  • 输入以下脚本作为筛选逻辑,判断任务从创建到关闭的工作日天数是否符合5天要求:
    var start = new GlideDateTime(current.sys_created_on);
    var end = new GlideDateTime(current.closed_at);
    var cal = new GlideCalendar();
    return cal.getBusinessDaysBetween(start, end) == 5;
    
  • 保存条件后,报表将只展示工作日SLA达标的任务

方法2:创建自定义脚本字段简化报表配置

如果需要频繁复用这个工作日计算逻辑,建议给任务表添加自定义字段:

  1. 导航到你的任务表(如task或自定义业务表)的字段列表,点击「新建」
  2. 字段类型选脚本,命名为business_days_sla这类清晰标识的名称
  3. 在脚本框中写入:
    if (!current.sys_created_on || !current.closed_at) return null;
    var start = new GlideDateTime(current.sys_created_on);
    var end = new GlideDateTime(current.closed_at);
    var cal = new GlideCalendar();
    return cal.getBusinessDaysBetween(start, end);
    
  4. 保存字段后,在报表中直接用该字段做筛选(如business_days_sla = 5),无需每次编写脚本

方法3:修正现有SLA定义的日历配置

如果任务已关联SLA记录,调整SLA的日历配置是更彻底的解决方案:

  • 进入「合同SLA」(contract_sla)表,找到对应任务的SLA定义
  • 在日历字段中选择系统默认的「工作日日历」(或你自定义的排除周末/节假日的日历)
  • 保存后,SLA将自动按工作日计算时长,报表直接关联SLA的「已用时间」字段筛选即可

关键提醒

  • 先确认系统工作日日历配置:在sys_calendar表中检查,确保周六、周日被标记为非工作日,特殊节假日也可在此添加
  • 若任务未关闭,计算时需将closed_at替换为gs.nowDateTime(),避免空值导致计算错误

内容的提问来源于stack exchange,提问作者csriman09

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:52:33