cep*_*att 3 c# soap web-services netsuite suitetalk
我正在尝试将NetSuite的发票导入我的程序.在这个程序中,我需要尽可能多的关于发票的信息才能被退回.但是,似乎没有返回任何订单项信息.这是我为搜索完成的代码.有什么建议?我试图通过尽可能少的呼叫NetSuite来完成此操作,以保持高性能.
SearchResult searchResults = new SearchResult();
TransactionSearch ts = new TransactionSearch();
TransactionSearchBasic tsb = new TransactionSearchBasic();
// Search for Invoices
if (_InvoiceTxnIds.Count > 0)
{
tsb.internalId = new SearchMultiSelectField();
tsb.internalId.@operator = SearchMultiSelectFieldOperator.anyOf;
tsb.internalId.operatorSpecified = true;
List<RecordRef> rrlist = new List<RecordRef>();
foreach (string sTxnId in _InvoiceTxnIds)
{
RecordRef rr = new RecordRef();
rr.internalId = sTxnId;
rrlist.Add(rr);
}
tsb.internalId.searchValue = rrlist.ToArray();
ts.basic = tsb;
searchResults = _service.search(ts);
}
Run Code Online (Sandbox Code Playgroud)
我在"Suite Talk Web服务平台指南"中找到了我的答案:
SuiteTalkWebServicesPlatformGuid_2012.1.pdf(第34页,设置搜索首选项.)
我已经在下面提供了我的解决方案和代码,以防指南在将来不可用.
bodyFieldsOnly
boolean
默认值为TRUE,表示返回记录正文字段中的信息 - 显着提高了性能.不返回关联列表或子列表中的任何字段.如果bodyFieldsOnly字段设置为FALSE,则返回与该记录关联的所有字段.
所以我错过了将bodyFieldsOnly设置为false.一旦设置为false,我就会收到所需的全部信息.
/// <summary>
/// <p>This function builds the Pereferences and SearchPreferences in the SOAP header. </p>
/// </summary>
private void setPreferences()
{
// Set up request level preferences as a SOAP header
_prefs = new Preferences();
_service.preferences = _prefs;
_searchPreferences = new SearchPreferences();
_service.searchPreferences = _searchPreferences;
// Preference to ask NS to treat all warnings as errors
_prefs.warningAsErrorSpecified = true;
_prefs.warningAsError = false;
_searchPreferences.pageSize = _pageSize;
_searchPreferences.pageSizeSpecified = true;
// Setting this bodyFieldsOnly to true for faster search times on Opportunities
_searchPreferences.bodyFieldsOnly = false;
}
Run Code Online (Sandbox Code Playgroud)