javascript - SuiteScript 中的 ID 字段抛出 INVALID_FLD_VALUE

标签 javascript netsuite suitescript2.0

在 Suitescript 中创建新销售订单并为项目设置子列表值时,会引发 INVALID_FLD_VALUE 错误。

我传递的值是项目的内部 id,我尝试过使用多个项目的内部 id,无论带引号还是不带引号,都会收到相同的错误。代码如下

/**
 * @NApiVersion 2.0
 * @NScriptType Restlet
 * @NModuleScope SameAccount
 */
define(['N/record'], function (r) {
    function get(context) {
        try {
            // Create new record type of SALES_ORDER
            var salesOrder = r.create({
                type: r.Type.SALES_ORDER,
                isDynamic: false,
                defaultValues: null
            })

            // CREATE AN ITEM AND SET VALUES
            salesOrder.insertLine({
                sublistId: 'item',
                line: 0
            });


            // Item Intetrnal ID
            salesOrder.setSublistValue({
                sublistId: 'item',
                fieldId: 'item',
                line: 0,
                value: '15'
            });

            // Quantity
            salesOrder.setSublistValue({
                sublistId: 'item',
                fieldId: 'quantity',
                line: 0,
                value: 4
            });


            salesOrder.save();

            return JSON.stringify('Sales Order Created');
        }
        catch (err) {
            log.audit({
                title:'Error',
                details: err
            })

            return JSON.stringify(err);
        }
    }
    return {
        get: get
    }
})

我看过几乎一行一行用此代码编写的教程,这让我想知道这是否与 NetSuite 中需要打开/关闭的功能或设置有关。非常感谢任何反馈。

最佳答案

导致错误的原因是我在继续添加子列表项之前没有设置“实体”字段。因此,错误实际上并不是项目 id 值的结果。

有效的代码:

var salesOrder = r.create({
                type: r.Type.SALES_ORDER,
                isDynamic: true,
                defaultValues: Date.now().toString
            }).setValue({
                fieldId: "entity",
                value: customer
            })                                                              

            salesOrder.selectNewLine({ sublistId: "item" });

            salesOrder.setCurrentSublistValue({
                sublistId: "item",
                fieldId: "item",
                value: itemId
            });
            salesOrder.setCurrentSublistValue({
                sublistId: "item",
                fieldId: "quantity",
                value: 5
            });
            salesOrder.commitLine({ sublistId: "item" });

            salesOrder.save({
                enableSourcing: true,
                ignoreMandatoryFields: true
            })

关于javascript - SuiteScript 中的 ID 字段抛出 INVALID_FLD_VALUE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56212976/

相关文章:

javascript - 在表的行之间切换

javascript - 使用 jQuery 的 NetSuite ReSTLet

api - Netsuite 问题 : Is there decent reference anywhere?

javascript - Suitescript 努力应对使用 CORS 的第三方出站 API 调用

javascript - 尝试在 NetSuite 中保存记录时何时使用 "enableSourcing"选项?

javascript - 网站导航和 slider

javascript - 防止在 searchParams 处理中出现不必要的 '='

javascript - 检查所有输入是否为空(没有值)

html - Netsuite 在线表格 - 提交按钮不起作用

javascript - 有没有办法在从同一子列表中选择下拉值时禁用子列表字段。 SuiteScript 2.0 getSublistField 方法不起作用