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

如何使用map reduce脚本删除NetSuite中的所有交易记录?

NetSuite 动态配置交易类型批量删除方案

核心目标

通过Map Reduce脚本实现可动态配置交易类型的全量交易记录批量删除操作,无需修改脚本代码即可适配不同交易类型的删除需求。

实现步骤

  • 首先在脚本部署页配置自定义参数,将待删除的交易类型ID(如salesorder、invoice、cashsale等)作为参数值传入,支持多值配置实现多交易类型同时删除
  • 脚本getInputData阶段读取传入的动态交易类型参数,调用N/search模块创建对应交易类型的全量搜索,拉取所有符合条件的交易记录内部ID

若无需全量删除,可在该阶段新增搜索过滤条件,限定待删除记录的时间范围、状态等维度

  • map阶段逐笔处理拉取到的交易记录,调用N/record.delete接口执行删除操作,同时捕获错误日志便于后续排查
  • summarize阶段统计本次执行的成功、失败删除量,输出全量执行结果

核心代码示例

/**
 * @NApiVersion 2.x
 * @NScriptType MapReduceScript
 * @NModuleScope SameAccount
 */
define(['N/search', 'N/record', 'N/runtime'], function(search, record, runtime) {
    // 拉取待删除全量交易数据
    function getInputData() {
        const targetTranType = runtime.getCurrentScript().getParameter({
            name: 'custscript_target_tran_type' // 对应自定义脚本参数ID
        });
        return search.create({
            type: targetTranType,
            filters: [], // 可按需新增过滤条件
            columns: ['internalid']
        });
    }
    // 逐笔执行删除
    function map(context) {
        const result = JSON.parse(context.value);
        try {
            record.delete({
                type: result.recordType,
                id: result.id
            });
            context.write({key: 'success', value: 1});
        } catch (err) {
            log.error({
                title: `删除失败:记录ID ${result.id}`,
                details: err.message
            });
            context.write({key: 'fail', value: 1});
        }
    }
    // 统计执行结果
    function summarize(context) {
        let success = 0, fail = 0;
        context.output.iterator().each(function(key, count) {
            key === 'success' ? success += +count : fail += +count;
            return true;
        });
        log.audit({
            title: '删除任务执行完成',
            details: `成功删除:${success} 条,失败:${fail} 条`
        });
    }
    return {
        getInputData: getInputData,
        map: map,
        summarize: summarize
    };
});

注意事项

  • 执行删除操作前必须先在沙箱环境完成验证,确认删除范围、关联业务逻辑符合预期后再到生产环境执行
  • 若系统存在对应交易类型的关联用户事件脚本、工作流,可在执行删除任务前临时关闭,避免额外逻辑拖慢删除效率
  • 单次删除量过大时,可调整Map Reduce脚本的并发数配置提升执行效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 06:57:01