0

尝试创建新的入库货件记录(Netsuite 中的新功能)时,我不断收到以下错误。

{"type":"error.SuiteScriptError","name":"USER_ERROR","message":"Please enter value(s) for: Item","stack":["anonymous(N/recordService)","<anonymous>(/SuiteScripts/KK_Sandbox_Scripts_SD/RestLets/InboundShipment.js:132)","<anonymous>(/SuiteScripts/KK_Sandbox_Scripts_SD/RestLets/InboundShipment.js:99)","doPost(/SuiteScripts/KK_Sandbox_Scripts_SD/RestLets/InboundShipment.js:34)"],"cause":{"type":"internal error","code":"USER_ERROR","details":"Please enter value(s) for: Item","userEvent":null,"stackTrace":["anonymous(N/recordService)","<anonymous>(/SuiteScripts/KK_Sandbox_Scripts_SD/RestLets/InboundShipment.js:132)","<anonymous>(/SuiteScripts/KK_Sandbox_Scripts_SD/RestLets/InboundShipment.js:99)","doPost(/SuiteScripts/KK_Sandbox_Scripts_SD/RestLets/InboundShipment.js:34)"],"notifyOff":false},"id":"","notifyOff":false} 

这是我必须设置记录的代码。我已经验证了子列表 id 是“items”并且 fieldId 是“itemid”,但是当我尝试添加该行时,我得到了上述错误。

function doPost(restletBody){
log.debug('Called from POST', restletBody);

var success = [],
errors = [];

restletBody.data.forEach(function(e) 
{
    try 
    {
        log.debug('Called from POST', e.id);

        //Create a new record
        var rec =
            r.create({
                type: "inboundshipment",
                isDynamic: true,
                defaultValues: null
            }).setValue({
                fieldId: "externalid",
                value: e.id,
                ignoreFieldChange: false
            });

        var i = 1;

    e.lineitems.items.forEach(function(item)
        {
            log.debug("Inside Line Items", item.itemid + " " + item.purchaseorder);


            rec.selectNewLine({sublistId:"items"});

            var field = rec.getSublistFields({
                sublistId: 'items'
            });

            rec.setCurrentSublistValue({
                sublistId: "items",
                fieldId: "purchaseorder",
                value: item.purchaseorder,
                ignoreFieldChange: true
            });

            rec.setCurrentSublistValue({
                sublistId: "items",
                fieldId: "itemid",
                value: item.itemid,
                ignoreFieldChange: true
            });
            log.debug("Inside Line Items", "ITEM Added " + item.itemid );

            rec.commitLine({sublistId:"items"});
            log.debug("Inside Line Items", "Line Committed" );

            ++i;
        });

        rec.save();
    }
    catch(err) 
    {
        var msg = '';
        log.debug("There was an error", err);
    }
})
return "";

}

我试过把itemid改成shipmentitem和id,还是不行。之前,我也收到了 PO 错误,这是因为名称错误,但我为该项目修复了该错误(我相信)。

可能会影响它的一件事(不确定)是 PO 列表过滤了项目列表。一旦用户在 UI 中选择了 PO,它就会将项目列表过滤为仅该 PO 上的项目。我已经仔细检查了我要提交的项目是否属于我要提交的 PO,但仍然收到错误消息。有任何想法吗?

4

1 回答 1

1

根据NetSuite 记录浏览器,该字段应为“shipmentitem”。

rec.setCurrentSublistValue({
    sublistId: "items",
    fieldId: "shipmentitem",
    value: item.itemid,
    ignoreFieldChange: true
});

编辑:更新以反映@shawleigh17 发现的字段名称应为“shipmentitem”,以便将来的用户找到正确的答案。

于 2018-02-07T14:47:39.877 回答