我已经在netsuite中创建了一个已保存的事务搜索,并使用suitescript 2.0我在应用程序中显示已保存的搜索数据。在应用程序中,用户可以在任何字段(please see the attached screenshot)上应用过滤器。例如,用户选择“2011年8月”用于过帐期间,仅应加载2011年8月的交易。如果我创建一个内部为“2011年8月”的过滤器,这可以正常工作,但在UI上我没有内部ID。
示例代码:
/*
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;
}
}
我尝试使用连接但是看到来自Netsuite的“SSS_INVALID_SRCH_FILTER_JOIN”错误。
任何人都可以帮我解决这个问题。
提前致谢
答案 0 :(得分:2)
我将您的代码编辑为更简单的代码,以便更好地理解。 如果您了解它的工作原理,您可以编辑/自定义您想要的方式。
我假设有'accountsperiod'选项可用于'postsperiod',这在您在netsuite中创建的已保存搜索中完美运行,而不使用套接字。
/*
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;
}
答案 1 :(得分:0)
我认为您的应用程序是Suitelet?如果是这样,您需要选择记录的字段类型。所以可能是'过账期'。这会在下拉列表中显示您的期间。
当用户选择它时,让客户端脚本自动刷新数据并加载已保存的搜索。
或者,您可以加载所有数据并执行过滤客户端DOM过滤。真的需要更多关于你的“应用程序”的信息。