返回没有任何发票行项目的NetSuite交易搜索

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)

cep*_*att 5

我在"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)