У меня есть небольшое консольное приложение C#, единственная цель которого - получать записи из «Сохраненного поиска» в NetSuite (через SuiteTalk). Мне удалось успешно подключиться и получить записи из NetSuite для моего сохраненного поиска (поиск также проходит через веб-интерфейс), однако, когда я пытаюсь получить доступ к результатам «Сохраненного поиска» через мое приложение, я не могу для их просмотра, так как объект поиска, который возвращается не содержит каких-либо данных в свойстве «recordList»:NetSuite SuiteTalk TransactionSearchAdvanced: recordList равно null
//Connect
var dataCenterAwareNetSuiteService = new DataCenterAwareNetSuiteService("XXXXXX");
dataCenterAwareNetSuiteService.Timeout = 1000 * 60 * 60 * 2;
//Adds Credentials etc...
dataCenterAwareNetSuiteService.tokenPassport = createTokenPassport();
//Setup Preferences
var prefs = new Preferences();
prefs.warningAsErrorSpecified = true;
prefs.warningAsError = false;
dataCenterAwareNetSuiteService.preferences = prefs;
var searchPrefs = new SearchPreferences();
dataCenterAwareNetSuiteService.searchPreferences = searchPrefs;
dataCenterAwareNetSuiteService.searchPreferences.pageSize = 5;
dataCenterAwareNetSuiteService.searchPreferences.pageSizeSpecified = true;
dataCenterAwareNetSuiteService.searchPreferences.bodyFieldsOnly = false;
dataCenterAwareNetSuiteService.searchPreferences.returnSearchColumns = false;
//Search
var tranSearchAdv = new TransactionSearchAdvanced();
var tranSearchRow = new TransactionSearchRow();
var tranSearchRowBasic = new TransactionSearchRowBasic();
tranSearchAdv.savedSearchId = "XXXX";
tranSearchRowBasic.internalId =
new SearchColumnSelectField[] { new SearchColumnSelectField() };
tranSearchRowBasic.tranId =
new SearchColumnStringField[] { new SearchColumnStringField() };
tranSearchRowBasic.dateCreated =
new SearchColumnDateField[] { new SearchColumnDateField() };
tranSearchRowBasic.total =
new SearchColumnDoubleField[] { new SearchColumnDoubleField() };
tranSearchRowBasic.entity =
new SearchColumnSelectField[] { new SearchColumnSelectField() };
tranSearchRow.basic = tranSearchRowBasic;
tranSearchAdv.columns = tranSearchRow;
//No errors,
//this works correctly and returns the "Saved Search" with the correct "totalRecords"
//but results.recordList == null while results.totalRecords = 10000000+
var results = dataCenterAwareNetSuiteService.search(tranSearchAdv);
Я мне кажется, что объект «recordList» является основным способом извлечения данных из результатов поиск (Related Java Example, Another Here). Это также способ, которым это делает example API.
Я запустил это на нескольких «сохраненных поисковых системах» с теми же результатами. Я не понимаю, как вы можете иметь более одной записи в «totalRecords», и все же «recordList» остается нулевым? Есть ли какой-либо параметр конфигурации, который должен быть установлен, чтобы позволить мне получить доступ к этому свойству. Или, может быть, это вопрос безопасности, у пользователя API, который у меня есть настройка, должен быть полный доступ, есть ли что-нибудь еще, что нужно получить доступ?
NetSuite SuiteTalk - not well documented, и большинство примеров онлайн не находятся на C# и not dealing с проблемами, которые я испытываю. Эти факторы затрудняют определение того, почему ранее упоминалось поведение, или даже, чтобы обнаружить любые альтернативные методы для получения результирующих данных из источника «Сохраненный поиск».
У кого-нибудь есть понимание этого поведения? Является ли это правильным методом получения результатов из SuiteTalk? Есть ли какая-либо конфигурация из API или веб-сайта, которую необходимо изменить?
Update 1
Я также попытался использовать альтернативный способ получения результирующих данных путем доступа к «searchRowList» объект из объекта «SEARCHRESULT» (предложенный @AdolfoGarza) Однако она возвращает в основном пустые поля (null), аналогичное свойству «recordList», я не вижу способа получить данные «Сохраненный поиск» из этого метода.
SuiteTalk, к сожалению, оставляет выделение разработчику, чтобы выяснить, как извлекать и обрабатывать результирующие наборы. Я думаю, что этот вопрос/ответ помогает прояснить некоторые из них (по крайней мере, в моем случае). Другая часть уравнения - это то, что делать с данными, когда вы можете получить к нему доступ, я думаю, что этот пост [https://community.boomi.com/thread/2736] помогает прояснить некоторые из вопросов вокруг этого. –