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秒那一瞬间,几乎不可能)。 (待续)