SuiteScript 1.0从工单记录搜索中获取装配项itemid



我目前正在尝试构建一个RESTlet脚本,该脚本将每天运行以从NetSuite同步新的工作订单数据到另一个web应用程序(Tulip)用于生产。我正在尝试获取工作订单中组装项的itemid,以便我可以在Tulip中的数据表中找到它的等价物。

目前,我可以从工作订单中输出项目的记录作为字符串,但我发现,首先,这个脚本输出每个工作订单6次,一个用于装配项目的每个组件,另外,即使我得到正确的一个,我不确定如何利用脚本中的项目记录ID输出从项目记录中找到itemid。

如果我尝试使用nlapiSearchRecord()然后通过itemid找到项目记录,以便我可以提取正确的数据,我总是收到一个空返回。

查看执行日志,我收到以下错误:

Filter expecting numeric value was removed, as non-numeric value 'nlobjSearchColumn(item, null, null, type=select)' was provided.

我已经看过谷歌和1.0 API文档,试图找到一种方法从子记录中获取值,但我卡住了。

下面是脚本的当前版本,我正在使用它提取tranid、状态和汇编项ID:

function getWOSoftLock() {

var dataoutput = nlapiSearchRecord(
'workorder',
null,
new nlobjSearchFilter('status', null, 'is', 'WorkOrd:B'),
[
new nlobjSearchColumn('tranid'),
new nlobjSearchColumn('status'),
new nlobjSearchColumn('item')
]
);
if(!dataoutput) {
nlapiLogExecution('AUDIT', 'No released work orders');
return [];
}
var mainreturn = dataoutput.map(function(res){
return {
tranid:res.getValue('tranid'),
status:res.getValue('status'),
item:res.getValue('item')
};
});
return mainreturn;
}

有没有人能告诉我在做搜索时如何从"项目"字段拉子记录数据?如果这是一个愚蠢的问题,我很抱歉,我是新手,有点撕裂我的头发试图弄清楚它。

此脚本对每个工单输出6次

为Main Line = Yes添加一个过滤器,以便只返回标题信息以避免这种情况。这将为每个记录提供一行,仅显示组装项并过滤掉组件行。

我不确定如何利用脚本中的项目记录ID输出从项目记录中查找itemid。

你可以通过简单地用res.getText('item')代替res.getValue('item')来得到这个结果。通常,在搜索中返回的任何选择(列表/记录)字段都有getValue()getText()方法可用。getValue()将返回内部id,getText()将返回同一字段的显示值。

好吧,我已经想到了一个解决方案,在我的情况下足够有效。

由于我能够利用NetSuite记录ID来查找库存项目,并且我知道如果记录已加载,我可以将该项目访问为'assemblyitem',因此我创建了一个for循环,该循环贯穿搜索中找到的每个工作订单,加载它,并提取我需要的数据。

这里是早期的实现,以防对其他人有帮助:

function getWOSoftLock() {
var dataoutput = nlapiSearchRecord(
'workorder',
null,
new nlobjSearchFilter('status', null, 'is', 'WorkOrd:B'),
[
new nlobjSearchColumn('tranid'),
new nlobjSearchColumn('status'),
new nlobjSearchColumn('item'),
]
);
if(!dataoutput) {
nlapiLogExecution('AUDIT', 'No released work orders');
return [];
}
for (var i = 0; i < dataoutput.length; i++)
{
var woid = dataoutput[i].getId();
var worecord = nlapiLoadRecord('workorder', woid);
var assemblyid = worecord.getFieldValue('assemblyitem');
var parsedoutput = {"filID":assemblyid};
}
return parsedoutput;
}

我将不得不解析我想要提取的所有数据并将其作为数组输出,但这对我来说是有效的。

相关内容

  • 没有找到相关文章

最新更新