如何通过NetSuite RESTlet创建零件订单与非自定义记录?
如何通过Restlet创建NetSuite标准(非自定义)记录
首先,你已经搭好了Restlet的基础框架,接下来只需要明确标准记录的内部类型ID,调整nlapiCreateRecord()的调用参数就能搞定。下面分步骤帮你解决问题:
1. 查找标准记录的类型ID(名称)
NetSuite的所有标准记录(比如采购订单、客户、销售订单等)都有固定的内部类型ID,你可以通过这几种方式获取:
- NetSuite Records Browser:在NetSuite后台进入
Setup > Integration > Records Browser,这里能浏览所有标准/自定义记录的类型ID、可用字段、支持的操作,是最权威的参考来源。比如采购订单的类型ID是purchaseorder,客户是customer,销售订单是salesorder。 - SuiteScript 测试:打开任意标准记录,进入
Customization > Scripting > Script Debugger,执行nlapiGetRecordType()就能返回当前记录的类型ID。 - 查看记录URL:打开目标标准记录,URL里的
recordType参数值就是类型ID(比如客户记录URL里的recordType=customer)。
2. 在Restlet中创建标准记录的示例代码
创建标准记录和自定义记录的逻辑几乎一致,只是把nlapiCreateRecord()的参数换成标准记录的类型ID。以你提供的代码片段为基础,修改成创建采购订单的示例:
PartOrderREST.postRESTlet = function(dataIn) { nlapiLogExecution('audit', 'PartOrderREST.postRESTlet', 'JSON=' + JSON.stringify(dataIn)); try { // 替换成标准记录的类型ID,这里以采购订单为例 var recPO = nlapiCreateRecord('purchaseorder'); // 设置采购订单的必填字段(示例,根据你的业务需求调整) recPO.setFieldValue('entity', dataIn.vendorId); // 供应商ID recPO.setFieldValue('trandate', dataIn.orderDate); // 订单日期 // 添加采购明细行 recPO.selectNewLineItem('item'); recPO.setCurrentLineItemValue('item', 'item', dataIn.itemId); // 商品ID recPO.setCurrentLineItemValue('item', 'quantity', dataIn.quantity); // 数量 recPO.commitLineItem('item'); // 保存记录并返回ID var poId = nlapiSubmitRecord(recPO); return { success: true, poRecordId: poId }; } catch (e) { nlapiLogExecution('error', 'Failed to create PO', e.message + ' | ' + e.stack); return { success: false, errorMessage: e.message }; } };
3. 关键注意事项
- 权限配置:确保你的Restlet部署所使用的角色,拥有对应标准记录的创建权限(比如采购订单的创建权限),否则会抛出权限不足的错误。
- 字段正确性:标准记录的字段ID同样需要准确,你可以通过Records Browser或者
nlapiGetFieldIds()方法获取目标记录的所有可用字段ID。 - 必填字段校验:不同标准记录有不同的必填字段(比如采购订单必须指定供应商),一定要在代码中设置这些字段,否则无法成功提交记录。
内容的提问来源于stack exchange,提问作者mjwrazor
相关产品推荐
相关产品推荐

