NetSuite — ОШИБКА ПОЛЬЗОВАТЕЛЯ: запись не может быть сохранена

#javascript #netsuite #suitescript2.0

#javascript #netsuite #suitescript2.0

Вопрос:

Дорогие,

Я создал пользовательскую запись для счетов с именем InvoiceHead и добавил сценарий пользовательского события с точкой входа afterSubmit, который создает стандартную запись счета. Однако, когда я сохраняю запись в коде, она выдает следующую ошибку.

 {
    "type": "error.SuiteScriptError",
    "name": "USER_ERROR",
    "message": "Record cannot be saved. Transaction nexus Germany (4) is not valid for transaction subsidiary ().",
    "stack": [
        "<anonymous>(N/record/recordService.js)",
        "afterSubmit(SS2_UES_FormApi_00001.js$16539$debugger.user:62)",
        "<anonymous>(SS2_UES_FormApi_00001.js$16539$debugger.wrap:26)",
        "<anonymous>(SS2_UES_FormApi_00001.js$16539$debugger.wrap:17)",
        "<anonymous>(SS2_UES_FormApi_00001.js$16539$debugger.wrap:34)",
        "<anonymous>(SS2_UES_FormApi_00001.js$16539$debugger.wrap:1)"
    ],
    "cause": {
        "type": "internal error",
        "code": "USER_ERROR",
        "details": "Record cannot be saved. Transaction nexus Germany (4) is not valid for transaction subsidiary ().",
        "userEvent": "aftersubmit",
        "stackTrace": [
            "<anonymous>(N/record/recordService.js)",
            "afterSubmit(SS2_UES_FormApi_00001.js$16539$debugger.user:62)",
            "<anonymous>(SS2_UES_FormApi_00001.js$16539$debugger.wrap:26)",
            "<anonymous>(SS2_UES_FormApi_00001.js$16539$debugger.wrap:17)",
            "<anonymous>(SS2_UES_FormApi_00001.js$16539$debugger.wrap:34)",
            "<anonymous>(SS2_UES_FormApi_00001.js$16539$debugger.wrap:1)"
        ],
        "notifyOff": false
    },
    "id": "",
    "notifyOff": false,
    "userFacing": false
}
 

Это мой код:

             var objRec = record.create({ type: record.Type.INVOICE, isDynamic: true });
            
            objRec.setValue({ fieldId: 'trandate', value: invcHeadValues[0], ignoreFieldChange: true });
            objRec.setValue({ fieldId: 'approvalstatus', value: invcHeadValues[1], ignoreFieldChange: true });
            objRec.setValue({ fieldId: 'total', value: invcHeadValues[2], ignoreFieldChange: true });
            objRec.setValue({ fieldId: 'tranid', value: invcHeadValues[3], ignoreFieldChange: true });
            objRec.setValue({ fieldId: 'entity', value: invcHeadValues[4], ignoreFieldChange: true });

            var count = nr.getLineCount({ sublistId: custSLID })

            for(var i = 0; i < count; i  ) {
                custInvcLineRecFlds.forEach(function (fld){ invcLineValues.push(nr.getSublistValue({ sublistId: custSLID, fieldId: fld, line: i })); });

                objRec.selectNewLine({ sublistId: sublistID });
                objRec.setCurrentSublistValue({ sublistId: sublistID, fieldId: 'id', value: String(invcLineValues[0]), forceSyncSourcing: true });
                objRec.setCurrentSublistValue({ sublistId: sublistID, fieldId: 'item', value: String(invcLineValues[1]), forceSyncSourcing: true });
                objRec.setCurrentSublistValue({ sublistId: sublistID, fieldId: 'item_display', value: String(invcLineValues[2]), forceSyncSourcing: true });
                objRec.setCurrentSublistValue({ sublistId: sublistID, fieldId: 'quantity', value: Number(invcLineValues[3]), forceSyncSourcing: true });
                objRec.setCurrentSublistValue({ sublistId: sublistID, fieldId: 'rate', value: Number(invcLineValues[4]), forceSyncSourcing: true });
                objRec.setCurrentSublistValue({ sublistId: sublistID, fieldId: 'amount', value: Number(invcLineValues[5]), forceSyncSourcing: true });
                objRec.commitLine({ sublistId: sublistID });
            }

            //when this executes the error happens
            var recordId = objRec.save({ enableSourcing: true, ignoreMandatoryFields: true });

 

Что-то не так с моим кодом?

Ответ №1:

Я отредактировал свой код и решил переключиться с использования динамического режима на стандартный режим

Это код, который работает сейчас:

             var objRec = record.create({ type: record.Type.INVOICE, isDynamic: false });
            
            objRec.setValue({ fieldId: 'trandate', value: invcHeadValues[0], ignoreFieldChange: true });
            objRec.setValue({ fieldId: 'approvalstatus', value: invcHeadValues[1], ignoreFieldChange: true });
            objRec.setValue({ fieldId: 'tranid', value: invcHeadValues[3], ignoreFieldChange: true });
            objRec.setValue({ fieldId: 'custbody_paymentmethod_', value: invcHeadValues[4], ignoreFieldChange: true });
            objRec.setValue({ fieldId: 'entity', value: invcHeadValues[5], ignoreFieldChange: true });

            var count = nr.getLineCount({ sublistId: custSLID })

            for(var i = 0; i < count; i  ) {
                custInvcLineRecFlds.forEach(function (fld){ invcLineValues.push(nr.getSublistValue({ sublistId: custSLID, fieldId: fld, line: i })); });

                objRec.insertLine({ sublistId: sublistID, line: i, ignoreRecalc: true   });
                objRec.setSublistValue({ sublistId: sublistID, fieldId: 'id', line: i, value: String(invcLineValues[0]) });
                objRec.setSublistValue({ sublistId: sublistID, fieldId: 'item', line: i, value: String(invcLineValues[1]) });
                objRec.setSublistValue({ sublistId: sublistID, fieldId: 'item_display', line: i, value: String(invcLineValues[2]) });
                objRec.setSublistValue({ sublistId: sublistID, fieldId: 'quantity', line: i, value: String(invcLineValues[3]) });
                objRec.setSublistValue({ sublistId: sublistID, fieldId: 'rate', line: i, value: String(invcLineValues[4]) });
                objRec.setSublistValue({ sublistId: sublistID, fieldId: 'amount', line: i, value: String(invcLineValues[5]) });
            }

            var recordId = objRec.save({ enableSourcing: true, ignoreMandatoryFields: true });