Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Netsuite搜索筛选器条件不工作_Javascript_Netsuite_Suitescript - Fatal编程技术网

Javascript Netsuite搜索筛选器条件不工作

Javascript Netsuite搜索筛选器条件不工作,javascript,netsuite,suitescript,Javascript,Netsuite,Suitescript,我正在进行Netsuite搜索,但过滤器实际上没有进行任何过滤?“budgetimport”对象中有314项,无论我如何尝试筛选搜索,每次都会返回所有314项 我错过了什么/做错了什么 提前谢谢 当我在这里时,请注意:从搜索中获取“金额”列中的值的“最佳”方法是什么?(搜索中应该只返回一个项目,但如果有更多项目呢?) 看起来问题在于该记录类型。我在记录浏览器中找不到关于它的任何信息,因此我不确定允许的过滤器是什么。问题是这些字段没有过滤。如果为internalid添加筛选器并输入其中一条记录的i

我正在进行Netsuite搜索,但过滤器实际上没有进行任何过滤?“budgetimport”对象中有314项,无论我如何尝试筛选搜索,每次都会返回所有314项

我错过了什么/做错了什么

提前谢谢

当我在这里时,请注意:从搜索中获取“金额”列中的值的“最佳”方法是什么?(搜索中应该只返回一个项目,但如果有更多项目呢?)


看起来问题在于该记录类型。我在记录浏览器中找不到关于它的任何信息,因此我不确定允许的过滤器是什么。问题是这些字段没有过滤。如果为internalid添加筛选器并输入其中一条记录的internaid,它将进行筛选(请参见下文)。我建议就此向NetSuite提交一个案例,因为这似乎是此记录的一个缺陷

filters.push(new nlobjSearchFilter('internalid',null,'is','12345'));

我认为这种记录类型在NetSuite中得不到完全的脚本编写/保存搜索支持

我在NetSuite调试器中将以下行添加到脚本中以保存savedsearch。这部分工作,但当我试图编辑它的错误。很可能不是完全支持的记录类型

//var search = nlapiSearchRecord('budgetimport', null, filters, columns);
var search = nlapiCreateSearch( 'budgetimport', filters, columns );
var searchId = search.saveSearch('BudgetImport_SEARCH', 'customsearch_budgetimport_search');

如果NetSuite给您答复,请随时更新我们。

您的筛选器无法工作的原因可能是以下原因:

  • 您正在使用文本作为筛选值,而不是内部id
  • 当您使用anyof运算符时,您没有传递数组
  • 此外,不需要将null作为最后一个参数传递

尝试将
任何一个操作符与内部ID配对

例如:

filters.push(new nlobjSearchFilter('year', null, 'anyof', *internal id of 'FY 2007'*, null));

这里没有提到这一点,但前几天我在编写脚本时遇到了这个问题:

//add search filters
var filters = [];
filters.push(new nlobjSearchFilter('year', null, 'anyof', 'FY 2007', null));
filters.push(new nlobjSearchFilter('department', null, 'anyof', 'Bass', null));
filters.push(new nlobjSearchFilter('account', null, 'anyof', 'Administration Expenses', null));
如果所有这些字段都是源于列表的选择字段(自定义或非自定义),那么您需要通过内部Id引用字段值(我说“需要”,因为这是我必须做的,以便正确过滤定价)

因此,不要使用“FY 2007”,而是在其父列表的上下文中查找其内部id

要查找您试图筛选依据的值的内部id,您可以创建一个已保存的搜索,该搜索列出该值及其内部id,这可以从选择字段的任何父记录中完成。(这是我为了找到价格水平的内部id而不得不使用的一种方法,因为我在我们的系统中其他任何地方都找不到)


如果是自定义列表,请导航到“自定义列表”页面,找到该列表,并为您试图筛选的值标识内部id。

经过大量的播放和挫折,问题在于NetSuite中的“非标准”对象,因此“正常”处理方法不适用

要对budgetimport对象进行筛选,需要使用“formulatext”并设置筛选条件,例如

//add search filters
var filters = [];
filters.push(new nlobjSearchFilter('formulatext', null, 'is', fiscalyear).setFormula('{Year}')); //NOTE : Capital 'Y' in Year
filters.push(new nlobjSearchFilter('formulatext', null, 'is', costcentre).setFormula('{department}'));

感谢您提供的信息,W3bguy。我在这个问题上花了多一点时间,也许有一种工作可以解决?我已经向Netsuite发送了一条消息,询问为什么“internalid”在过滤条件下工作,但似乎没有其他东西能工作?!我正在等待一个有用的答复。
//add search filters
var filters = [];
filters.push(new nlobjSearchFilter('formulatext', null, 'is', fiscalyear).setFormula('{Year}')); //NOTE : Capital 'Y' in Year
filters.push(new nlobjSearchFilter('formulatext', null, 'is', costcentre).setFormula('{department}'));