我正在尝试获取有关已保存搜索的信息,例如已保存搜索中有多少列及其信息。我已经保存了搜索 ID,当我通过代码使用 netsuite 服务进行搜索时,我可以在 recordList 对象中获取数据,但是,列表中的每个项目(行)都有许多静态字段,这些字段为空且未在保存的搜索中使用此行对象中仅设置具有任何值的字段。
有没有办法通过 C#.Net 中的 SuiteTalk Web 服务获取 netsuite 中已保存搜索的列标题信息?
我正在尝试获取有关已保存搜索的信息,例如已保存搜索中有多少列及其信息。我已经保存了搜索 ID,当我通过代码使用 netsuite 服务进行搜索时,我可以在 recordList 对象中获取数据,但是,列表中的每个项目(行)都有许多静态字段,这些字段为空且未在保存的搜索中使用此行对象中仅设置具有任何值的字段。
有没有办法通过 C#.Net 中的 SuiteTalk Web 服务获取 netsuite 中已保存搜索的列标题信息?
首先,我认为我们不能从 Suite Analytics Connect 访问 SavedSearches,因为它的数据源是连接浏览器,而不是记录浏览器。
保存的搜索是基于记录浏览器创建的!如果这可能会在将来增加一些价值。
请参考我在这里遇到的问题之一:在保存的搜索记录浏览器项目中查找表和字段
我曾尝试使用 Connect,但它不起作用。
是的,使用 SuiteTalk 库和 RestletsService API。它返回您可以解析的 JSON 数据。确保您创建了一个 restlet 以在 NetSuite 脚本端运行保存的搜索并以 json 格式返回结果。
这个注释也很有用:
一次最多只能返回 4000 个搜索结果
nlobjSearchResultSet.forEachResult(callback)
。请修改您的搜索条件或修改回调逻辑,使返回的结果不超过 4000 个。
.Net 端
RestletsService api = AppSettings.BuildRestletsService;
string json = api.CallRestlet({RESTLET_ID_THAT_RUNS_SAVED_SEARCHES}, {DEPLOY #}, {SAVED_SEARCH_ID});
JArray resultsArray = JArray.Parse(json);
脚本端
function get_search_data(datain)
{
var results = [];
var savedsearch = nlapiLoadSearch(null, datain.savedsearchid);
var resultset = savedsearch.runSearch();
var searchid = 0;
do {
var resultslice = resultset.getResults( searchid, searchid+1000 );
for (var rs in resultslice) {
results.push( resultslice[rs] );
searchid++;
}
} while (resultslice.length >= 1000);
return results;
}