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