Web services 使用otherRefNum运算符时,NetSuite中销售订单的事务处理高级搜索返回错误

Web services 使用otherRefNum运算符时,NetSuite中销售订单的事务处理高级搜索返回错误,web-services,wsdl,netsuite,Web Services,Wsdl,Netsuite,你知道为什么下面的代码会为它的状态返回一个错误(失败)吗 private SearchResult getTxns() { TransactionSearchAdvanced tsa = new TransactionSearchAdvanced(); tsa.columns = new TransactionSearchRow(); tsa.columns.basic = new TransactionSearchRowBas

你知道为什么下面的代码会为它的状态返回一个错误(失败)吗

    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;
    }
以下是结果中返回的错误

状态代码:无效的搜索\u运算符
状态消息:您需要提供有效的搜索字段运算符

但是,当我进行搜索时,此运算符会出现在NetSuite UI中。另外,我在NetSuite文档中找到了它

我将v2013_1_0用于wsdl的webservices版本

解决方案

在最后一个代码块中找到解决方案。正在尝试设置otherRefNum,并且正在引用类型。这是正确的代码

    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;
    }

问题在于
SearchEnumMultiSelectField
运算符
equalto
不是此筛选器的有效运算符;您需要改用
anyOf

--编辑-从原始注释中修改--


SearchTextNumberField
不接受字符串数组。相反,请尝试
tsa.criteria.basic.otherRefNum.searchValue=“BBnB 1001”

我的道歉。。。我发错代码了。它是我的原始基中的任何一个,然后SearchTextNumberFieldOperator是相等的。我编辑了这篇文章来反映这一点。抱歉搞混了。我的下一个想法是equalTo不接受一系列参数。也许可以尝试
tsa.criteria.basic.type.searchValue=“BBnB 1001”取而代之。我不知道为什么
equalTo
操作符本身无效。虽然你的建议不是“解决方案”,但它导致了它。如果您能适当地编辑您的答案,我会将其标记为解决方案。如果您查看我试图设置“otherRefNum”的最后一段代码,最后两行代码提到了“type”。一旦我将它们更改为“otherRefNum”,它就会按照预期将searchValue作为单个字符串接受,然后正常工作。感谢您帮助我们找到解决方案。我将用答案编辑我的问题。