2015-12-28 5 views
0

Я написал очень простое (я думал) массовое обновление, чтобы установить отдел на предыдущие счета-фактуры, чтобы я мог запустить отчет P & L по департаменту, чтобы узнать, как наши различные направления бизнеса делают этот календарный год.Ошибка массового обновления Netsuite

Сценарий просто:

function updateInvoiceDepartment(rec_type,rec_id) { 
var recInvoice = nlapiLoadRecord(rec_type,rec_id); 
if (recInvoice.getFieldValue('job') != null) 
    recInvoice.setFieldValue('department',4); 
else 
    recInvoice.setFieldValue('department',3); 
nlapiSubmitRecord(recInvoice); 
} 

Однако, когда я бегу сценарий, я получаю следующее сообщение об ошибке:

Error: RCRD_HAS_BEEN_CHANGED 
Record has been changed 
Stack Trace: nlapiCreateError(Controlco_Mass_Update.js$23323:1305) 
nlapiSubmitRecord(Controlco_Mass_Update.js$23323:494) 
updateInvoiceDepartment(Controlco_Mass_Update.js$23323:232) 
<anonymous>(Controlco_Mass_Update.js$23323:234) 

Я немного запутался. Ошибка в том, что запись была изменена? Но в этом смысл скрипта, чтобы изменить записи! Я не уверен, почему я получаю эту ошибку или как двигаться вперед?

+0

Есть ли другой скрипт, работающий параллельно? является ли любой другой пользователь одновременно внесением изменений в запись? – prasun

+0

также, можете ли вы сделать одно и то же изменение на одной записи из пользовательского интерфейса, и всегда ли это происходит каждый раз или это случается? – prasun

ответ

0

Скорее всего, это взаимодействие с сценарием пользовательского события. Один простой тест - заменить nlapiSubmitRecord на:

nlapiSubmitRecord(recInvoice, {disabletriggers:true}); 
+0

Хорошо, так что сработало, но теперь у меня есть целый ряд проблем. Теперь он продолжает неработоспособно снова из-за «User_Error» из-за проблем с другими полями в счетах, которые не имеют ничего общего с полем, которое я пытаюсь обновить. Например, что-то не требовалось, когда счет-фактура был создан, но требуется сегодня, поэтому любой счет-фактура без этого заполняется. Есть ли способ пропустить проверку и просто изменить поле, которое я хочу изменить? –

+1

Советуем вам ознакомиться с справочной документацией NetSuite для 'nlapiSubmitRecord'. Он фактически принимает три параметра, один из которых является 'ignoreMandatoryFields' именно для этой цели. – erictgrubaugh

+0

Это также не работает: nlapiSubmitRecord (recInvoice, {disabletriggers: true}, {ignoreMandatoryFields: true}); –

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