【问题标题】:How to use import headers?如何使用导入标头?
【发布时间】:2020-04-09 04:07:36
【问题描述】:

尝试运行 Suitelet 脚本来调用搜索并将其转换为发票。但在进入下一步之前,我遇到了以下消息:

无法评估脚本:执行定义回调时,所有 SuiteScript API 模块都不可用。

我的脚本:

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 */
require(['N/search','N/log'], function (search,log) {
  function onRequest(context) {
    // Search
    // ### ORDERS TO BILL 
var salesorderSearchObj = search.create({
    type: "salesorder",
    filters:
    [
       ["type","anyof","SalesOrd"], 
       "AND", 
       ["status","anyof","SalesOrd:E","SalesOrd:F"], 
       "AND", 
       ["mainline","is","T"]
    ],
    columns:
    [
       search.createColumn({name: "amount", label: "Amount"}),
       search.createColumn({name: "entity", label: "Name"}),
       search.createColumn({name: "account", label: "Account"}),
       search.createColumn({
          name: "datecreated",
          sort: search.Sort.DESC,
          label: "Date Created"
       }),
       search.createColumn({name: "billeddate", label: "Date Billed"}),
       search.createColumn({name: "statusref", label: "Status"})
    ]
 });

 var searchResultCount = salesorderSearchObj.runPaged().count;
 log.debug( {"title":"salesorderSearchObj result count", "details":searchResultCount});
 salesorderSearchObj.run().each(function(result){
    // .run().each has a limit of 4,000 results
    return true;
 });

  }

  return {
    onRequest: onRequest
  };
});

就是对选定的销售订单进行映射和减少。

  1. 加载搜索。
  2. 通过将所选订单转换为一个(按客户)进行映射。
  3. 减少到一张发票​​/现金销售。

【问题讨论】:

  • 这看起来像是您将一些随机样本粘贴在一起。 Netsuite 帮助包含大多数脚本类型的基本示例。如果您尝试从该示例开始创建套件。如果您尝试从那里创建地图缩减。您的原始脚本可以在控制台中运行,但与任何脚本类型的签名都不匹配。另请注意,您的销售订单状态过滤器应具有数组中的值
  • 要记住的一件事是在您的脚本中始终使用define 而不是require。仅在使用调试控制台或浏览器控制台时使用require

标签: javascript netsuite suitescript2.0


【解决方案1】:

正如 bknights 所建议的,NetSuite 提供的脚本示例只是脚本的一部分,它们不是完整的脚本。所以在使用它们之前,你需要确保你的脚本是有效且完整的。

至于错误消息Fail to evaluate script,您的所有脚本(使用NetSuite 模块)都需要在回调内的函数中。即 Suitelet 有一个入口点onRequest,因此将所有脚本(在回调中)移到它下面应该可以工作。

示例:

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 */
define(['N/search'], function (search) {
  function onRequest(context) {
    // Your search and order transform code should be here
    // ### ORDERS TO BILL 

  }

  return {
    onRequest: onRequest
  };
});

更多阅读请查看this out。

【讨论】:

  • 试图使用这个网站上的样本,因为 Netsuite 也只显示了可以使用的东西的 sn-ps。 netsuite-tutorial.blogspot.com/2017/05/suitescript2.html 尝试使用您展示的示例模式,但仍然返回错误。不知道该怎么做。谢谢。
  • 还尝试使用4517166-sb1.app.netsuite.com/app/help/… 上的示例在suitelet 上进行分页搜索,结果也返回了错误。
  • 上面的脚本对我有用,现在的错误信息是什么?我的意思是它改变了吗?你能发布你更新的脚本吗?
  • "SuiteScript 2.0 入口点脚本必须实现一种脚本类型函数。"是否收到错误。
  • 您需要在服务器端脚本中使用define。我没有看到,我已经更新了我的答案。你能再试一次吗?
猜你喜欢
  • 2017-08-27
  • 2021-06-11
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
相关资源
最近更新 更多