Скрипт, возвращающий 'TypeError: не может прочитать длину свойства из NULL', даже если это не так - PullRequest
1 голос
/ 03 апреля 2019

Я пытаюсь прочитать в CSV-файл с идентификаторами электронной почты, которые будут использоваться в качестве фильтра поиска для получения записей о клиентах и ​​удаления их идентификаторов электронной почты из их записей.

Вот мой код

var context = nlapiGetContext();
var filedata = nlapiLoadFile(context.getSetting('SCRIPT', 'custscript42')).getValue().split(/\n|\n\r/);
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 && 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, я попытался выполнить поиск через пользовательский интерфейс, чтобы проверить, работает ли он для этого конкретного адреса электронной почты и работает ли он, но не в сценарии.

У кого-нибудь есть идеи?

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

попробуйте использовать nlapiSearchRecord('entity'.... вместо customer.

Customer - это тип записи, однако тип поиска entity

в поиске, добавьте фильтр для типа customer

https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2018_1/script/record/entity.html

Кроме того, с точки зрения управления вам может быть лучше использовать nlapiSubmitField вместо загрузки / сохранения записи клиента.

0 голосов
/ 03 апреля 2019

Протестировал это на моей консоли, и это сработало.Попробуйте установить для переменной электронной почты статическое значение, чтобы проверить, будет ли оно работать.Кроме того, проверьте, что является внутренним идентификатором поля, в котором хранится электронная почта, возможно, что она может отличаться.

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);
...