Как получить заголовки столбцов сохраненного поиска в NetSuite с помощью набора разговоров в C#.Net?
Я пытаюсь получить информацию о сохраненном поиске, например, о количестве столбцов в сохраненном поиске и их информации. Я сохранил идентификатор поиска, и когда я выполняю поиск с помощью сервиса netsuite по коду, я могу получить данные в объекте recordList, но каждый элемент (строка) в списке имеет много статических полей, которые являются нулевыми и не используются в сохраненном поиске. в этом объекте строки задаются только те поля, которые имеют какое-либо значение.
Есть ли способ получить информацию о заголовках столбцов сохраненного поиска в netsuite через веб-сервисы SuiteTalk в C#.Net?
1 ответ
Прежде всего, я не думаю, что мы можем получить доступ к SavedSearches из Suite Analytics Connect, потому что источником данных для этого является Connect Browser, а не Record Browser.
Сохраненные поиски создаются на основе браузера записей! Если это может добавить некоторую ценность в будущем.
Пожалуйста, обратитесь к одной из проблем, которые у меня возникли здесь: найти таблицы и поля в сохраненном поиске элемента браузера записей
Я пытался использовать Connect, но он не работает.
Да, с использованием библиотеки SuiteTalk и RestletsService API. Он возвращает данные JSON, которые вы можете проанализировать. Убедитесь, что у вас есть рестлет, созданный для выполнения сохраненного поиска на стороне сценариев 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;
}