【问题标题】:Wildcard search in Acumatica SOAP API export filterAcumatica SOAP API 导出过滤器中的通配符搜索
【发布时间】:2015-06-18 16:15:32
【问题描述】:

我正在尝试使用 Acumatica 网络服务从屏幕 CR302000(组织 > 客户管理 > 联系人)“导出”。

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

现在我希望过滤的电话号码包含通配符。在 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(引线)。这是 CR302000 中的错误吗?

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

【问题讨论】:

    标签: web-services acumatica


    【解决方案1】:

    发生这种情况是因为您尝试过滤不属于主视图的字段。在 CR301000 (Leads) 中,Contact 主要视图,因此您的过滤器有效。此处提供了更多解释:Using filter with Customer screen in Acumatica API

    【讨论】:

    • 你的意思是如果被过滤的字段不是主视图的一部分,我就不能使用通配符?
    • 与通配符无关;您根本无法在此字段上进行过滤。想象一个具有标题和详细信息网格的销售订单。您可以在标题中的任何字段上设置过滤器,但您在销售订单明细行上设置的过滤器不会应用于主要选择;仅在选择主视图后应用,这不是您想要的。解决方案是创建一个通用查询并通过 Web 服务使用 GI;在联系人表上做你的 GI...
    • @tjleigh 你在 QGate 吗?我今天早上通过电子邮件回复了类似的询问
    • 好的,我明白了。奇怪的是,这与我看到的行为不符。正如我在问题中所说,当没有通配符时,包含过滤器似乎工作得很好。只有在使用通配符时它才会中断。也许我弄错了...(PS,我希望我会在星期一看到你的电子邮件,谢谢)
    • 我已经能够在本地复制它,但目前无法解释为什么它在一种情况下有效,而在另一种情况下无效。有一点很清楚,推送到 SQL Server 的查询加倍了通配符,这表明在使用 FilterCondition.Contain 时系统正在为你添加 % - 所以你永远不应该手动将它放在那里。
    猜你喜欢
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 2017-07-25
    • 1970-01-01
    • 2017-05-01
    • 2021-02-23
    相关资源
    最近更新 更多