SSS_INVALID_SRCH_OPERATOR But Search Is Not Stopped 报SSS_INVALID_SRCH_OPERATOR但是搜索没有被终止

In some scenarios, you may find a search does throw an Invalid Search Operator error but NetSuite executes the search and returns the result. You may just want to let it go as long as it works, but we can make it work flawlessly. 有时候视图会返回一个nlobjSearchFilter包含无效操作者,或语法不正确错误,但是视图还是正常返回了结果。你可能觉得能用就行,但是我们还是可以做更好一点。 It’s very likely that an anyof operator is used but... » read more

MODULE_DOES_NOT_EXIST for Custom SuiteScript Lib

The error could be caused by many problems and I think I just found a niche one. Scope The finding is just for non-AMD situations, where @NAmdConfig is not used and only the routes to the library files are referenced in the define([]) #1 Did you miss .js in the file name? Credit to this... » read more

Customer Payment记录类型UNDEPOSITED FUNDS字段的bug

当用SuiteScript操作customer payment记录的时候,选择isDynamic=true,此时如果输入了科目(account)字段的值,UNDEPOSITED FUNDS就会被取消,然后科目旁边的radio button会被选中。但是当某些逻辑需要反转选项,把account设置为空,UNDEPOSITED FUNDS这个radio button却不会被选中。 这种情况下尝试rec.setValue({fieldId: "undepfunds", value: true})是无效的,会提示You have entered an Invalid Field Value true for the following field: undepfunds 正确的方法是! 这个bug很明显来自SuiteScript不能很好兼容radio button

Saved Search多个formula结果字段产生bug及应对

之前做过几个项目都有saved search中使用formula搜索结果列的情况,个人感觉当同一个类型的formula结果列出现多次但formula的内容不一样的情况下很容易产生bug。 今日的例子中,在对于invoice的搜索中我使用了如下的searchColumn,对应结果中的formulacurrency和formulacurrency_1 搜索结果反馈是正常的。之后我添加了两个搜索列,对应结果中的formulacurrency_2和formulacurrency_3 问题来了:用于显示结果的suitelet上,4个列返回的数字是一样的,返回的都是133.14,明显不正确;但log显示的结果是正确的,如下: 这种情况下因为上面代码中formulacurrency_2和formulacurrency_3公式比较简单,可以直接使用字段进行搜索,避免formulacurrency的使用,即可避免问题 此时返回结果是正确的 问题得以解决。 如果更复杂的情况确实需要多个formula的情况呢,这种情况可以考虑把searchResult当作JSON进行处理,直接用Object[key]的方式取值。不过这种情况需要考虑未来SuiteScript更改返回结果结构的情况,方案可能随时失效。 暂时没有用过N/query处理过类似情况,如果有人做过也可以来说说。

Item Type(货品类型)的枚举值

在使用 SuiteScript 2.0 版本技术开发 RESTLet API 的过程中,我们遇到了加载项目记录的常见问题。必须先按类型限定项目,然后才能执行常规记录操作。为了帮助解决这个问题,我制作了一个快速函数来说明了解项目类型和等效负载记录操作所需的查找。 以下函数对于基本的 NetSuite 软件库可能很有价值。请注意,此功能为pseudocode。

SuiteScript时区介绍、冲突及解决办法

服务器端脚本 服务器端的脚本是指SuiteScript中Server-side Script,即运行是在服务器上完成的脚本。这类包括User Event(用户事件),Map/Reduce(映射/减少),RESTlet(外界调用NetSuite的接口),Mass Update(大量更新),Scheduled(定时)等等类型,即非客户端脚本都是服务器端脚本。 在开发时如果使用new Date()创建,JavaScript的时间类型的对象的时区是服务器时间,一般为GMT(格林威治时间)。 客户端脚本 客户端脚本(ClientScript)的时区是由本地设备通过浏览器提供的,一般情况下是本地设备设置的时区和时间。 潜在冲突例一:服务端脚本根据当前日期做逻辑推断 比如用户位于东八区,当创建一条记录之后与一个日期型字段custbody_deadline作比较判断哪个日期更靠后,结果有时候正确,有时候错误。 这种情况下首先不确定因素之一就是new Date()的返回的日期实际是带有时间的日期,而通过recObj.getValue()返回的值是不带日期的,而比较过程是将二者转换成为毫秒再比较,日期一样的情况下new Date()几乎绝对大于get到的时间(除非0点0分0秒那一瞬间,几乎不可能)。 (待续)