Невозможно создать простую корректировку инвентаря: недопустимое поле для клиента?

Почему, когда я пытаюсь создать корректировку инвентаря, я получаю сообщение об ошибке:

Вы ввели недопустимое значение поля 12112 для следующего поля: клиент

Я могу подтвердить, что этот идентификатор объекта клиента действителен и что они являются частью правильной дочерней компании.

Есть идеи, что, черт возьми, идет не так, и как я могу создать простую корректировку инвентаря?

require(['N/ui/serverWidget', 
        'N/email', 
        'N/runtime', 
        'N/search',
        'N/file',
        'N/config',
        'N/format',
        'N/record',
        'N/log',
        'N/runtime'],

function(ui, email, runtime, search, file, config, format, record, log, runtime) {

    // Attempt to create an IA

    var ia = record.create({
        type: record.Type.INVENTORY_ADJUSTMENT, 
        isDynamic: true
    });

    // Set IA fields
    var values = {
        // 'entity': '12112',  // Dummy customer
        'customer': '12112',  
        'subsidiary': '2',
        'account': '307',
        'class': '36',
        //'adjlocation': '2'
    };

    for (var key in values) {
        ia.setValue({
            fieldId: key,
            value: values[key]
        });
    }

    // Set IA Inventory sublist fields/lines
    var line1 = {
        'item': '61',
        'location': '1',
        'adjustqtyby': '-1',
        'department': '3',
        'class': '36',
    };

    ia.selectNewLine({
        sublistId: 'inventory'
    });

    for (var field in line1) {
        ia.setCurrentSublistValue({
            sublistId: 'inventory',
            fieldId: field,
            value: line1[field]
        });
    }

    ia.commitLine({
        sublistId: 'inventory'
    });

    var recordId = ia.save({
        enableSourcing: false,
        ignoreMandatoryFields: false
    });

    var x = 0;  // Add breakpoint for NS Debugger

});

person sazr    schedule 07.12.2017    source источник


Ответы (1)


Вы создаете запись в «динамическом» режиме, поэтому вам нужно установить поля в том же порядке, что и в пользовательском интерфейсе. В частности, вам нужно выбрать subsidiary, прежде чем вы сможете установить поле customer.

Замена этих двух строк местами, скорее всего, решит вашу ошибку.

var values = {
    // 'entity': '12112',  // Dummy customer
    'subsidiary': '2',
    'customer': '12112',
    'account': '307',
    'class': '36',
    //'adjlocation': '2'
};

Однако обратите внимание, что for..in не гарантировать, что он будет следовать какому-либо определенному порядку, поэтому теоретически NetSuite может в любой момент отправить обновление в свой движок JavaScript, которое изменит порядок вещей и нарушит ваш код.

person michoel    schedule 07.12.2017