我一直在尝试创建一个kitlet,允许使用suitescript 1.0在netsuite中的项目记录集合上运行已保存的搜索
分页在其他任何地方都很容易,但我无法理解如何在NetSuite中实现它。
例如,我们有3,000个项目,我试图将结果限制为每页100个。
我很难理解如何将起始行和最大行参数应用为过滤器,以便我可以运行搜索以返回搜索中的记录数
我已经看到很多脚本允许你超过1,000条记录的限制,但我试图限制屏幕上显示的数量。但我不知道如何做到这一点。
非常感谢任何提示
function searchItems(request,response)
{
var start = request.getParameter('start');
var max = request.getParameter('max');
if(!start)
{
start = 1;
}
if(!max)
{
max = 100;
}
var filters = [];
filters.push(new nlobjSearchFilter('category',null,'is',currentDeptID));
var productList = nlapiSearchRecord('item','customsearch_product_search',filters);
if(productList)
{
response.write('stuff here for the items');
}
}
答案 0 :(得分:1)
您可以通过几种不同的方式来解决这个问题。无论哪种方式,您肯定需要通过有意义且一致的内容(例如内部ID)对搜索结果进行排序。确保您已将结果排序在已保存的搜索定义中,或者在脚本中添加搜索列。
您可以像以前一样继续构建搜索,然后只使用productList
数组上的原生slice
method。您可以使用start
和end
参数作为参数传递给slice
。
另一种方法是使用异步API进行搜索。它看起来与此类似:
var search = nlapiLoadSearch("item", "customsearch_product_search");
search.addFilter(new nlobjSearchFilter('category',null,'is',currentDeptID));
var productList = search.runSearch().getResults(start, end);
有关此方法的更多参考,请查看标题为“搜索API”的NetSuite帮助页面和nlobjSearch
的参考页。