我有一个小型的C#控制台应用程序,其唯一目的是从NetSuite中的“保存的搜索”(通过SuiteTalk)接收记录。我已经能够成功连接和接收来自NetSuite的保存搜索记录(搜索也可以通过Web界面正常运行),但是当我尝试通过我的应用程序访问“保存的搜索”的结果时,我无法查看他们,因为返回的搜索对象不包含在“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或Web端的配置吗?
更新1
我已经使用通过访问从“信息搜索结果”对象“searchRowList”对象中获取结果数据的替代方式还试图(通过@AdolfoGarza建议),但是它返回大部分是空场(null)类似于“recordList”属性我没有看到从这个方法中检索“保存的搜索”数据的方法。
不幸的是,SuiteTalk不遗余力地让开发人员弄清楚如何检索和操纵结果集。我认为这个问题/答案有助于澄清一些问题(至少在我的情况下)。等式的另一部分是如何处理数据,我认为这[post](https://community.boomi.com/thread/2736)有助于澄清一些与此相关的问题。 –