通过script实现所有交易保存时部门字段必填的方案咨询
可行的简化实现方案
方案1:统一用户事件脚本(最推荐)
- 仅需编写1个
beforeSubmit触发的用户事件脚本,核心逻辑为校验记录department字段值是否为空,为空则抛出错误阻止保存即可 - 脚本部署时直接在适用记录选项中批量勾选全部34种带部门字段的交易类型,一次部署即可全量生效,后续规则调整只需修改这一个脚本,维护成本极低
- 核心代码逻辑示例:
/** * @NApiVersion 2.x * @NScriptType UserEventScript * @NModuleScope SameAccount */ define(['N/record'], function(record) { function beforeSubmit(context) { // 跳过非手动编辑/创建的系统自动触发场景,可根据需求调整 if (context.type !== context.UserEventType.CREATE && context.type !== context.UserEventType.EDIT) return const currentRec = context.newRecord const deptVal = currentRec.getValue({fieldId: 'department'}) if (!deptVal) throw new Error('请填写部门字段后再保存') } return {beforeSubmit: beforeSubmit} });
方案2:单工作流批量适配交易类型
- 无需为每个交易类型创建独立工作流,新建工作流时在「适用记录」设置项批量勾选全部34种交易类型
- 工作流内仅需添加1条保存前校验规则:
department字段为空时阻止保存并弹出提示即可,适合无脚本开发权限的场景
注意事项
- 两种方案都可灵活配置例外逻辑,比如给特定角色、系统自动生成的MRP规划单等场景跳过校验,避免影响现有自动化流程
- 上线前建议先在沙箱环境选择2-3种交易类型测试验证规则生效逻辑,确认无误后再全量部署
内容的提问来源于stack exchange,提问作者Rookie
相关产品推荐
相关产品推荐

