我们的一个程序允许用户通过选择一个视图然后点击功能区按钮来批量插入相关记录。保存表单,设置标志,然后插件完成其工作。
我们使用带有视图选择器的子网格来让用户动态选择或创建自己的视图。选择视图后,将显示结果数(提供 lte 5k)。
当插件运行相同的 fetchxml 服务器端(检索用户查询或保存查询,然后检索 + FetchExpression)时,结果会发生变化。我们不仅得到不同数量的记录,而且一些记录也不同。
我们得出结论,这个问题与时区有关。一些过滤器包括“on-or-after”运算符以及日期值。例子:
<filter type="and">
<condition attribute="modifiedon" operator="on-or-after" value="2011-01-01" />
<condition attribute="modifiedon" operator="on-or-before" value="2011-12-31" />
</filter>
该插件以管理员身份运行。更改插件用户没有效果 - 就好像在使用 FetchExpression 从 CRM 中提取记录时不考虑当前用户时区一样。
如何确保 fetchxml 表达式在客户端和服务器端返回相同的结果?
可能相关:MSDN 线程。
谢谢你的时间。
编辑:按照 Daryl 的建议,我运行了 SQL 跟踪。结果令人费解。客户端查询的日期正确偏移(从 CRM 运行,即高级查找) - 这意味着使用用户的时区设置正确翻译了 fetchxml。对于服务器端的相同查询,这不会发生;输出 SQL 包含“原样”的日期过滤器,没有时区偏移。我假设无论查询执行上下文的来源如何,都会发生相同的翻译。
编辑 2:隐藏代码区域中的标志(我最后的调试手段)阻止插件在运行用户的上下文中实例化服务。现在一切运行良好。感谢大家的时间和帮助,非常感谢。