NetSuite SuiteScript 2.0 Добавление дополнительных фильтров в загруженный сохраненный поиск с ошибкой с помощью WRONG_PARAMETER_TYPE - PullRequest
0 голосов
/ 16 января 2019

У меня есть следующий код SuiteScript 2.0 в Suitelet, где я хотел бы добавить дополнительный фильтр к загруженному сохраненному поиску (подсписок элементов инвентаризации и основная запись записи корректировки инвентаризации):

  var rs = s.load({
    id: "customsearch_inv_adj_item_search"
  });

  // Copy the filters from rs into defaultFilters.
  var defaultFilters = rs.filters;
  var customFilters = [
     s.createFilter({
        name: "internalid",
        operator: s.Operator.IS,
        values: request.parameters.custscript_report_context.toString()
     }),
  ];

  // Push the customFilters into defaultFilters.
  defaultFilters.push(customFilters);

  // Copy the modified defaultFilters back into rs
  rs.filters = defaultFilters;

  var results = rs.run().getRange(0, 1000);

Однако код продолжает сбой в строке rs.filters = defaultFilters; с ошибкой:

{"type":"error.SuiteScriptError","name":"WRONG_PARAMETER_TYPE","message":"Wrong parameter type: filters[2] is expected as Filter. ","stack":["createError(N/error)","onRequest(/SuiteScripts/sui_custom_pdf_report.js:308)","createError(N/error)"],"cause":{"name":"WRONG_PARAMETER_TYPE","message":"Wrong parameter type: filters[2] is expected as Filter. "},"id":"","notifyOff":false,"userFacing":true}

Вместо request.parameters.custscript_report_context.toString() Я пытался 981, "981", ["981"], но не повезло.

custscript_report_context имеет тип integer и отлично работает при попытке загрузить запись через N\record.

Я возвращаю internalid в сохраненном поиске в виде столбца.

Кто-нибудь знает, что я делаю не так?

1 Ответ

0 голосов
/ 16 января 2019

Вы не можете вставить массив в searchFilters , только фильтровать объекты. Массивы требуются, если вы используете выражения фильтра .

Попробуйте следующий код

var rs = s.load({
  id: "customsearch_inv_adj_item_search"
});

// Copy the filters from rs into defaultFilters.
var defaultFilters = rs.filters;

// Push the customFilters into defaultFilters.

defaultFilters.push(s.createFilter({
  name: "internalid",
  operator: s.Operator.IS,
  values: request.parameters.custscript_report_context.toString()
}));
// Copy the modified defaultFilters back into rs
rs.filters = defaultFilters;

var results = rs.run().getRange(0, 1000);
...