2017-01-20 7 views
0

Я хочу, чтобы запись не удалялась на основе определенных условий в NetSuite. Однако, похоже, я не могу найти событие сбоя при проверке? BeforeSubmit на UserEvent имеет delete тип, но у него нет возвращаемого значения для функции, поэтому я не могу просто сказать return false, могу ли я?Запретить удаление записи с помощью SuiteScript

Как предотвратить предотвращение удаления записи, или сбой запись определенного типа?

ответ

5

Вместо того чтобы возвращать false, просто введите ошибку. Я не знаю, но это единственный вариант, насколько я знаю.

Поскольку это событие перед отправкой пользователя, представление или удаление не удастся.

+0

Да, это будет сделано. Единственный способ остановить запись, хранящуюся в базе данных во время сценария пользовательского события, - это выбросить ошибку из 'beforeSubmit'. – erictgrubaugh

+0

Что было бы самым безопасным способом (лучшей практикой?) Для этого? Функция броска? Я никогда не использовал его раньше, но похоже, что это будет правильное решение? –

+0

Функция throw будет правильным решением. Вы также можете использовать nlapiCreateError в SuiteScript 1.0, чтобы создать свою собственную ошибку. –

0

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

+0

Какое событие на стороне клиента сделало бы это? Сначала я посмотрел на него, и мой текущий «план», если все не удавалось, состояло в том, чтобы просто перенаправить пользователя автоматически обратно в запись «Просмотр», если они попытались отредактировать его, но я не видел тип события клиента, который регистрировал бы тип "delete" –

0

Вы должны использовать сценарий пользовательского события beforeSubmit и выдать ошибку, используя nlapiCreateError. Вот пример:

function beforeSubmit(type) { 
    if(type == 'delete') { 
    // NOTE `nlapiGetFieldValue` returns nil/empty during a delete event 
    //  `nlapiGetOldRecord` needs to be used to pull the entire record 

    var payment = nlapiGetOldRecord(); 

    if(payment.getFieldText('paymentmethod') == 'cash') { 
     throw nlapiCreateError(
     'AN_ERROR', 
     'Message to the user!', 
     true 
    ); 
    } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^