Web services Acumatica SOAP API导出筛选器中的通配符搜索

Web services Acumatica SOAP API导出筛选器中的通配符搜索,web-services,acumatica,Web Services,Acumatica,我正在尝试使用Acumatica web服务从屏幕CR302000 Organization>Customer Management>Contacts导出 使用具有FilterCondition.Contain条件的筛选器,我可以将结果限制为仅具有包含特定字符串的Phone1字段的结果 现在,我希望筛选的电话号码包含一个通配符。在web界面中,使用%作为通配符是有效的。但是当使用web服务时,这不起作用,不会返回任何行 我的过滤器: Filter[] filters = new Filter[]

我正在尝试使用Acumatica web服务从屏幕CR302000 Organization>Customer Management>Contacts导出

使用具有FilterCondition.Contain条件的筛选器,我可以将结果限制为仅具有包含特定字符串的Phone1字段的结果

现在,我希望筛选的电话号码包含一个通配符。在web界面中,使用%作为通配符是有效的。但是当使用web服务时,这不起作用,不会返回任何行

我的过滤器:

Filter[] filters = new Filter[]
{
    new Filter()
    {
        Field = new Field()
        {
            FieldName = context.DetailsContact.Phone1.FieldName,
            ObjectName = context.DetailsContact.Phone1.ObjectName
        },
        Condition = FilterCondition.Contain,
        Operator = FilterOperator.And,
        Value = "283%9534"
    }
}
这在SOAP请求中成为:

<Filter>
    <Field>
        <FieldName>Phone1</FieldName>
        <ObjectName>ContactCurrent: 1</ObjectName>
    </Field>
    <Condition>Contain</Condition>
    <Value xsi:type="xsd:string">283%9534</Value>
    <OpenBrackets>0</OpenBrackets>
    <CloseBrackets>0</CloseBrackets>
    <Operator>And</Operator>
</Filter>
有人知道是否可以使用web服务API实现通配符过滤吗

更新:如果我没有包含ContactSummary.ServiceCommands.EveryContactID命令,%通配符几乎可以工作。它只返回一个与通配符搜索匹配的结果。但我需要匹配的每个结果,这就是为什么我包括EveryContactID

更新2:通配符适用于带有LeadSummary.ServiceCommands.EveryLeadID命令的屏幕CR301000 Lead。这是CR302000中的错误吗


更新3:在接受答案的评论中总结对话,CR301和CR302都应该能够通过带有通配符的联系电话进行过滤,但由于一些未知错误,CR302不能使用通配符

发生这种情况是因为您试图对不属于主视图的字段进行筛选。在CR301000 Lead中,联系人是主要视图,因此您的过滤器工作正常。这里提供了更多的解释:

您的意思是,如果要筛选的字段不是主视图的一部分,我不能使用通配符吗?它与通配符无关;你不能以你想做的方式来过滤这个字段。想象一个销售订单,它有一个标题和细节网格。您可以在表头的任何字段上设置过滤器,但在销售订单明细行上设置的过滤器不会应用于主选择;仅在选择主视图后应用,这不是您想要的。解决方案是创建通用查询并通过web服务使用GI;你的GI在联系表上吗…@tjleigh你和QGate在一起吗?今天早上我通过电子邮件回复了一个类似的询问,我明白。奇怪的是,这与我看到的行为不符。正如我在问题中所说的,当没有通配符时,Contain过滤器似乎工作得很好。只有在使用通配符时,它才会中断。也许我弄错了。。。顺便说一句,我希望我会在周一看到你的电子邮件,谢谢。我已经能够在本地复制这封邮件,但目前还没有解释为什么它在一种情况下有效,而在另一种情况下无效。有一点很清楚,推送到SQL Server的查询的通配符增加了一倍,这表明系统在使用FilterCondition.Contain时为您添加了%——因此您不应该手动将其放在那里。