После отправки и установки значения поля

#netsuite

#netsuite

Вопрос:

Я пытаюсь обновить поле после отправки записи, но поле не обновляется. Я знаю, что скрипт запускается, потому что отладка показывает значение oldweight. Вы не можете обновить поле в пользовательском событии AfterSubmit.

 // 2.0 - Fluent
/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 * @NModuleScope SameAccount
 */
define(["N/record"], function (r) {
    function onAfterSubmit(context) {
        var  oldweight = context.newRecord.getValue({ fieldId: 'custbody93' });

            log.debug({
            title: 'Old Weight',
            details: oldweight
            });

        if (oldweight) {
            var fixWeight = context.newRecord;
            context.newRecord.setValue('custbody103', 'oldweight');
        };
    }  
   return {
        afterSubmit: onAfterSubmit
    };
});
  

Ответ №1:

В afterSubmit случае запись уже отправлена и сохранена в базе данных, поэтому вы не можете обновлять поля непосредственно в записи в памяти.

Вам нужно будет использовать N/record to load() и save() запись или использовать submitFields() , чтобы правильно обновить базу данных.

Наилучшей практикой для изменения полей в той же записи, которая вызвала пользовательское событие, является использование beforeSubmit вместо этого; в этой точке входа ваш текущий код будет работать так, как вы ожидаете.

На моем канале YouTube есть серия видеороликов о понимании пользовательских событий и о том, как работать с записями.