Выражение фильтра netsuite suitescript не дает необходимых результатов поиска

    var filterExp = [ 
                [ ['custrecord_rebate_customer.isinactive', 'is', 'F'],
                   'and',
                  ['custrecord_rebate_customer.custrecord_start_date', 'before', date],
                  'and',
                  ['custrecord_rebate_customer.custrecord_end_date', 'after', date],
                  'and',
                  ['custrecord_rebate_customer.custrecord_upaya_warehouse', 'anyof', warehouse],
                  'and',
                  ['isinactive', 'is', 'F' ],
                  'and',
                  ['custrecord_customer_name', 'anyof', customer]],

                  'or',

                 ['custrecord_rebate_customer.custrecord_global_clearance_item','is','T']


                  ];

У меня есть поиск, который я запускаю, чтобы получить результаты. Мне нужно использовать выражение, потому что мне нужно иметь «или» в фильтре. Итак, в пользовательском интерфейсе у меня есть встроенный поиск, и он дает правильные результаты. Я получаю 7 результатов. Теперь в моем коде, когда я предупреждаю результаты поиска, я получаю 6, что означает, что он не может выполнить часть кода «или». Я не могу понять, как использовать "или". Первый раз с выражениями в коде, так что это может быть просто исправить. Я пробовал брекеты всеми возможными способами. У кого-нибудь есть решения? Заранее спасибо!


person Mike A.    schedule 14.12.2015    source источник
comment
какая часть или он не работает? Раздел, содержащий дату, или раздел, содержащий тест на клиренс? Если это часть даты, у вас действительно есть даты в ожидаемых полях?   -  person bknights    schedule 14.12.2015
comment
Зазорная часть не работает. Все до или работает отлично. Я получаю 6 результатов, которые являются правильными. Всего должно быть 7 результатов, включая зазор. С приведенным выше кодом я получаю 6 результатов. Таким образом, он не видит окончательный пункт скидки на оформление. Но в пользовательском интерфейсе я получаю 7.   -  person Mike A.    schedule 15.12.2015
comment
Синтаксически это выглядит правильно. Мне было бы любопытно увидеть фильтры поиска, которые вы настроили в пользовательском интерфейсе, а также результаты, которые вы ожидаете получить в пользовательском интерфейсе.   -  person erictgrubaugh    schedule 15.12.2015


Ответы (1)


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

x = nlapiLoadSearch(null, YOUR_UI_SEARCH_ID);
y = nlapiSearchRecord(YOUR_CUSTOM_RECORD_ID, null, x.getFilterExpression());

y должен давать тот же результат, что и x в пользовательском интерфейсе. Вы также можете увидеть содержимое x.getFilterExpression(), чтобы оно соответствовало вашему выражению фильтра.

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

nlapiLoadSearch(null, YOUR_UI_SEARCH_ID).runSearch().getResults(0, 1000);
person prasun    schedule 15.12.2015
comment
Это указало мне правильное направление. Спасибо, что напомнили мне, что я могу получить эти значения из поиска. Таким образом, поиск в пользовательском интерфейсе, который я выполнял, был в другой пользовательской записи, а не в коде. Я изменил пользовательский интерфейс, чтобы отразить код, и получил те же результаты. Значит код правильный. Спасибо! - person Mike A.; 16.12.2015