Поделиться через


Кнопка на панели команд отображается, когда она должна быть скрыта

Применимо к: Power Apps
Исходный номер базы знаний: 4552163

Определение причины отображения кнопки

Кнопка станет видимой, если все правила включения и правила отображения в команде , связанной с кнопкой, будут иметь значение true. Если это непредвиденное, возможно, что определение команды было переопределено и отсутствуют правила включения или отображения правил, или сами определения правил переопределяются, что приведет к тому, что кнопка будет отображаться, когда вы ожидаете, что она будет скрыта.

Примечание.

Некоторые кнопки не настраиваются. Дополнительные сведения см. в разделе Не настраиваемые кнопки на ленте.

Предупреждение

Не удаляйте Mscrm.HideOnModern правило отображения из команды, чтобы кнопка отображалась в едином интерфейсе. Команды с правилом Mscrm.HideOnModern отображения предназначены для устаревшего интерфейса веб-клиента и не поддерживаются в едином интерфейсе и могут работать неправильно.

  1. Включите средство проверки команд и нажмите кнопку команды для проверки.

  2. В следующем примере показаны две кнопки "Встреча " на странице сетки действий, а одна из них должна быть скрыта.

    Снимок экрана: две кнопки

  3. Перейдите на вкладку Свойства команды , чтобы отобразить сведения о команде для этой кнопки. При этом будут отображаться действия, включить правила и правила, а также результат (True, False, Пропущено) каждой оценки правила. Просмотрите правила включения и отображения правил. Если вы ожидаете, что определенное правило должно иметь значение false, возможно, это правило неправильно настроено или не будут выполнены необходимые условия для возврата ложного результата. Если это так, перейдите к шагу 9. В противном случае возможно, что в команде отсутствует правило или правила, и мы рассмотрим уровни решения команд для дальнейшего анализа.

    Снимок экрана: вкладка

  4. Выберите ссылку Просмотреть уровни решения определения команд под именем команды, чтобы просмотреть решения, в которые было установлено определение команды.

    Снимок экрана: ссылка

  5. В области Уровни решений будет отображаться наложение каждого определения компонентов ленты, установленное определенным решением. Слой в верхней части списка является текущим определением, которое используется приложением. Остальные слои неактивны и в данный момент не используются приложением. Если удаляется первое решение или установлена обновленная версия, которая удаляет определение, то следующий слой станет текущим активным определением, используемым приложением. Если присутствует неуправляемый активный уровень решения, это всегда будет определение, которое использует приложение. Если активное решение отсутствует в списке, то решение, указанное в верхней части списка, будет определением, используемым приложением. Все пользовательские управляемые решения, которые не публикуются корпорацией Майкрософт, также будут иметь приоритет над уровнями решений, опубликованными корпорацией Майкрософт.

    Контекст сущности указывает, на объекте, на который включена настройка ленты. Если в списке указан элемент "Все сущности", то уровень находится из клиентских расширений ленты приложения, а не сущности, в противном случае будет указано логическое имя сущности.

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

    При нажатии кнопки Назад вернется к предыдущему окну средства проверки команд.

    Если существует только один слой решения, перейдите к шагу 9, в противном случае выберите два верхних слоя решения (если у вас есть слой в активном решении, но он не указан в верхней части, выберите активный уровень решения, а затем верхнюю строку) и нажмите сравнить.

    Снимок экрана: выбор двух верхних уровней решения и выбор параметра Сравнить.

  6. Сравнение текущего активного и предыдущего неактивного определения будет отображаться с указанием различий, если таковые есть. В следующем примере показано неуправляемое определение Active, которое было настроено с удалением правила Mscrm.HideOnModern отображения, включенного в неактивный msdynce_ActivitiesPatch уровень решения, опубликованного корпорацией Майкрософт.

    Снимок экрана: сравнение текущего активного и предыдущего неактивного определения.

  7. Подход, необходимый для исправления видимости кнопки, будет зависеть от различных настроек в конкретном сценарии. Если вы определили, что правило неправильно оценивается как false, и если определение правила определено неправильно, следует изменить определение правила и внести изменения, которые позволят правилу оценить значение false при соответствующих обстоятельствах. Если определение правила правильно, то возможно, что требования, которые сделали бы возвращаемое правило false, не выполняются, например значение поля или привилегия безопасности назначены неправильно. В зависимости от определения правила требования могут сильно отличаться. См . раздел Определение правил включения ленты и Определение правил отображения ленты. В нашем примере команда была настроена с удалением Mscrm.HideOnModern правила отображения. Это правило отображения предназначено для скрытия конкретной кнопки от отображения в приложениях единого интерфейса и быть видимым только в устаревшем интерфейсе веб-клиента. Мы могли бы изменить пользовательскую версию команды и добавить отсутствующие Mscrm.HideOnModern правила отображения в определение команды. Так как это пользовательское переопределение опубликованного майкрософт определения и никаких других преднамеренных изменений не существует, рекомендуется удалить эту пользовательскую версию команды, чтобы восстановить функциональные возможности по умолчанию.

