SuiteScript 1.0搜索工单记录如何正确获取assemblyitem字段值
问题原因
你遇到的"An nlobjSearchColumn contains an invalid column, or is not in proper syntax: assemblyitem"报错,是因为workorder(工单)记录在SuiteScript 1.0搜索API中,对应装配件字段的合法列ID不是assemblyitem。你在工单XML结构中看到的assemblyitem是记录导出结构的节点名,和搜索接口认可的字段ID命名不一致,因此直接作为搜索列传参会触发语法错误。
修复方法
工单搜索中对应装配件的合法列ID为item,你只需要替换搜索列配置,同时在结果映射时取出该字段值即可,修正后的完整代码如下:
function getWOSoftLock() { var dataoutput = nlapiSearchRecord( 'workorder', null, new nlobjSearchFilter('status', null, 'is', 'WorkOrd:B'), [ new nlobjSearchColumn('tranid'), new nlobjSearchColumn('status'), // 替换错误的assemblyitem为合法列ID item new nlobjSearchColumn('item') ] ); if(!dataoutput) { nlapiLogExecution('AUDIT', 'No released work orders'); return []; } return dataoutput.map(function(res){ return { tranid: res.getValue('tranid'), status: res.getValue('status'), // 取出装配件内部ID,用于匹配Tulip数据表记录 assemblyItemId: res.getValue('item'), // 可选:如果需要同步装配件名称,可追加该行 // assemblyItemName: res.getText('item') }; }); }
注意事项
- 如果后续需要针对装配件字段加搜索筛选条件,筛选器的字段ID同样使用
item,不要使用XML中的assemblyitem节点名。 - 不确定搜索字段ID时,可在NetSuite界面新建对应记录类型的保存搜索,添加目标字段后查看URL中
col=参数的取值,即为搜索API可识别的合法字段ID,不要直接参考记录导出XML的节点命名。
内容的提问来源于stack exchange,提问作者Richardv07
相关产品推荐
相关产品推荐

