如何通过NetSuite RESTlet查看创建交易(含库存调整)所需字段及子列表?
NetSuite RESTlet 创建库存调整(Inventory Adjustment)问题解决
一、当前报错的解决办法
1. 「Please enter value(s) for: Department, Adjustment Location」报错
NetSuite RESTlet对字段ID的大小写严格敏感,报错里的「Department」「Adjustment Location」是字段的显示名称,你需要用对应的系统字段ID传值:
- 「Department」对应字段ID为
department(小写),且该字段是引用类型,必须传部门的内部ID(数字或字符串格式),不能传部门名称; - 「Adjustment Location」对应字段ID为
location(部分环境可能是adjustmentLocation,以记录浏览器显示为准),同样要传仓库的内部ID。
若已传正确字段ID和内部ID仍报错,检查对应部门/仓库是否在当前账户的可用范围内。
2. 「You have entered an Invalid Field Value 1 for the following field: postingperiod」报错
Posting Period字段的核心注意点:
- 必须传未关闭的会计期间的内部ID,且内部ID要以字符串形式传递(部分NetSuite版本不支持数字类型的内部ID);
- 绝对不能传期间名称(如“2024年1月”),系统无法识别;
- 留空时NetSuite会自动使用当前开放的会计期间,这就是空字符串能消除错误的原因,但如果需要指定期间,务必确保期间未关闭且内部ID格式正确。
二、如何准确获取创建交易的字段和子列表
getFields()和getSublists()返回结果不符,是因为它们仅能返回当前记录实例的字段集合,无法区分必填项、字段类型和有效值。推荐3个实用方法:
- 使用NetSuite内置Record Browser:在NetSuite后台搜索「Record Browser」,找到「Inventory Adjustment」记录类型。这里会清晰列出所有字段的ID、显示名、是否必填、数据类型,以及子列表的结构和子字段要求,是最权威的参考依据。
- 导出合法记录的JSON结构:手动在后台创建一个能保存成功的库存调整,然后用RESTlet加载该记录并返回JSON。对比这个结构和你的请求数据,就能明确字段名、值的格式(比如引用字段需传内部ID、日期的格式规范)。示例代码(SuiteScript 2.x):
/** * @NApiVersion 2.x * @NScriptType Restlet * @NModuleScope SameAccount */ define(['N/record'], function(record) { function getAdjTemplate() { // 替换成你手动创建的库存调整的内部ID var adjRecord = record.load({type: record.Type.INVENTORY_ADJUSTMENT, id: 123}); return adjRecord.toJSON(); } return {get: getAdjTemplate}; }); - 查看SuiteScript记录参考文档:在NetSuite后台帮助中心搜索「SuiteScript Records Browser」,找到Inventory Adjustment的条目,里面会详细说明每个字段的创建规则,包括必填项、允许的值范围。
内容的提问来源于stack exchange,提问作者Faiz Byputra
相关产品推荐
相关产品推荐

