#javascript #netsuite #suitescript #suitescript2.0
#javascript #netsuite #suitescript #suitescript2.0
Вопрос:
Я пытаюсь прочитать в файле CSV с идентификаторами электронной почты, которые будут использоваться в качестве фильтра поиска для получения записей клиентов и удаления их идентификатора электронной почты в своих записях.
Вот мой код
var context = nlapiGetContext();
var filedata = nlapiLoadFile(context.getSetting('SCRIPT', 'custscript42')).getValue().split(/n|nr/);
for (var i = 0; i < filedata.length; i ) {
var email = filedata[i];
nlapiLogExecution('DEBUG', 'email', email);
var filters = new Array();
filters[0] = new nlobjSearchFilter('email', null, 'is', email);
var searchresults = nlapiSearchRecord('customer', null, filters, null);
nlapiLogExecution('DEBUG', '# of profiles with this email are:', searchresults.length);
for (var j = 0; searchresults != null amp;amp; j < searchresults.length; j ) {
var id = searchresults[j].getId();
nlapiLogExecution('DEBUG', 'cleaning email for: ', id);
var record = nlapiLoadRecord('customer', id);
record.setFieldValue('email', '');
nlapiSubmitRecord(record);
nlapiLogExecution('DEBUG', 'Result', 'Success');
}
}
Я не понимаю, почему searchresults присваивается значение NUll, я попытался выполнить поиск через пользовательский интерфейс, чтобы проверить, работает ли он для этого конкретного адреса электронной почты и работает ли он, но не в скрипте.
У кого-нибудь есть какие-либо идеи?
Ответ №1:
попробуйте использовать nlapiSearchRecord('entity'....
вместо customer.
Клиент — это тип записи, однако тип поиска entity
при поиске добавьте фильтр для типа customer
https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2018_1/script/record/entity.html
Кроме того, с точки зрения управления вам может быть лучше использовать nlapiSubmitField
вместо загрузки / сохранения записи клиента.
Ответ №2:
Протестировал это на моей консоли, и это сработало. Попробуйте установить для переменной email статическое значение для тестирования, чтобы увидеть, будет ли это работать. Кроме того, проверьте, каков внутренний идентификатор поля, в котором хранится электронное письмо, возможно, оно может отличаться.
var email = "anna_sanchez@bananarama.com"
nlapiLogExecution('DEBUG', 'email', email);
var filters = new Array();
filters[0] = new nlobjSearchFilter('email', null, 'is', email);
var searchresults = nlapiSearchRecord('customer', null, filters, null);