如何通过C#.Net中的套件讨论获取NetSuite中已保存搜索的列标题?

时间:2018-07-26 17:50:21

标签: c# netsuite suitetalk saved-searches

我正在尝试获取有关已保存搜索的信息,例如已保存搜索中有多少列及其信息。 我已经保存了搜索ID,当我通过代码使用Netsuite服务进行搜索时,我可以在recordList对象中获取数据,但是列表中的每个项目(行)都有许多静态字段,这些字段为null,因此在保存的搜索中不使用在此行对象中仅设置具有任何值的字段。

是否可以通过C#.Net中的SuiteTalk Web服务获取netsuite中已保存搜索的列标题信息?

2 个答案:

答案 0 :(得分:0)

首先,我不认为我们可以从Suite Analytics Connect访问SavedSearches,因为它的数据源是Connect Browser,而不是Record Browser。

已保存的搜索是基于记录浏览器创建的!如果这样将来可能会增加一些价值。

请参考我在这里遇到的问题之一:Find the tables and fields in a saved search for Records Browser Item

我尝试使用Connect,但是它不起作用。

答案 1 :(得分:0)

可以使用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;
}