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

如何对ServiceNow目录项中的MRVS数据进行求和/总计

ServiceNow目录项MRVS数据求和实现方案

核心思路

通过客户端脚本实时读取MRVS(多行变量集)的每行数据,累加指定数值字段的内容,最终将总和显示在目录项的指定字段中,实现实时总计效果。

具体操作步骤

1. 配置基础字段

  • 在目标目录项里新增一个数字/单行文本字段(比如命名为total_sum),用来展示最终的求和结果
  • 确认你的MRVS里已经有需要求和的数值类型字段(比如每行的金额字段line_price)

2. 编写OnChange客户端脚本

创建一个触发源为MRVS变量集的OnChange脚本,代码如下:

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading) return;

    // 替换为你实际的MRVS变量名和求和字段名
    const mrvsName = "你的MRVS变量名称";
    const sumField = "line_price";
    const totalField = "total_sum";

    let total = 0;
    const mrvsData = g_form.getValue(mrvsName);
    if (mrvsData) {
        const rows = JSON.parse(mrvsData);
        rows.forEach(row => {
            const val = parseFloat(row[sumField]);
            if (!isNaN(val)) total += val;
        });
    }
    // 保留两位小数,按需调整格式
    g_form.setValue(totalField, total.toFixed(2));
}

3. 补充OnLoad脚本(可选)

如果需要页面加载时就自动计算现有MRVS数据的总和,添加一个OnLoad类型的客户端脚本:

function onLoad() {
    const mrvsName = "你的MRVS变量名称";
    const sumField = "line_price";
    const totalField = "total_sum";

    let total = 0;
    const mrvsData = g_form.getValue(mrvsName);
    if (mrvsData) {
        const rows = JSON.parse(mrvsData);
        rows.forEach(row => {
            const val = parseFloat(row[sumField]);
            if (!isNaN(val)) total += val;
        });
    }
    g_form.setValue(totalField, total.toFixed(2));
}

效果验证

配置完成后,用户在MRVS中新增行、删除行或者修改每行的数值时,总计字段会自动同步更新为所有行的数值总和,符合你期望的实时计算需求。

内容的提问来源于stack exchange,提问作者Mr world wide

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:56:02