如何通过SuiteScript在NetSuite中为供应商添加币种数据并解决必填错误
解决SuiteScript创建供应商时币种子列表报错问题
问题根源分析
你遇到的Please enter value(s) for: Currency错误,核心是代码操作币种子列表的逻辑存在3个关键错误:
- 调用
selectNewLine时错误传入line:1参数:该方法用于创建新行,无需指定行号,指定行号是选择已有行的用法。 - 循环外仅执行一次
selectNewLine:要添加多个币种行,每一行都需要先执行一次selectNewLine来初始化新行。 setCurrentSublistValue的fieldId参数错误:币种子列表的字段ID固定为currency,你用遍历的key2作为字段ID,导致系统无法识别要设置的字段。
修正后的代码示例
// 获取可用币种信息 var currencies = getCurrenciesInformation(); if (!isNullOrEmpty(currencies)) { // 遍历每个币种,逐个添加子列表行 for (var key in currencies) { var currencyInfo = currencies[key]; if (!isNullOrEmpty(currencyInfo)) { // 1. 初始化新的币种子列表行 rec.selectNewLine({ sublistId: "currency" }); // 2. 设置当前行的币种值(fieldId固定为"currency") rec.setCurrentSublistValue({ sublistId: "currency", fieldId: "currency", value: currencyInfo.id }); // 3. 提交当前行 rec.commitLine({ sublistId: "currency" }); log.debug("已添加币种行", currencyInfo); } } }
额外注意事项
- 确认
getCurrenciesInformation返回的currencyInfo.id是NetSuite中币种记录的有效内部ID,而非其他标识(如代码或名称)。 - 如果你的账户启用了多币种功能,确保供应商记录的主币种已正确设置(主币种是单独的字段,不是子列表行),子列表行是用于添加该供应商支持的其他币种。
内容的提问来源于stack exchange,提问作者Akhil KC
相关产品推荐
相关产品推荐

