Как удалить правило отображения из команды ленты в 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
сам.
Та же процедура должна быть выполнена, когда вам нужно удалить устаревший атрибут из сущности:
- Удалить атрибут из всех форм, представлений и т. Д.
- Опубликовать настройки
- Удалить атрибут из модели объекта
- Опубликовать настройки
В этом отношении поведение Dynamics CRM выглядит "по замыслу".