2

以下のコードがそのステータスに対してエラー(失敗)を返す理由は何ですか?

    private SearchResult getTxns()
    {
        TransactionSearchAdvanced tsa = new TransactionSearchAdvanced();

        tsa.columns = new TransactionSearchRow();

        tsa.columns.basic = new TransactionSearchRowBasic();
        tsa.columns.basic.tranId = new SearchColumnStringField[] { new SearchColumnStringField() };

        tsa.criteria = new TransactionSearch();
        tsa.criteria.basic = new TransactionSearchBasic();

        tsa.criteria.basic.mainLine = new SearchBooleanField();
        tsa.criteria.basic.mainLine.searchValue = true;
        tsa.criteria.basic.mainLine.searchValueSpecified = true;

        tsa.criteria.basic.type = new SearchEnumMultiSelectField();
        tsa.criteria.basic.type.@operator = SearchEnumMultiSelectFieldOperator.anyOf;
        tsa.criteria.basic.type.operatorSpecified = true;
        tsa.criteria.basic.type.searchValue = new string[] { "_salesOrder" };

        tsa.criteria.basic.otherRefNum = new SearchTextNumberField();
        tsa.criteria.basic.otherRefNum.@operator = SearchTextNumberFieldOperator.equalTo;
        tsa.criteria.basic.type.operatorSpecified = true;
        tsa.criteria.basic.type.searchValue = new string[] { "BBnB 1001" };

        SearchResult sr = _service.search(tsa);

        return sr;
    }

以下は、結果で返されるエラーです。

ステータス コード: INVALID_SEARCH_OPERATOR
ステータス メッセージ:有効な検索フィールド演算子を指定する必要があります。

ただし、この演算子は、検索を行うと NetSuite UI 自体に表示されます。また、ここの NetSuite ドキュメントにもあります。

wsdl の webservices バージョンに v2013_1_0 を使用しています。

解決

コードの最後のブロックに解決策があることがわかりました。otherRefNum を設定しようとしていて、Type を参照していました。これが修正されたコードです。

    private SearchResult getTxns()
    {
        TransactionSearchAdvanced tsa = new TransactionSearchAdvanced();

        tsa.columns = new TransactionSearchRow();

        tsa.columns.basic = new TransactionSearchRowBasic();
        tsa.columns.basic.tranId = new SearchColumnStringField[] { new SearchColumnStringField() };

        tsa.criteria = new TransactionSearch();
        tsa.criteria.basic = new TransactionSearchBasic();

        tsa.criteria.basic.mainLine = new SearchBooleanField();
        tsa.criteria.basic.mainLine.searchValue = true;
        tsa.criteria.basic.mainLine.searchValueSpecified = true;

        tsa.criteria.basic.type = new SearchEnumMultiSelectField();
        tsa.criteria.basic.type.@operator = SearchEnumMultiSelectFieldOperator.anyOf;
        tsa.criteria.basic.type.operatorSpecified = true;
        tsa.criteria.basic.type.searchValue = new string[] { "_salesOrder" };

        tsa.criteria.basic.otherRefNum = new SearchTextNumberField();
        tsa.criteria.basic.otherRefNum.@operator = SearchTextNumberFieldOperator.equalTo;
        tsa.criteria.basic.otherRefNum.operatorSpecified = true;
        tsa.criteria.basic.otherRefNum.searchValue = "BBnB 1001";

        SearchResult sr = _service.search(tsa);

        return sr;
    }
4

1 に答える 1