我在测试环境中预先搜索PhoneCall实体时遇到问题(但在生产环境中也是如此)。我没有使用英文版,所以我会描述一切,而不是截图。
尝试查找定义为非null ToRecipent的所有PhoneCall。
下载FetchXML:
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
<entity name="phonecall">
<attribute name="subject" />
<attribute name="statecode" />
<attribute name="prioritycode" />
<attribute name="scheduledend" />
<attribute name="regardingobjectid" />
<attribute name="rlpl_status" />
<attribute name="directioncode" />
<attribute name="phonenumber" />
<attribute name="ownerid" />
<attribute name="to" />
<order attribute="subject" descending="false" />
<link-entity name="activityparty" from="activityid" to="activityid" alias="aa">
<filter type="and">
<condition attribute="participationtypemask" operator="eq" value="2" />
<condition attribute="partyid" operator="not-null" />
</filter>
</link-entity>
</entity>
</fetch>
而不是结果我可以在网站上看到标准的意外错误。我已经运行了CRM 2011诊断工具来读取那里发生的事情,并在select语句后发现了这个异常:
Microsoft.Crm.Extensibility.InternalOperationPlugin, Microsoft.Crm.ObjectModel, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35; ClassName: Microsoft.Crm.Extensibility.InternalOperationPlugin; Exception: Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Web.Services.Protocols.LogicalMethodInfo.Invoke(Object target, Object[] values)
at Microsoft.Crm.Extensibility.InternalOperationPlugin.Execute(IServiceProvider serviceProvider)
at Microsoft.Crm.Extensibility.V5PluginProxyStep.ExecuteInternal(PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)
Inner Exception: System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.Crm.ObjectModel.CommunicationActivityServiceBase.RetrieveMultiple(EntityExpression entityExpression, ExecutionContext context)
我在数据库上执行了相同的查询,并成功返回了结果。看起来CRM在加载和转换此信息时存在问题。 我在高级搜索电话实体中找到了与另外2个自定义链接实体相同的错误,但其余的看起来很好。
更重要的是...... 我从高级搜索中删除了ToRecipent列,结果显示出来了,但无论我点击它们多少次,我都无法打开它们。
下载FetchXML:
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
<entity name="phonecall">
<attribute name="subject" />
<attribute name="statecode" />
<attribute name="prioritycode" />
<attribute name="scheduledend" />
<attribute name="regardingobjectid" />
<attribute name="rlpl_status" />
<attribute name="directioncode" />
<attribute name="phonenumber" />
<attribute name="ownerid" />
<order attribute="subject" descending="false" />
<link-entity name="activityparty" from="activityid" to="activityid" alias="ab">
<filter type="and">
<condition attribute="participationtypemask" operator="eq" value="2" />
<condition attribute="partyid" operator="not-null" />
</filter>
</link-entity>
</entity>
</fetch>
我甚至删除了除一个以外的所有电话,以确保它与损坏的测试数据无关。仍有例外情况出现。怎么了?
答案 0 :(得分:0)
这是微软,因此通常只有一个好的解决方案解决了问题:#34;关闭 - &gt;打开&#34;。
PhoneCall实体的高级搜索取决于高级搜索视图。
我不知道为什么但数据库中的这个视图被破坏了。
CRM中有一个简单的解决方案可以解决这样的问题。添加任何列以查看,保存,发布,删除此列,保存,发布。我们没有做任何更改,但我们强制服务器在数据库中重建视图。
现在一切都很好。
干杯。