如何从保存的交易 Search/Suitescript 搜索中获取销售订单 'shipaddresslist' 值?

How to get Sales Order 'shipaddresslist' value from Transaction Saved Search/Suitescript Search?

在 Netsuite 中,销售订单记录类型包含一个名为“shipaddresslist”的字段,其中包含与所选客户地址关联的客户地址内部 ID。

不幸的是,没有销售订单的搜索列可以获取“shipaddresslist”的值,所以我不得不找到一个解决方法。

使用 SuiteScript,我已经能够通过循环搜索结果、将销售订单 ID 传递给 record.Load() 函数并调用 record.getValue()在加载的记录上,如下图

搜索:

 var salesorderSearchObj = search.create({
   type: "salesorder",
   filters:
   [
      ["type","anyof","SalesOrd"],
      "AND",
      ["item.isfulfillable","is","T"],
      "AND",
      ["status","anyof","SalesOrd:B","SalesOrd:E","SalesOrd:D"],
      "AND",
      ["quantitycommitted","greaterthanorequalto","1"],
      "AND",
      ["location","anyof","1","3"],
      "AND",
      ["mainline","is","F"],
      "AND",
      ["item.type","anyof","InvtPart"]
   ],
   columns:
   [
      search.createColumn({
         name: "transactionnumber",
         sort: search.Sort.ASC,
         label: "Transaction Number"
      }),
      search.createColumn({name: "entity", label: "Name"}),
      search.createColumn({
         name: "custcol8",
         sort: search.Sort.ASC,
         label: "JANコード"
      }),
      search.createColumn({name: "quantityuom", label: "Quantity in Transaction Units"}),
      search.createColumn({name: "statusref", label: "Status"}),
      search.createColumn({
         name: "quantityonhand",
         join: "item",
         label: "On Hand"
      }),
      search.createColumn({
         name: "isfulfillable",
         join: "item",
         label: "Can be Fulfilled"
      }),
      search.createColumn({name: "department", label: "Department"}),
      search.createColumn({name: "otherrefnum", label: "PO/Cheque Number"}),
   ]
});

循环和记录加载:

var matches = [];

salesorderSearchObj.run().each(function(result){
  var objRecord = record.load({
      type: record.Type.SALES_ORDER,
      id: result.id,
      isDynamic: true,
  });
  var push = resultToObject(result);
  push.addressid = objRecord.getValue({fieldId:'shipaddresslist'});
  log.debug("Result:",push);
  matches.push(push);
  return true;
});

这很好用...除了我 return 通过搜索搜索大约 1000 个销售订单这一事实,这意味着 record.Load() 在我之前通过我的治理单位吃掉了可以完成搜索并构建整个结果列表。

简而言之,有没有办法直接从搜索对象中 return 来自销售订单记录的“shipaddresslist”的值? 或者也许是一种无需加载整个记录对象即可动态获取该字段的方法?

非常感谢任何帮助!

如果您要查找客户地址的内部 ID,您可以将其添加到搜索列中

search.createColumn({
         name: "internalid",
         join: "shippingAddress",
         label: "Internal ID"
      })

已解决(有点)

大家好,我四处询问并得到了一个半解决方案,以防万一其他人遇到这个问题,这里有一个解决方案。

出于我的目的,我只使用 SuiteScript,因为我认为您无法在 Netsuite 本身中获取该字段,但事实证明我错了。以下是在 Netsuite 中获取该字段的方法:

解决方案

1:导航至列表> 搜索> 保存的搜索> 新建

2:Select 交易

3:在“标准”选项卡下的“标准”子选项卡下,添加以下过滤器:

---Select类型:Select你要拉起的交易类型

---送货地址:不为空

---主线为真

---公式(文字): 解码({shipaddress},{customer.address},'1','0') 以 1

开头

4:在“结果”选项卡下添加以下列:

---送货地址

---Customer/project 字段是地址内部 id

5:为搜索命名并点击保存 & 运行。

唯一需要的标准是公式,但此解决方案是从 SuiteAnswers 复制和粘贴的。我建议只使用公式并添加您认为合适的标准。

感谢 u/seekcant 在 r/Netsuite subreddit 上查找和发布此解决方案。