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作为单个字符串接受,然后正常工作。感谢您帮助我们找到解决方案。我将用答案编辑我的问题。