如何从CRM Online中的功能区命令中删除显示规则?

时间:2015-05-26 17:46:01

标签: dynamics-crm-online dynamics-crm-2015

我有一个按钮的命令,定义如下:

<CommandDefinition Id="new.lead.CreditCheck.Command">
    <EnableRules>
        <EnableRule Id="new.lead.CreditCheck.EnableRule" />
    </EnableRules>
    <DisplayRules>
        <DisplayRule Id="new.lead.CreditCheck.DisplayRule" />
    </DisplayRules>
    <Actions>
        <JavaScriptFunction FunctionName="new.LeadDynamic.creditCheck" Library="$webresource:new_Lead_dyn.js" />
    </Actions>
</CommandDefinition>

如果我从命令中删除显示规则,(但保留实际的显示规则定义),它看起来像这样:

<CommandDefinition Id="new.lead.CreditCheck.Command">
    <EnableRules>
        <EnableRule Id="new.lead.CreditCheck.EnableRule" />
    </EnableRules>
    <DisplayRules />
    <Actions>
        <JavaScriptFunction FunctionName="new.LeadDynamic.creditCheck" Library="$webresource:new_Lead_dyn.js" />
    </Actions>
</CommandDefinition>

尝试导入时出错(尝试使用Ribbon Workbench并同样出错)

  

功能区项'new.lead.CreditCheck.Command'依赖于   

我正在尝试删除依赖项,但显然我无法删除它,因为它存在!我错过了什么?

2 个答案:

答案 0 :(得分:1)

我认为这是CRM中的一个错误,但为了执行此操作,您必须删除该命令,然后发布解决方案!删除该命令后,您可以删除该命令显示规则。你不能一步到位!

如果您的命令特别复杂,您可以导出解决方案,删除命令,导入解决方案,删除显示规则并添加不带显示规则和导入的命令。

答案 1 :(得分:0)

您的解决方案的CommandDefinition取决于具有ID“new.lead.CreditCheck.DisplayRule”的DisplayRule。只要有已发布和/或未发布的组件,就不能从RibbonDiffXml中删除DisplayRule,在这种情况下为CommandDefinition

因此,您需要先删除对DisplayRule的所有引用,然后发布这些自定义项。完成此操作后,您应该能够删除DisplayRule本身。

当您需要从实体中删除过时的属性时,必须遵循相同的过程:

  1. 从所有表单,视图等中删除该属性。
  2. 发布自定义
  3. 从实体模型中删除属性
  4. 发布自定义
  5. 在这方面,Dynamics CRM的行为是i.m.o. '按设计'。