Параметры восстановления

Выберите вариант восстановления на одной из вкладок ниже. Первая вкладка выбрана по умолчанию.

Удаление команды

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

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

Выберите один из следующих параметров, который соответствует вашему конкретному сценарию:

Команда находится в неуправляемом активном решении

Чтобы удалить команду на активном неуправляемом уровне решения, мы экспортируем неуправляемое решение, содержащее сущность или ленту приложения, и изменим <RibbonDiffXml> узел в файле customizations.xml, а затем импортируем новую версию этого решения, в котором эта команда была удалена, чтобы удалить компонент. См . статью Экспорт, подготовка к редактированию и импорт ленты.

Команда зависит от сущности

В нашем примере сценария мы определили, что сущность является указателем действия, а команда, которую необходимо удалить, объявлена Mscrm.CreateAppointment на активном неуправляемом уровне решения от издателя DefaultPublisherCITTest.

  1. Откройте Дополнительные параметры.

  2. Перейдите в раздел Параметры ->Решения.

  3. Нажмите кнопку Создать , чтобы создать новое решение, задайте для параметра Publisher значение, показанное в списке уровней решения средства проверки команд для команды и активного уровня решения. (В нашем примере это DefaultPublisherCITTest.

  4. Выберите Сущности>Добавить существующую.

  5. Выберите сущность, для которой определена команда (в нашем примере это точка действия), и нажмите кнопку ОК.

  6. Перед нажатием кнопки Готово снимите флажок Включить метаданные сущности и снимите флажок Добавить все ресурсы.

  7. Нажмите кнопку Сохранить.

  8. Выберите Экспорт решения и экспортируйте неуправляемое решение.

  9. Извлеките файл .zip.

  10. Откройте файлcustomizations.xml .

  11. Найдите дочерний <Entity> узел узла сущности, который вы хотите изменить, и найдите его дочерний <RibbonDiffXml> узел.

  12. <CommandDefinition> Найдите узел (в нашем примере идентификатор <CommandDefinition> узла — Mscrm.CreateAppointment, поэтому мы найдем следующий узел).

    Снимок экрана: расположение узла CommandDefinition.

  13. Измените <RibbonDiffXml> узел и удалите конкретный <CommandDefinition> узел с идентификатором команды, которую вы хотите удалить. Убедитесь, что вы не случайно удалили другие <CommandDefinition> узлы, которые могут присутствовать. (На основе нашего примера мы удалим <CommandDefinition> узел, в котором идентификатором является Mscrm.CreateAppointment.)

    Снимок экрана: пример удаления узла CommandDefinition.

  14. Сохраните файлcustomizations.xml .

  15. Добавьте измененный файлcustomizations.xml обратно в файл .zip решения.

  16. Импортируйте файл решения.

  17. Выберите Опубликовать все настройки.

Команда находится на ленте приложения (применяется к "Все сущности")

Если команда не зависит от сущности, а применяется к "Все сущности", объявленной на ленте приложения, шаги будут немного отличаться следующим образом:

  1. Откройте Дополнительные параметры.
  2. Перейдите в раздел Параметры Решения>
  3. Нажмите кнопку Создать , чтобы создать новое решение, задайте для параметра Publisher значение, показанное в списке уровней решения средства проверки команд для команды и активного уровня решения.
  4. Выберите Расширения> клиентаДобавить существующие>ленты приложений.
  5. Нажмите кнопку Сохранить.
  6. Выберите Экспорт решения и экспортируйте неуправляемое решение.
  7. Извлеките файл .zip.
  8. Откройте файлcustomizations.xml .
  9. Найдите корневой <RibbonDiffXml> узел.
  10. Найдите .<CommandDefinition>
  11. Измените <RibbonDiffXml> узел и удалите <CommandDefinition> узел с идентификатором команды, которую требуется удалить. Убедитесь, что вы не случайно удалили другие <CommandDefinition> узлы, которые могут присутствовать.
  12. Сохраните файлcustomizations.xml .
  13. Добавьте измененный файлcustomizations.xml обратно в сжатый файл решения .zip.
  14. Импортируйте файл решения.
  15. Выберите Опубликовать все настройки.
Команда получена из пользовательского управляемого решения, которое создала моя компания.

Чтобы удалить команду, установленную созданным пользовательским управляемым решением, выполните следующие действия.

  1. В отдельной организации разработки, которая имеет неуправляемую исходную версию пользовательского решения, выполните описанные выше действия для команды в неуправляемом активном решении .
  2. Увеличьте версию пользовательского решения.
  3. Экспорт решения как управляемого.
  4. В отдельной затронутой организации импортируйте эту новую версию пользовательского решения.
Команда получена из пользовательского управляемого решения, которое моя компания не создала (из стороннего или независимого поставщика программного обеспечения).

Чтобы удалить команду, установленную пользовательским управляемым решением, которое было создано сторонним поставщиком или поставщиком программного обеспечения, необходимо обратиться к автору решения и запросить новую версию решения, которое удалило определение конкретной команды, а затем установить это новое решение в затронутой организации.