Как удалить правило отображения из команды ленты в CRM Online?

У меня есть команда для кнопки, определяемой следующим образом:

<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 ответа

Решение

Я бы посчитал это ошибкой в ​​CRM, но чтобы выполнить эту операцию, вы должны удалить команду, а затем опубликовать решение! После удаления команды вы можете удалить правило отображения. Вы не можете сделать это за один шаг!

Если ваша команда особенно сложна, вы можете экспортировать решение, удалить команду, импортировать решение, удалить правило отображения и добавить команду обратно без правила отображения и выполнить импорт.

Ваше решение имеет CommandDefinition который зависит от DisplayRule с идентификатором "new.lead.CreditCheck.DisplayRule". Вы не можете удалить DisplayRule из RibbonDiffXml, пока существует опубликованный и / или неопубликованный компонент в зависимости от него, в этом случае CommandDefinition,

Поэтому вам нужно удалить все ссылки на DisplayRule сначала и затем опубликуйте эти настройки. Сделав это, вы сможете удалить DisplayRule сам.

Та же процедура должна быть выполнена, когда вам нужно удалить устаревший атрибут из сущности:

  1. Удалить атрибут из всех форм, представлений и т. Д.
  2. Опубликовать настройки
  3. Удалить атрибут из модели объекта
  4. Опубликовать настройки

В этом отношении поведение Dynamics CRM выглядит "по замыслу".

Другие вопросы по тегам