Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NetSuite SuiteScript 2.0如何在N/search创建API中指定字段、子列表字段或子记录字段_Netsuite_Suitescript2.0 - Fatal编程技术网

NetSuite SuiteScript 2.0如何在N/search创建API中指定字段、子列表字段或子记录字段

NetSuite SuiteScript 2.0如何在N/search创建API中指定字段、子列表字段或子记录字段,netsuite,suitescript2.0,Netsuite,Suitescript2.0,我在采购订单记录上有一个按钮,它对当前记录执行保存的搜索查询,然后使用http模块通过POST将数据发送到url。然后,该url将作为成功确认的一部分发送回发布的数据。保存的搜索的想法是创建一个javascript对象,其中包含我希望从采购订单中获得的所有数据(主记录和带有子记录的items子列表),然后使用JSON.stringify为http POST创建JSON负载。我不能用currentRecord来做这件事,因为如果你检查它,它只包含内部id。这也可以避免我不得不花大量时间编写大量代码

我在采购订单记录上有一个按钮,它对当前记录执行保存的搜索查询,然后使用http模块通过POST将数据发送到url。然后,该url将作为成功确认的一部分发送回发布的数据。保存的搜索的想法是创建一个javascript对象,其中包含我希望从采购订单中获得的所有数据(主记录和带有子记录的items子列表),然后使用
JSON.stringify
为http POST创建JSON负载。我不能用
currentRecord
来做这件事,因为如果你检查它,它只包含内部id。这也可以避免我不得不花大量时间编写大量代码,从
currentRecord
手动构建JSON字符串

不幸的是,我真的不明白如何在动态创建的保存搜索中指定列名。有时,在我看来,列名是NetSuite记录浏览器中的列名,而有时,如果我使用NetSuite记录浏览器中的列名(例如
currencysymbol
),脚本会给出错误(找不到列)

我也不知道如何指定出现在子列表中的列或子列表中的子记录。我试图使用
item.itemtype
,但这给了我一个未找到列的错误。只是
item
成功完成,但我不确定这是否真的成功,因为在
JSON.stringify
之后很难解码返回的结果(它添加了很多反斜杠)。使用
console.log
(出于某种原因,我没有使用NetSuite
log.audit
)返回任何内容,这也相当困难,尽管它看起来像是返回一个包含5行的数组。因此,使用
可能有点成功。我这样说是因为我有3行条目,它返回5行数组

所以基本上我想知道在哪里可以找到在NetSuite中用于保存搜索的列的名称;以及如何在保存的搜索中指定子列表列名和子列表子记录列名

/**
 * @NApiVersion 2.0
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/ui/dialog', 'N/currentRecord', 'N/record', 'N/url', 'N/http', 'N/search'], function (dialog, rec, record, url, http, s) {

   function pageInit(context) {
      // All client scripts need at least one dummy function.
   }   // pageInit

   function onButtonClick() {

      var currentRecord = rec.get();

      // Create a saved search dynamically.
      var rs = s.create({
         type: s.Type.PURCHASE_ORDER,
         filters: [
            ["mainline", s.Operator.IS, "F"], "and",
            ["internalid", s.Operator.IS, currentRecord.id]
         ],
         columns: [
            "internalid",
            "currency",
            {
                name: "item",
                sort: s.Sort.ASC   // DESC
            }
         ]
      });

      var myPostDataObj = rs.run().getRange(0, 1000);
      console.log(myPostDataObj);
      var headers = {
         'Content-Type': 'application/json; charset=utf-8',
      };
      http.post.promise({
         url: 'http://httpbin.org:80/post',
         body: JSON.stringify(myPostDataObj),
         headers: headers
      })
      .then(function(response){
         console.log('SUCCESS: ' + JSON.stringify(response));
      })
      .catch(function onRejected(reason) {
         console.log('ERROR: ' + JSON.stringify(reason));
      })

   }

   return {
      pageInit: pageInit,
      onButtonClick: onButtonClick
   };

});   // Define

有两个Chrome扩展我建议你得到

  • 。此扩展将显示NetSuite记录中所有字段的ID(和值)
  • 。此扩展将保存的搜索转换/导出为SuiteScript
  • 对于您正在执行的操作,我将在UI中创建保存的搜索,然后使用保存的搜索导出扩展将其导出,并将其粘贴到代码中(其中
    s.create
    ),然后从那里开始工作


    第一个扩展很好,可以访问子列表字段ID。在记录浏览器中保存查找。

    我建议您使用两个Chrome扩展插件

  • 。此扩展将显示NetSuite记录中所有字段的ID(和值)
  • 。此扩展将保存的搜索转换/导出为SuiteScript
  • 对于您正在执行的操作,我将在UI中创建保存的搜索,然后使用保存的搜索导出扩展将其导出,并将其粘贴到代码中(其中
    s.create
    ),然后从那里开始工作

    第一个扩展很好,可以访问子列表字段ID。在记录浏览器中保存查找