【问题标题】:Set Sublist Fields on Existing Records from Client Script attached to Suitelet从附加到 Suitelet 的客户端脚本中设置现有记录的子列表字段
【发布时间】:2019-10-29 07:45:48
【问题描述】:

我有一个附加到 Suitelet 子列表表单的客户端脚本。子列表有复选框。我需要获取连接到每个检查的子列表行的销售订单记录(从保存的搜索中获取)。然后我需要加载该销售订单记录并关闭记录中的所有行项目。我可以在销售订单记录上设置正文字段,但不能设置子列表字段。我可以从项目子列表中获取值,但我无法设置它们。

是否可以通过附加到套件的客户端脚本在现有销售订单记录上设置子列表字段?如果有怎么办?

我尝试以标准方式、动态方式和使用 Promise 来做到这一点。我知道有两种方法可以设置子列表,具体取决于您在加载记录时是否使用动态模式。

        var salesOrderRec = record.load.promise({
            type: record.Type.SALES_ORDER,
            id: salesOrderId
        });
        salesOrderRec.then(function (objRecord) {
            var itemLines = objRecord.getLineCount({
                sublistId: 'item'
            });
            console.log("itemLines: " + itemLines);
            for (var i = 0; i < itemLines; i++) {
                var isClosed = objRecord.getSublistValue({
                    sublistId: 'item',
                    fieldId: 'isclosed',
                    line: i,
                });
                console.log("isClosed: " + i + ", " + isClosed);
                objRecord.setSublistValue({
                    sublistId: 'item',
                    fieldId: 'isclosed',
                    line: i,
                    value: true
                });
            }
            var recordId = objRecord.save();
        });

【问题讨论】:

  • 您是遇到错误,还是只是没有关闭线路?
  • 没有错误,只是没有设置任何东西。我发现如果我以动态模式加载记录然后使用选择行 setCurrentSublistValue() 和 commitLine() 它可以工作。所以我了解到有不同的方法来获取和设置子列表值,具体取决于您使用的是标准模式还是动态模式。我还在想,我是否需要使用记录加载 api 的承诺版本,因为这是一个客户端脚本?不管怎样,我得到了这个工作。
  • 不,你不必使用 promise 版本。

标签: promise client netsuite suitescript sublist


【解决方案1】:
       var salesOrderRec = record.load.promise({
            type: record.Type.SALES_ORDER,
            id: salesOrderId,
            isDynamic: true
        });
        salesOrderRec.then(function (objRecord) {
            var itemLines = objRecord.getLineCount({
                sublistId: 'item'
            });
            console.log("itemLines: " + itemLines);
            for (var i = 0; i < itemLines; i++) {
                objRecord.selectLine({
                    sublistId: "item",
                    line: i
                });
                //console.log("isClosed: " + i + ", " + isClosed);
                objRecord.setCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'isclosed',
                    line: i,
                    value: true
                });
                objRecord.commitLine({ sublistId: "item" });
            }
            var recordId = objRecord.save();
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    相关资源
    最近更新 更多