代码之家  ›  专栏  ›  技术社区  ›  shawleigh17

尝试通过Netsuite Restlet提交入站装运时不断出错

  •  0
  • shawleigh17  · 技术社区  · 7 年前

    在尝试创建新的入站装运记录(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”,字段id为“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错误,这是因为名称错误,但我修复了该项目(我相信)。

    可能会影响它的一件事(不确定)是,采购订单列表会过滤项目列表。一旦用户在UI中选择了采购订单,它将过滤项目列表,使其仅包含该采购订单上的项目。我已再次检查我尝试提交的项目是否属于我尝试提交的采购订单,但仍收到错误。有什么想法吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Mike Robbins    7 年前

    根据 NetSuite Record Browser ,字段应为“shipmentitem”。

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

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

    推荐文章