首页 > 解决方案 > Netsuite:如何通过链接的客户端脚本修改 SuiteLet 子列表?

问题描述

我有一个带有空子列表的 SuiteLet。SuiteLet 上的按钮指向试图填充子列表的客户端脚本。我的客户端脚本遇到了一个奇怪的错误——“未定义不是对象(正在评估‘olddata[i]’)。”这是一个 JavaScript 错误,我相信在下面的代码中指的是“rec”。错误在“rec.commitLine”上启动。

  function populateSublist(fieldValues, rec, availableItems) {
        log.debug("Rec", rec);
        if (availableItems[0]) {
            for (i = 0; i < availableItems.length; i++) {
                try {
                    rec.selectNewLine({
                        sublistId: 'custpage_items_sublist'
                    });

                    rec.setCurrentSublistValue({
                        sublistId: 'custpage_items_sublist',
                        fieldId: 'custpage_parent_frame',
                        value: availableItems[0].item_parent_frame
                    });

                    // More values being set...

                    rec.commitLine({ // <=== *** RIGHT HERE ***
                        sublistId: 'custpage_items_sublist'
                    });
                } catch (e) {
                    log.error("Unable to commit line - " + e.name, e.message);
                }
            }
        } else {
            log.debug("No available items for given parameters.")
        }

以下是我知道的一些事情:

  1. “rec”之前正在工作并获取我需要的字段名称。
  2. "rec" 在我的执行日志中显示 "{"id":"","type":null,"isDynamic":true}"。
  3. 我的客户端脚本的开头var rec = cr.get();用于接收记录。

是否可以从客户端脚本修改 SuiteLet 子列表?我以前从未特别这样做过,所以我在这里不知所措。非常感谢任何帮助或想法!谢谢!

标签: javascriptnetsuitesuitescript2.0

解决方案


我们最近能够解决这个问题。此问题是由于将 SuiteLet 子列表定义为 SublistType.LIST。NetSuite 不支持在服务器端脚本之外编辑定义为“LIST”的子列表。因此,我们在尝试通过客户端脚本编辑它时遇到了这个奇怪的错误。

两种可能的解决方案是:

将 SuiteList SublistType 更改为“INLINEEDITOR”。将子列表编辑移至服务器端 (SuiteLet)。

谢谢!也许这至少会在将来帮助某人。


推荐阅读