首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SuiteScript 1.0从工作订单记录搜索获得组装项项Get

SuiteScript 1.0从工作订单记录搜索获得组装项项Get
EN

Stack Overflow用户
提问于 2022-07-06 00:29:16
回答 2查看 120关注 0票数 0

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

目前,我可以以字符串的形式从工作顺序输出项目的记录,但是我发现,首先,这个脚本为每个工作顺序输出6次,为组装项的每个组件输出一个,另外,即使我得到了正确的一个,我也不知道如何利用脚本中的item记录ID输出来从项目记录中查找项目ID。

如果我试图使用nlapiSearchRecord(),然后通过itemid查找项记录,以便能够提取正确的数据,则始终会收到空返回。

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

代码语言:javascript
代码运行次数:0
运行
复制
Filter expecting numeric value was removed, as non-numeric value 'nlobjSearchColumn(item, null, null, type=select)' was provided.

我查阅了google和1.0 API文档,试图找到从子记录中获取值的方法,但我还是被困住了。

下面是脚本的当前版本,我将使用该脚本提取tranid、状态和组装项ID:

代码语言:javascript
代码运行次数:0
运行
复制
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;
}

有人能指点我在搜索时如何从“item”字段中提取子记录数据吗?如果这是个愚蠢的问题,我很抱歉,我对这个问题并不熟悉,我想弄清楚我的头发。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-07 16:07:36

此脚本为每个工作顺序输出6次

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

我不知道如何利用脚本中的item记录ID输出来从item记录中查找itemid。

您可以通过简单地使用res.getText('item')而不是res.getValue('item')来实现这一点。通常,在搜索中返回的任何select (list/record)字段都有可用的getValue()getText()方法。getValue()将返回内部id,getText()将返回相同字段的显示值。

票数 0
EN

Stack Overflow用户

发布于 2022-07-06 19:50:55

好吧,所以我想出了一个在我的情况下很有效的解决方案。

由于我能够使用库存项目的NetSuite记录ID来查找它,而且我知道如果已经加载了该记录,我可以将该项目作为“组装项”访问,所以我创建了一个for循环,它在搜索中找到的每个工作顺序中运行,加载它,并提取我需要的数据。

如果这对其他人有帮助,下面是早期的实现:

代码语言:javascript
代码运行次数:0
运行
复制
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;
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72876786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档