NetSuite Restlet自定义角色权限与供应商账单费用行自定义段赋值问题
问题解决方案
一、Restlet自定义角色所需权限
针对供应商账单及自定义段相关操作,需给角色添加以下权限:
事务类(Transactions)
- 供应商账单(Vendor Bill):开启创建、编辑权限
- 费用(Expense):确保子列表操作权限继承自供应商账单的事务权限
列表类(Lists)
- 供应商(Vendors):至少开启查看权限(需关联供应商实体)
设置类(Setup)
- 自定义段(Custom Segments):给
cseg_program自定义段开启查看、编辑权限 - 自定义表单(Custom Forms):对ID为50的自定义表单开启查看权限
自定义记录类(Custom Records)
若自定义段关联了自定义记录,需给对应自定义记录添加查看权限
二、自定义段cseg_program无法填充到费用行的排查与修复
核心排查点
- 字段ID准确性:确认输入参数的Key是
cseg_program,而非显示名称或其他别名 - 动态模式限制:动态模式下部分字段需先触发加载,可尝试改用标准模式测试
- 权限验证:确保角色拥有该自定义段在费用子列表的编辑权限(参考第一部分权限设置)
- 输入值有效性:确认传入的内部ID是
cseg_program对应的有效选项ID,而非外部ID或名称
代码修复建议
修正原代码空值判断逻辑(原判断line而非line[key]),并增加自定义段的显式验证日志:
function buildBasicVendorRecord(reqBody) { // 创建供应商账单 try { var VendorBill = record.create({ type: record.Type.VENDOR_BILL, isDynamic: true, defaultValues: { entity: 123, customForm: 50, } }); log.debug("已创建供应商账单:", VendorBill); reqBody.lines.forEach(function (line, i) { VendorBill.selectNewLine({ sublistId: "expense", }); for (var key in line) { // 修正空值判断:检查当前字段值而非整个line对象 if (!Utils.isNullOrEmpty(line[key])) { log.debug("字段Key:", key); log.debug("字段Value:", line[key]); // 针对自定义段增加验证日志 if (key === "cseg_program") { log.debug("正在设置自定义段Program,值为:", line[key]); } VendorBill.setCurrentSublistValue({ sublistId: "expense", fieldId: key, value: line[key], }); } } VendorBill.commitLine({ sublistId: "expense", }); // 提交后验证字段值 var checkValue = VendorBill.getSublistValue({ sublistId: "expense", fieldId: "cseg_program", line: i }); log.debug("第" + i + "行Program字段值:", checkValue); }); log.debug("提交行后供应商账单状态:", VendorBill); return VendorBill; } catch (e) { log.debug("错误信息:", e); throw e; } }
备选方案
若动态模式仍存在问题,尝试改用标准模式(isDynamic: false),代码调整如下:
var VendorBill = record.create({ type: record.Type.VENDOR_BILL, isDynamic: false, defaultValues: { entity: 123, customForm: 50, } }); reqBody.lines.forEach(function (line, i) { VendorBill.insertLine({sublistId: "expense", line: i}); for (var key in line) { if (!Utils.isNullOrEmpty(line[key])) { VendorBill.setSublistValue({ sublistId: "expense", fieldId: key, line: i, value: line[key], }); } } });
内容的提问来源于stack exchange,提问作者Akhil KC
相关产品推荐
相关产品推荐

