Scheduled和Map/Reduce类型脚本重复创建记录或者逻辑重复运行

症状 事务处理类型或者自定义类型的单据在Scheduled或者Map/Reduce类型的脚本背景下被重复创建,重复创建的时间可能非常接近,在同1分钟或几分钟以内。 分析过程 查看是否Scheduled和MapReduce类型脚本存在ondemand类型的唤起,这种情况可能是有该脚本自身以ondemand类型唤起,也可能是来自suitelet或者userevent类型的脚本唤起。 ondemand的唤起在部署资源充足的情况下可能在很短时间通过task.submit()被唤起多次,每次唤起通过search获得相同的数据,用相同的逻辑处理,因此重复创建记录可能就发生在同一分钟。 解决办法 最有效的办法是限制ondemand运行,只留一个not scheduled的脚本部署,确保只有一个实例在运行。如果同时也有定时运行的实例,务必移动到上班时间之外,避免ondemand触发和定时触发同时取数。

Suitescript创建customer无法正确指定subsidiary

问题 Suitescript创建customer无法正确指定subsidiary,无论指定什么值都会默认到系统最高级的subsidiary。 解决 NetSuite用suitescript创建脚本实际上赋值subsidiary需要分两步,第一步创建customer,第二步创建customer和subsidiary的关系。 因此脚本设计时第一步保存customer,第二步载入customer再赋值subsidiary再保存。

在SuiteScript2.0开发中使用TBA OAuth1.0

问题 使用 SuiteScript 2.0 连接到一个 RESTlet 脚本 解决方案 任何与 NetSuite 的集成或非用户界面访问,如果使用管理员角色或其他高特权角色,需要使用两因素身份验证(2FA),或者需要调整为使用基于令牌的身份验证(TBA)。 设置要求 使用 RESTlets 的 TBA 所需数据 代码 建议使用 Oauth 和 CryptoJS 这两个库   1. 下载oauth.js and cryptojs.js  (或者从 github.com/mark-keaton/oauth-netsuite )   2. 复制oauth.js 和cryptojs.js 到文件柜   3. 创建secret.js 作为存放密钥的地方 示例secret.js 脚本示例 在测试过程中,如果出现问题,系统可能会显示“Invalid Login attempt error”(无效的登录尝试错误)的错误或响应。在这种情况下,您可以使用“登录审计追踪”报告来收集更多详细信息。报告位于“Setup > Users / Roles > View Login Audit Trail”下。 在报告的“结果”选项卡中,您可以添加以下字段以获取更多信息:Detail(详细信息),’Token-based Application Name’(用于确认应用程序所发出的请求)和’Token-based Access Token Name’(基于令牌的访问令牌名称)。

Cumulative sum

cumulativeSum is the function value => sum += value, with sum initialized to zero. Every time it’s called, sum is updated and will equal the previous value (output[n-1]) when called the next time (with input[n]). Note that sum will need to be set to zero explicitly when you want to reuse the summation. The most convenient way to handle this may be to... » read more

renderer.addCustomDataSource()当输入类型为Object时,输入的对象键值为纯数字可能报错

这是一个非常有趣的观察,当使用如下代码试图生成一个PDF时,SuiteScript会报错: 这里如果format是OBJECT,会报错提示 如果把format设置为JSON,则报错提示为 我尝试过使用JSON.parse()或者是用regex把输入的jsonArr进行整理,但是没有任何效果。最后我发现问题出现在json存在一个键是纯数字的,整理之后问题消失 作为JSON,它的键可以是数字或者字符串,但是可能是NetSuite内部的原因,键为纯数字的时候会报错,建议开发的时候注意。