【问题标题】:Select parts of a nlobjSearchResult选择 nlobjSearchResult 的一部分
【发布时间】:2016-04-20 17:50:36
【问题描述】:

我有一个大型 nlobjSearchResultSet 对象,其中包含超过 18,000 个“结果”。

每个结果都是客户的定价记录。一个客户可能有多个记录。

由于 18000 多条记录在治理点上进行大规模更改的成本很高,因此我正在迁移到父(客户)记录和子记录(项目),以便我可以将项目定价作为子列表进行更改。

作为此迁移的一部分,是否有一个简单的命令来仅选择大对象中的 nlapiSearchResult 对象,这些对象符合某些条件(即客户 ID)。

这将允许我仅通过一次搜索迁移数据,然后仅随后创建/保存新记录格式。

以一种相关的方式,是否有一个简单的函数调用来返回给定网络套件记录中包含的记录数?对于 % 进度上下文。

提前致谢。

【问题讨论】:

    标签: netsuite suitescript


    【解决方案1】:

    您实际上可以通过添加聚合列运行搜索来获取行数。对没有任何聚合列的已保存搜索执行此操作的通用方法如下所示:

    var res = nlapiSearchRecord('salesorder', 'customsearch29', null, 
        [new nlobjSearchColumn('formulanumeric', null, 'sum').setFormula('1')]);
    var rowCount = res[0].getValue('formulanumeric', null, 'sum');
    console.log(rowCount);
    

    【讨论】:

      【解决方案2】:

      要获取记录总数,唯一的方法是保存搜索,进行此类搜索的理想方法是使用nlobjSearch

      以下是获取无限搜索结果和记录数的示例代码

      var search = nlapiLoadSearch(null, SAVED_SEARCH_ID).runSearch();
      var res = [],
          currentRes;
      
      var i = 0;
      
      while(i % 1000 === 0){
        currentRes = (search.getResults(i, i+1000) || []);
        res = res.concat(currentRes );
        i = i + currentRes.length;
      }
      

      res.lengthi 将提供记录总数,res 将提供所有结果。

      【讨论】:

      • 理想情况下,我想在没有循环的情况下检索记录数。但不用担心,这是必须的,只是认为可能有更简单的方法
      • AFAIK,这不可能,这是我能想到的
      • 否则,我的问题的第一部分有简单的方法吗?
      • 一次,结果集被获取,你不能添加条件,你必须自己编辑你保存的搜索,如果保存的搜索不支持你正在寻找的条件,你不能这样做
      • 好的。可能只需要通过循环、数组和一些推送来过滤。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 2023-03-19
      • 2020-09-30
      • 2017-03-17
      • 1970-01-01
      相关资源
      最近更新 更多