【问题标题】:Retrieve query for time range (FetchXML/QueryExpression)检索时间范围的查询 (FetchXML/QueryExpression)
【发布时间】:2012-11-19 07:32:04
【问题描述】:

(抱歉英语不好) 我有一个应用程序,它使用 MS-CRM 2011 Web 服务来检索 crm 实体上的最后更改。此应用程序与 Windows Mobile 设备同步最后的数据更改。 同步操作每 20 分钟定期发生一次。在每个同步操作中,我想通过检查实体“modifiedon”字段来检索先前更新中发生的更改。 问题是,CRM 查询不使用 DateTime 对象的时间片段,并且从传递的 DateTime 参数开始的所有更改都被返回。

我会检查 FetchXML 和 QueryExpression,没有什么不同。 有什么方法可以创建在 Crm WebService 上运行的查询,返回指定日期和时间的修改记录?

示例(我的 FetchXml):

<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
<entity name='new_brand'>
<attribute name='new_brandname' />
<attribute name='new_pdanumber' />
<filter type='and'>
<condition attribute='modifiedon' operator='on-or-after' value='2012/11/12 23:59'/>
</filter>
</entity>
</fetch>

请参阅在代码中,我想要从 2012/11/12 23:00 开始修改的所有实体,但 crm 返回从 2012/11/12 00:00 开始的所有修改记录。

【问题讨论】:

    标签: datetime dynamics-crm-2011 fetchxml


    【解决方案1】:

    您的代码正在查找在 23:59 或之后更改的记录...您记录的结果听起来正确。

    在任何情况下, 都使用了时间部分,但我怀疑您看到的是用户时间与通用时间的结果。如果用户时区偏移量!= 0,则用户在 UI 中选择的午夜将不同于存储在数据库中的值,即 UST 等效值。

    【讨论】:

    • 感谢您的回复。 '23:59' 是一个示例,显示 CRM 不使用时间,并且在此时间之前(在选定日期)更改的所有记录都将返回。我需要一个可以在一天内两次修改实体的查询(或高级查找)。 (在之前的示例中,在 2012/11/12 00:00 到 2012/11/12 23:58 之间更改的实体不应出现在结果集中)
    • 可能我必须创建一个自定义工作流并为我的实体创建一个新字段(如 ModifiedOnTicks),当实体 'modifiedon' 字段更改时,工作流运行并计算其值 Ticks 并存储在该字段上, 但似乎这会变成一个循环。
    • 关于时间被忽略的说法是对的 (see here)。关于维护 Ticks - 如果您将其放入预创建和预更新插件中,您可以将值作为事务的一部分注入,从而不会导致后续更新,希望这是有道理的......!
    • 假设您在自定义代码中的另一个选项是在 .Net 中再次过滤您的结果 CRM 返回忽略时间的结果?
    • 是的。也许最好在 .Net 中过滤结果,我可以按 ModifiedOn 字段对结果进行排序,并将实体一个一个添加到我的集合中,直到下一个实体 ModifiedOn 从请求的时间过去,谢谢
    【解决方案2】:

    我现在和最老的 Dynamics CRM 2011 组织也有同样的问题。比较时或之后不比较时间,只比较日期。尝试使用 grater 或等于(fetchxml 中的“ge”)。

    【讨论】:

    • 我们在Entity中新增了一个字段(称为ModifiedOnTick),并在该字段中记录了固定日期(2011-01-01)的毫秒时间差。
    【解决方案3】:

    我们为实体添加了一个新字段(称为 ModifiedOnTick),并在该字段中记录了固定日期(2011-01-01)的时间差(毫秒)。

    【讨论】:

      猜你喜欢
      • 2012-02-29
      • 1970-01-01
      • 2021-08-17
      • 2015-06-06
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-26
      相关资源
      最近更新 更多