【问题标题】:How to find unused/non-dependent fields of any entity in CRM 2011?如何在 CRM 2011 中查找任何实体的未使用/非依赖字段?
【发布时间】:2013-06-09 14:24:48
【问题描述】:

我正在尝试识别 Microsoft Dynamics CRM 2011 中任何 实体 的未使用或非依赖字段。未使用或非依赖是指未在任何实体表单中使用的字段。

我在谷歌上搜索过相同的主题,但没有得到想要的结果。我遇到的一个链接也没有解决这个问题: Finding unused CRM fields

【问题讨论】:

  • 我现在在飞机上,或者我会尝试为你深入研究,但看起来这就是你要找的东西:stackoverflow.com/questions/7926164/… ... in总之,您使用检索依赖项请求来检查是否有任何属性没有依赖项。
  • 谢谢,但这不是我要找的。实际上,RetrieveDependenciesForDeleteRequest 返回解决方案组件的所有依赖项列表,这些依赖项可能会阻止删除解决方案组件。这与问题中提到的对实体的字段依赖无关。
  • 相反,确实如此,我只是措辞不佳:)。我很快就会在这里发布答案。

标签: dynamics-crm-2011 dynamics-crm


【解决方案1】:

首先我应该注意,仅检查一个字段是否不在表单上并不意味着它没有在某处使用。如果您有第三方集成或在实体上运行的其他逻辑,则可能会更新隐藏字段。如果您不确定是否为某个属性存储了数据,您可以在您的条件是该属性不为空的情况下执行检索请求。如果没有返回,则没有为该属性存储数据。

假设这已经很清楚了,您想要做的是利用 Dynamics CRM 的 Dependency Tracking 来检查各个属性的依赖关系。

这是关于 CRM 2011 依赖跟踪的完整文章:http://msdn.microsoft.com/en-us/library/gg309749.aspx

听起来最像您正在寻找的请求是RetrieveDependentComponentsRequest。根据您要查找的内容和文档,此请求似乎是最接近的匹配项:

返回直接依赖于解决方案组件的解决方案组件的依赖项列表。 例如,当您将此消息用于全局选项集解决方案组件时,将返回代表任何选项集属性的解决方案组件的相关性记录,这些选项集属性引用全局选项集解决方案组件。 当您将此消息用于帐户实体的解决方案组件记录时,将返回表示用于该实体的属性、视图和表单的所有解决方案组件的依赖关系记录。

然后,完成您正在寻找的基本步骤将是:

  1. 执行RetrieveEntityRequest 以检索特定实体的所有属性
  2. 对于响应中的每个属性,执行RetreiveDependentComponentsRequest,您将ObjectId 设置为属性的MetadataId,并将ComponentType 设置为2(属性)。
  3. 解析响应中的EntityCollection 属性,查看是否有任何依赖项的ComponentType 为24(表单)。

【讨论】:

  • 请分享特定于我要求的示例代码,以获取实体的所有未使用字段。
  • @FSX 由于编写代码需要花费大量时间,我直接没有时间为您编写整个解决方案。我会更新我的答案,以便更清楚地了解我将在您的情况下采取的确切步骤。
  • 感谢您的帮助。至少现在我有一些更好的想法如何做到这一点。此外,表单也可以是 SystemForm 类型,值为 60。正确吗?
  • @FSX 看起来是正确的。我看到 SystemForm 作为常规实体在 API 上公开,因此您应该能够通过查询在依赖请求结果中传回的 Id 来检索它的名称。
  • @GotDibbs - 很好的总结,MSDN 文档没有提到 MetadataId 和 SolutionComponentId 是可互换的,这让我陷入了困境。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-12
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多