【问题标题】:How to get column headers of a saved search in NetSuite via suite talk in C#.Net?如何通过 C#.Net 中的套件对话获取 NetSuite 中已保存搜索的列标题?
【发布时间】:2019-01-03 19:16:30
【问题描述】:
我正在尝试获取有关已保存搜索的信息,例如已保存搜索中有多少列及其信息。
我已经保存了搜索 ID,当我通过代码使用 netsuite 服务进行搜索时,我能够在 recordList 对象中获取数据,但是,列表中的每个项目(行)都有许多静态字段,这些字段为空且未用于保存的搜索此行对象中仅设置具有任何值的字段。
有没有办法通过 C#.Net 中的 SuiteTalk Web 服务获取 netsuite 中已保存搜索的列标题信息?
【问题讨论】:
标签:
c#
netsuite
suitetalk
saved-searches
【解决方案1】:
是的,使用 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;
}