Как обновить настраиваемое поле столбца в только что созданной транзакции - PullRequest
0 голосов
/ 13 мая 2019

У меня есть сценарий пользовательских событий SS2, который запускается после отправки при создании записи выполнения элемента.

В записи выполнения элемента есть поле настраиваемого столбца custcol_sp_itf_cost с типом данных Currency.Поле имеет проверенное значение хранилища.

Следующий код производит запись в журнал, чтобы показать, что он проходит через строки, но не устанавливает значение поля.Кто-нибудь знает почему?

(я убрал здесь код регистрации для краткости.)

function afterSubmit(context)
{
    var lineCount = context.newRecord.getLineCount({ sublistId: 'item' });

    for (var i = 0; i < lineCount; i++) {

        context.newRecord.setSublistValue({
            sublistId: 'item',
            fieldId: 'custcol_sp_itf_cost',
            line: i,
            value: 1234
        });
    }
}

1 Ответ

2 голосов
/ 13 мая 2019

При выполнении кода в событии afterSubmit запись уже отправлена ​​в базу данных, поэтому любая попытка обновить newRecord напрямую не будет работать. У вас есть два варианта:

  1. Переместите свой код в событие beforeSubmit, в этом случае setSublistValue будет работать так же, как вы пытаетесь это сделать. Это был бы рекомендуемый подход.
  2. Загрузите вновь созданную запись с помощью record.load(), затем вызовите setSublistValue(), затем вызовите record.save(). Вы можете получить идентификатор записи из context.newRecord в событии afterSubmit.

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

...