ODATA。过滤某些字符串字段无效

时间:2018-06-18 06:45:48

标签: rest odata filtering

我使用Odata v3和1C Enterprise 8.3.10。在Apache Tomcat 2.2上。 这个查询     http://localhost/TEST/odata/standard.odata/AccountingRegister_Типовой/Balance()?$顶部= 1个
返回这样的结果:

<d:Result xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:type="Collection(StandardODATA.AccountingRegister_Типовой_Balance)">
    <d:element m:type="StandardODATA.AccountingRegister_Типовой_Balance">
        <d:Account_Key>8064bbd7-6b39-11e1-978d-00265502bde5</d:Account_Key>
        <d:ExtDimension1>3e0969a1-6b39-11e1-978d-00265502bde5</d:ExtDimension1>
        <d:ExtDimension1_Type>StandardODATA.Catalog_ОсновныеСредства</d:ExtDimension1_Type>
        ...            
    </d:element>
</d:Result>

当我尝试添加过滤器http://localhost/TEST/odata/standard.odata/AccountingRegister_Типовой/Balance()时?$ top = 1&amp; $ filter = ExtDimension1 eq'3e0969a1-6b39-11e1-978d-00265502bde5'
它返回空结果。
'ExtDimension1'字段的类型是Edm.String,而不是guid
(来自$ metadata)

<ComplexType Name="AccountingRegister_Типовой_Balance">
    <Property Name="Account_Key" Type="Edm.Guid" Nullable="true"/>
    <Property Name="ExtDimension1" Type="Edm.String" Nullable="true"/>
    <Property Name="ExtDimension1_Type" Type="Edm.String" Nullable="true"/>
    ...

我也试着像这样过滤:
$ filter = ExtDimension1 eq guid'3e0969a1-6b39-11e1-978d-00265502bde5'

但它返回一个错误。

如果我按其他字段过滤  (例如ExtDimension1_Type)它可以正常工作 有人知道如何过滤'ExtDimension1'字段吗?

UPDATE
以下是来自元数据的Balance()函数的描述。希望它会有用

<FunctionImport Name="Balance" IsBindable="true" IsSideEffecting="false" ReturnType="Collection(StandardODATA.AccountingRegister_Типовой_Balance)">
    <Parameter Name="bindingParameter" Type="StandardODATA.AccountingRegister_Типовой"/>
    <Parameter Name="AccountCondition" Type="Edm.String"/>
    <Parameter Name="Condition" Type="Edm.String"/>
    <Parameter Name="Dimensions" Type="Edm.String"/>
    <Parameter Name="ExtraDimensions" Type="Edm.String"/>
    <Parameter Name="Period" Type="Edm.DateTime"/>
</FunctionImport>

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,并且找到了解决方案。

$filter=ExtDimension1 eq cast('3e0969a1-6b39-11e1-978d-00265502bde5', 'Catalog_ОсновныеСредства')

答案 1 :(得分:0)

尝试: http://localhost/TEST/odata/standard.odata/AccountingRegister_Типовой/Balance?$ top = 1&amp; $ filter = ExtDimension1 eq'3e0969a1-6b39-11e1-978d-00265502bde5' 例如。删除'()'或 指定号码: http://localhost/TEST/odata/standard.odata/AccountingRegister_Типовой/Balance(1)?$ top = 1&amp; $ filter = ExtDimension1 eq'3e0969a1-6b39-11e1-978d-00265502bde5'