Netsuite SuiteScript 2.0事务保存搜索筛选器
我已经在netsuite中为事务创建了一个保存的搜索,使用SuiteScript2.0,我将在应用程序中显示保存的搜索数据。在应用程序中,用户可以对任何字段应用筛选器。例如,用户选择“2011年8月”作为过帐期间,只应加载2011年8月的交易记录。如果我创建了一个内部id为“2011年8月”的过滤器,这就可以了,但在UI上我没有内部id 示例代码:Netsuite SuiteScript 2.0事务保存搜索筛选器,netsuite,suitescript2.0,Netsuite,Suitescript2.0,我已经在netsuite中为事务创建了一个保存的搜索,使用SuiteScript2.0,我将在应用程序中显示保存的搜索数据。在应用程序中,用户可以对任何字段应用筛选器。例如,用户选择“2011年8月”作为过帐期间,只应加载2011年8月的交易记录。如果我创建了一个内部id为“2011年8月”的过滤器,这就可以了,但在UI上我没有内部id 示例代码: /* here is my required module */ function getTransactionData(datain) {
/*
here is my required module
*/
function getTransactionData(datain)
{
try
{
var objSearch = search.load
({
id: datain.savedsearchid
});
/***** Work *****/
objSearch.filters.push(search.createFilter({ name: "postingperiod", operator: "ANYOF", values: "1" })); //here 1 is internalid of periodname "Aug 2011"
/***** Not Work (SSS_INVALID_SRCH_FILTER_JOIN) *****/
//objSearch.filters.push(search.createFilter({ name: "postingperiod", join: "accountingperiod", operator: "ANYOF", values: "Aug 2011" }));
objSearch.run();
}
catch(ex)
{
log.error("getTransactionData", ex);
throw ex;
}
}
我尝试使用join,但从Netsuite中看到“SSS\u无效\u SRCH\u过滤器\u join”错误
有谁能帮我一下吗
提前谢谢我想你的申请是Suitelet吧?如果是这样,您需要对记录执行选择字段类型。所以可能是“过账期”。这将在下拉列表中显示您的经期 当用户选择它时,让客户端脚本自动刷新数据并加载保存的搜索
或者,您可以加载所有数据并执行过滤客户端DOM过滤。真的需要更多关于您的“应用程序”的信息。我想您的应用程序是Suitelet?如果是这样,您需要对记录执行选择字段类型。所以可能是“过账期”。这将在下拉列表中显示您的经期 当用户选择它时,让客户端脚本自动刷新数据并加载保存的搜索
或者,您可以加载所有数据并执行过滤客户端DOM过滤。确实需要更多关于“应用程序”的信息。为了更好地理解,我将您的代码编辑为更简单的代码。 如果您了解了它的工作原理,您可以按照自己的方式进行编辑/自定义 我假设“postingperiod”有“join”“accountingperiod”选项,这在您在netsuite中创建的已保存搜索中非常有效,而无需使用suitescript
/*
here is my required module
*/
function getTransactionData(datain) {
try {
var objSearch = search.load({
id: datain.savedsearchid
});
var defaultFilters = objSearch.filters;
var customFilters = [];
//Adding filter
customFilters = ['postingperiod', 'ANYOF', '1'];
defaultFilters.push(customFilters);
customFilters = undefined;
customFilters = [];
//Adding filter
/*
customFilters = ['postingperiod.accountingperiod', 'ANYOF', 'Aug 2011'];
defaultFilters.push(customFilters);
*/
objSearch.filters = defaultFilters;
var objSearch_run = objSearch.run().getRange({
start: 0,
end: 10
});
} catch (ex) {
log.error("getTransactionData", ex);
throw ex;
}
}
如果您想知道过滤器如何存储在netsuite中创建的已保存搜索中,可以使用脚本调试器。
以下代码是suitescript 1.0
//Load Saved Search
get();
function get() {
var search = nlapiLoadSearch('transaction', ' ENTER SAVED SEARCH ID HERE ');
log.debug('search',search);
var searchFilters = search.getFilterExpression();
log.debug('searchFilters',searchFilters);
return search;
}
为了更好地理解,我将您的代码编辑为更简单的代码。 如果您了解了它的工作原理,您可以按照自己的方式进行编辑/自定义 我假设“postingperiod”有“join”“accountingperiod”选项,这在您在netsuite中创建的已保存搜索中非常有效,而无需使用suitescript
/*
here is my required module
*/
function getTransactionData(datain) {
try {
var objSearch = search.load({
id: datain.savedsearchid
});
var defaultFilters = objSearch.filters;
var customFilters = [];
//Adding filter
customFilters = ['postingperiod', 'ANYOF', '1'];
defaultFilters.push(customFilters);
customFilters = undefined;
customFilters = [];
//Adding filter
/*
customFilters = ['postingperiod.accountingperiod', 'ANYOF', 'Aug 2011'];
defaultFilters.push(customFilters);
*/
objSearch.filters = defaultFilters;
var objSearch_run = objSearch.run().getRange({
start: 0,
end: 10
});
} catch (ex) {
log.error("getTransactionData", ex);
throw ex;
}
}
如果您想知道过滤器如何存储在netsuite中创建的已保存搜索中,可以使用脚本调试器。
以下代码是suitescript 1.0
//Load Saved Search
get();
function get() {
var search = nlapiLoadSearch('transaction', ' ENTER SAVED SEARCH ID HERE ');
log.debug('search',search);
var searchFilters = search.getFilterExpression();
log.debug('searchFilters',searchFilters);
return search;
}
我的应用程序是.net wpf应用程序,不是suitelet。您是否尝试将筛选器更改为:objSearch.filters.push(search.createFilter({name:“postingperiod”,join:“accountingperiod”,operator:“ANYOF”,value:“1”});这里“1”是periodname“2011年8月”的一个内部ID,我在wpf应用程序中不知道该内部ID,这就是为什么我想基于periodname而不是基于internalid筛选事务。您可能需要进行两次搜索。首先搜索所有过帐期间,并获取内部id和名称。然后对您需要的internalid进行筛选/匹配?似乎您是对的,我必须进行两次搜索我的应用程序是.net wpf应用程序,而不是suitelet。您是否尝试将筛选更改为:objSearch.filters.push(search.createFilter({name:“postingperiod”,join:“accountingperiod”,operator:“ANYOF”,values:“1”});这里“1”是periodname“2011年8月”的一个内部ID,我在wpf应用程序中不知道该内部ID,这就是为什么我想基于periodname而不是基于internalid筛选事务。您可能需要进行两次搜索。首先搜索所有过帐期间,并获取内部id和名称。然后对您需要的internalid进行筛选/匹配?看来您是对的,我必须进行两次搜索Thank@Manu,这里“1”是periodname的internalid“2011年8月”,而我在wpf应用程序中不知道该internalid,这就是为什么我想基于periodname而不是基于InternalidThank@Manu,这里“1”来筛选交易是periodname“2011年8月”的内部ID,我在wpf应用程序中不知道该内部ID,这就是为什么我希望基于periodname而不是基于internalid筛选事务