Кнопка на панели команд отображается, когда она должна быть скрыта
Статья
Применимо к: Power Apps Исходный номер базы знаний: 4552163
Определение причины отображения кнопки
Кнопка станет видимой, если все правила включения и правила отображения в команде , связанной с кнопкой, будут иметь значение true. Если это непредвиденное, возможно, что определение команды было переопределено и отсутствуют правила включения или отображения правил, или сами определения правил переопределяются, что приведет к тому, что кнопка будет отображаться, когда вы ожидаете, что она будет скрыта.
Не удаляйте Mscrm.HideOnModern правило отображения из команды, чтобы кнопка отображалась в едином интерфейсе. Команды с правилом Mscrm.HideOnModern отображения предназначены для устаревшего интерфейса веб-клиента и не поддерживаются в едином интерфейсе и могут работать неправильно.
В следующем примере показаны две кнопки "Встреча " на странице сетки действий, а одна из них должна быть скрыта.
Перейдите на вкладку Свойства команды , чтобы отобразить сведения о команде для этой кнопки. При этом будут отображаться действия, включить правила и правила, а также результат (True, False, Пропущено) каждой оценки правила. Просмотрите правила включения и отображения правил. Если вы ожидаете, что определенное правило должно иметь значение false, возможно, это правило неправильно настроено или не будут выполнены необходимые условия для возврата ложного результата. Если это так, перейдите к шагу 9. В противном случае возможно, что в команде отсутствует правило или правила, и мы рассмотрим уровни решения команд для дальнейшего анализа.
Выберите ссылку Просмотреть уровни решения определения команд под именем команды, чтобы просмотреть решения, в которые было установлено определение команды.
В области Уровни решений будет отображаться наложение каждого определения компонентов ленты, установленное определенным решением. Слой в верхней части списка является текущим определением, которое используется приложением. Остальные слои неактивны и в данный момент не используются приложением. Если удаляется первое решение или установлена обновленная версия, которая удаляет определение, то следующий слой станет текущим активным определением, используемым приложением. Если присутствует неуправляемый активный уровень решения, это всегда будет определение, которое использует приложение. Если активное решение отсутствует в списке, то решение, указанное в верхней части списка, будет определением, используемым приложением. Все пользовательские управляемые решения, которые не публикуются корпорацией Майкрософт, также будут иметь приоритет над уровнями решений, опубликованными корпорацией Майкрософт.
Контекст сущности указывает, на объекте, на который включена настройка ленты. Если в списке указан элемент "Все сущности", то уровень находится из клиентских расширений ленты приложения, а не сущности, в противном случае будет указано логическое имя сущности.
При наличии двух или нескольких слоев можно выбрать две строки и выбрать Сравнить , чтобы просмотреть сравнение определений, внесенных в каждое решение.
При нажатии кнопки Назад вернется к предыдущему окну средства проверки команд.
Если существует только один слой решения, перейдите к шагу 9, в противном случае выберите два верхних слоя решения (если у вас есть слой в активном решении, но он не указан в верхней части, выберите активный уровень решения, а затем верхнюю строку) и нажмите сравнить.
Сравнение текущего активного и предыдущего неактивного определения будет отображаться с указанием различий, если таковые есть. В следующем примере показано неуправляемое определение Active, которое было настроено с удалением правила Mscrm.HideOnModern отображения, включенного в неактивный msdynce_ActivitiesPatch уровень решения, опубликованного корпорацией Майкрософт.
Подход, необходимый для исправления видимости кнопки, будет зависеть от различных настроек в конкретном сценарии. Если вы определили, что правило неправильно оценивается как false, и если определение правила определено неправильно, следует изменить определение правила и внести изменения, которые позволят правилу оценить значение false при соответствующих обстоятельствах. Если определение правила правильно, то возможно, что требования, которые сделали бы возвращаемое правило false, не выполняются, например значение поля или привилегия безопасности назначены неправильно. В зависимости от определения правила требования могут сильно отличаться. См . раздел Определение правил включения ленты и Определение правил отображения ленты. В нашем примере команда была настроена с удалением Mscrm.HideOnModern правила отображения. Это правило отображения предназначено для скрытия конкретной кнопки от отображения в приложениях единого интерфейса и быть видимым только в устаревшем интерфейсе веб-клиента. Мы могли бы изменить пользовательскую версию команды и добавить отсутствующие Mscrm.HideOnModern правила отображения в определение команды. Так как это пользовательское переопределение опубликованного майкрософт определения и никаких других преднамеренных изменений не существует, рекомендуется удалить эту пользовательскую версию команды, чтобы восстановить функциональные возможности по умолчанию.
Параметры восстановления
Выберите вариант восстановления на одной из вкладок ниже. Первая вкладка выбрана по умолчанию.
Если есть другой уровень решения, содержащий рабочее определение этой команды, вы можете удалить это определение, чтобы восстановить следующее неактивное рабочее определение.
Если это единственный слой и вам больше не нужна команда, его можно удалить из решения, если ни один из других кнопок не ссылается на команду.
Выберите один из следующих параметров, который соответствует вашему конкретному сценарию:
Команда находится в неуправляемом активном решении
Чтобы удалить команду на активном неуправляемом уровне решения, мы экспортируем неуправляемое решение, содержащее сущность или ленту приложения, и изменим <RibbonDiffXml> узел в файле customizations.xml, а затем импортируем новую версию этого решения, в котором эта команда была удалена, чтобы удалить компонент. См . статью Экспорт, подготовка к редактированию и импорт ленты.
Команда зависит от сущности
В нашем примере сценария мы определили, что сущность является указателем действия, а команда, которую необходимо удалить, объявлена Mscrm.CreateAppointment на активном неуправляемом уровне решения от издателя DefaultPublisherCITTest.
Откройте Дополнительные параметры.
Перейдите в раздел Параметры ->Решения.
Нажмите кнопку Создать , чтобы создать новое решение, задайте для параметра Publisher значение, показанное в списке уровней решения средства проверки команд для команды и активного уровня решения. (В нашем примере это DefaultPublisherCITTest.
Выберите Сущности>Добавить существующую.
Выберите сущность, для которой определена команда (в нашем примере это точка действия), и нажмите кнопку ОК.
Перед нажатием кнопки Готово снимите флажок Включить метаданные сущности и снимите флажок Добавить все ресурсы.
Нажмите кнопку Сохранить.
Выберите Экспорт решения и экспортируйте неуправляемое решение.
Извлеките файл .zip.
Откройте файлcustomizations.xml .
Найдите дочерний <Entity> узел узла сущности, который вы хотите изменить, и найдите его дочерний <RibbonDiffXml> узел.
<CommandDefinition> Найдите узел (в нашем примере идентификатор <CommandDefinition> узла — Mscrm.CreateAppointment, поэтому мы найдем следующий узел).
Измените <RibbonDiffXml> узел и удалите конкретный <CommandDefinition> узел с идентификатором команды, которую вы хотите удалить. Убедитесь, что вы не случайно удалили другие <CommandDefinition> узлы, которые могут присутствовать. (На основе нашего примера мы удалим <CommandDefinition> узел, в котором идентификатором является Mscrm.CreateAppointment.)
Сохраните файлcustomizations.xml .
Добавьте измененный файлcustomizations.xml обратно в файл .zip решения.
Импортируйте файл решения.
Выберите Опубликовать все настройки.
Команда находится на ленте приложения (применяется к "Все сущности")
Если команда не зависит от сущности, а применяется к "Все сущности", объявленной на ленте приложения, шаги будут немного отличаться следующим образом:
Откройте Дополнительные параметры.
Перейдите в раздел Параметры Решения>
Нажмите кнопку Создать , чтобы создать новое решение, задайте для параметра Publisher значение, показанное в списке уровней решения средства проверки команд для команды и активного уровня решения.
Выберите Экспорт решения и экспортируйте неуправляемое решение.
Извлеките файл .zip.
Откройте файлcustomizations.xml .
Найдите корневой <RibbonDiffXml> узел.
Найдите .<CommandDefinition>
Измените <RibbonDiffXml> узел и удалите <CommandDefinition> узел с идентификатором команды, которую требуется удалить. Убедитесь, что вы не случайно удалили другие <CommandDefinition> узлы, которые могут присутствовать.
Сохраните файлcustomizations.xml .
Добавьте измененный файлcustomizations.xml обратно в сжатый файл решения .zip.
Импортируйте файл решения.
Выберите Опубликовать все настройки.
Команда получена из пользовательского управляемого решения, которое создала моя компания.
Чтобы удалить команду, установленную созданным пользовательским управляемым решением, выполните следующие действия.
В отдельной организации разработки, которая имеет неуправляемую исходную версию пользовательского решения, выполните описанные выше действия для команды в неуправляемом активном решении .
Увеличьте версию пользовательского решения.
Экспорт решения как управляемого.
В отдельной затронутой организации импортируйте эту новую версию пользовательского решения.
Команда получена из пользовательского управляемого решения, которое моя компания не создала (из стороннего или независимого поставщика программного обеспечения).
Чтобы удалить команду, установленную пользовательским управляемым решением, которое было создано сторонним поставщиком или поставщиком программного обеспечения, необходимо обратиться к автору решения и запросить новую версию решения, которое удалило определение конкретной команды, а затем установить это новое решение в затронутой организации.
Добавление отсутствующих правил включения и отображения в команду
Если в команде есть изменения, которые необходимо сохранить, но вы по-прежнему хотите, чтобы кнопка была скрыта при соответствующих обстоятельствах, вы можете добавить отсутствующие правила включения и отображения в команду, а не удалять пользовательское определение.
Выберите один из следующих параметров, который соответствует вашему конкретному сценарию:
Команда находится в неуправляемом активном решении
Если вы определили, что правила включения и отображения отсутствуют в определении команды, можно изменить <CommandDefinition> узел и добавить правила для достижения требуемого поведения. Чтобы исправить команду на уровне активного неуправляемого решения, мы экспортируем неуправляемое решение, содержащее сущность или ленту приложения, и отредактируем <RibbonDiffXml> узел в файлеcustomizations.xml , а затем импортируем новую версию этого решения, содержащую фиксированное определение команды. См . статью Экспорт, подготовка к редактированию и импорт ленты.
Команда зависит от сущности
На основе нашего примера сценария мы определили, что сущность является указателем действия, а команда, которую необходимо исправить, объявлена Mscrm.CreateAppointment на активном неуправляемом уровне решения от издателя DefaultPublisherCITTest.
Откройте Дополнительные параметры.
Перейдите в раздел Параметры>Решения.
Нажмите кнопку Создать , чтобы создать новое решение, задайте для параметра Publisher значение, показанное в списке уровней решения средства проверки команд для команды и активного уровня решения. (В нашем примере это DefaultPublisherCITTest)
Выберите Сущности>Добавить существующую.
Выберите сущность, для которой определена команда (в нашем примере это точка действия), и нажмите кнопку ОК.
Перед нажатием кнопки Готово снимите флажки Включить метаданные сущности и Добавить все ресурсы.
Нажмите кнопку Сохранить.
Выберите Экспорт решения и экспортируйте неуправляемое решение.
Извлеките файл .zip.
Откройте файлcustomizations.xml .
Найдите дочерний <Entity> узел узла сущности, который требуется изменить, и найдите его дочерний <RibbonDiffXml> узел.
<CommandDefinition> Найдите узел. В примере идентификатор <CommandDefinition> узла — Mscrm.CreateAppointment. Таким образом, можно найти следующий узел:
Измените <RibbonDiffXml> узел и внесите необходимые изменения в <CommandDefinition> узел, которые позволят команде правильно работать при правильных обстоятельствах, чтобы исправить команду. Дополнительные сведения о том, как объявлять команды, см. в разделе Определение команд ленты. (В нашем примере мы изменим <CommandDefinition> узел, добавив Mscrm.HideOnModern правило отображения, которое правильно скрывает эту кнопку.)
Восстановите измененный файлcustomizations.xml в файл .zip решения.
Импортируйте файл решения.
Выберите Опубликовать все настройки.
Команда находится на ленте приложения (применяется к "Все сущности")
Если команда не зависит от сущности, а применяется к "Все сущности", объявленной на ленте приложения, шаги будут немного отличаться следующим образом:
Откройте Дополнительные параметры.
Перейдите в раздел Параметры>Решения.
Нажмите кнопку Создать , чтобы создать новое решение, задайте для параметра Publisher значение, показанное в списке уровней решения средства проверки команд для команды и активного уровня решения.
Выберите Экспорт решения и экспортируйте неуправляемое решение.
Извлеките файл .zip.
Откройте файлcustomizations.xml .
Найдите корневой <RibbonDiffXml> узел.
Найдите .<CommandDefinition>
Измените <RibbonDiffXml> и внесите необходимые изменения в <CommandDefinition> узел, что позволит команде правильно работать при правильных обстоятельствах для исправления команды. Дополнительные сведения о том, как объявлять команды, см. в разделе Определение команд ленты.
Добавьте измененный файлcustomizations.xml обратно в файл .zip решения.
Импортируйте файл решения.
Выберите Опубликовать все настройки.
Команда из пользовательского управляемого решения, которое я создал
Чтобы исправить команду, установленную созданным пользовательским управляемым решением, выполните следующие действия.
В отдельной организации разработки, которая имеет неуправляемую исходную версию пользовательского решения, выполните описанные выше действия для команды в неуправляемом активном решении .
Увеличьте версию пользовательского решения.
Экспорт решения как управляемого.
В отдельной затронутой организации импортируйте эту новую версию пользовательского решения.
Команда получена из пользовательского управляемого решения, которое я не создал или моя организация не владеет (т. е. из стороннего или независимого поставщика программного обеспечения).
Чтобы исправить команду, установленную пользовательским управляемым решением, созданным сторонним поставщиком или поставщиком программного обеспечения, необходимо обратиться к автору решения и запросить новую версию решения, содержащую определение фиксированной команды, и установить это новое решение в затронутой организации.
Команда находится в решении, опубликованном корпорацией Майкрософт
Чтобы исправить команду, установленную опубликованным управляемым решением Майкрософт, может потребоваться установить более новую версию решения, что обычно выполняется во время обновления выпуска. Возможно, вы определили ошибку, которую по-прежнему необходимо исправить. Обратитесь за помощью в службу поддержки клиентов.
Исправление правила включения и отображения
Выберите ссылку Просмотр уровней решения определения правила под именем правила, чтобы просмотреть решения, в которые было установлено определение правила.
В области Уровни решений будет отображаться наложение каждого определения компонентов ленты, установленное определенным решением. Слой в верхней части списка является текущим определением, которое используется приложением. Остальные слои неактивны и в данный момент не используются приложением. Если удаляется первое решение или установлена обновленная версия, которая удаляет определение, то следующий слой станет текущим активным определением, используемым приложением. Если присутствует неуправляемый активный уровень решения, это всегда будет определение, которое использует приложение. Если активное решение отсутствует в списке, то решение, указанное в верхней части списка, будет определением, используемым приложением. Все пользовательские управляемые решения, которые не публикуются корпорацией Майкрософт, также будут иметь приоритет над уровнями решений, опубликованными корпорацией Майкрософт.
Контекст сущности указывает, на объекте, на который включена настройка ленты. Если в списке указан элемент "Все сущности", то уровень находится из клиентских расширений ленты приложения, а не сущности, в противном случае будет указано логическое имя сущности.
При наличии двух или нескольких слоев можно выбрать две строки и выбрать Сравнить , чтобы просмотреть сравнение определений, внесенных в каждое решение.
При нажатии кнопки Назад вернется к предыдущему окну средства проверки команд.
На следующем рисунке показаны уровни решений для правила включения в нашем примере и указано, что в данном случае существует один уровень решения и что это неуправляемая настройка, обозначенная решением с именем Active. Фактический сценарий может отличаться, вы не можете быть активным уровнем решения, у вас может быть управляемое решение, и имя этого решения будет указано здесь.
Теперь, когда мы изучили уровни решений и определили решение, в котором установлена настройка, необходимо исправить определение в соответствующем решении.
Выберите один из следующих параметров, который соответствует вашему конкретному сценарию:
Правило включения и отображения находится в неуправляемом активном решении
Чтобы исправить правило включения и отображения на активном неуправляемом уровне решения, мы экспортируем неуправляемое решение, содержащее сущность или ленту приложения, и отредактируем <RibbonDiffXml> узел в файлеcustomizations.xml, а затем импортируем новую версию этого решения, содержащую фиксированное определение правила включения и отображения. См . статью Экспорт, подготовка к редактированию и импорт ленты.
Правило включения и отображения зависит от сущности
На основе нашего примера сценария мы определили, что сущность является контактом , и правило включения, которое необходимо исправить, — и new.contact.EnableRule.EntityRule оно объявляется на уровне активного неуправляемого решения от издателя с именем DefaultPublisherCITTest.
Откройте Дополнительные параметры.
Перейдите в раздел Параметры>Решения.
Нажмите кнопку Создать , чтобы создать новое решение, присвойте параметру Publisher значение, которое отображается в списке уровней решения средства проверки команд для правила включения и активного уровня решения. (В нашем примере это DefaultPublisherCITTest)
Выберите Сущности>Добавить существующую.
Выберите сущность, в котором определено правило включения и отображения (в нашем примере это контакт), и нажмите кнопку ОК.
Перед нажатием кнопки Готово снимите флажки Включить метаданные сущности и Добавить все ресурсы.
Нажмите кнопку Сохранить.
Выберите Экспорт решения и экспортируйте неуправляемое решение.
Извлеките файл .zip.
Откройте файлcustomizations.xml .
Найдите дочерний <Entity> узел узла сущности, который вы хотите изменить, и найдите его дочерний <RibbonDiffXml> узел.
Найдите правило включения и отображения. В примере идентификатором правила включения является new.contact.EnableRule.EntityRule. Таким образом, можно найти следующий узел:
Измените <RibbonDiffXml> узел и внесите необходимые изменения в правило включения и отображения, которые позволят правилу при правильных обстоятельствах оценить значение True для исправления правила. Дополнительные сведения об объявлении правил см. в разделах Определение правил включения ленты и Определение правил отображения ленты. (На основе нашего примера мы изменим определение правила на следующее)
Добавьте измененный файлcustomizations.xml обратно в файл .zip решения.
Импортируйте файл решения.
Выберите Опубликовать все настройки.
Правило включения и отображения находится на ленте приложения (применяется к "Все сущности")
Если правило включения и отображения не относится к сущностям, а относится к "Все сущности", объявленным на ленте приложения, то действия будут немного отличаться следующим образом:
Откройте Дополнительные параметры.
Перейдите в раздел Параметры>Решения.
Выберите Создать , чтобы создать новое решение, присвойте параметру Publisher значение, показанное в списке уровней решения средства проверки команд для правила включения и отображения и уровня активного решения.
Выберите Экспорт решения и экспортируйте неуправляемое решение.
Извлеките файл .zip.
Откройте файлcustomizations.xml .
Найдите корневой <RibbonDiffXml> узел.
Найдите правило включения и отображения.
Измените <RibbonDiffXml> узел и внесите необходимые изменения в правило включения и отображения, которые позволят правилу при правильных обстоятельствах оценить значение True для исправления правила. Дополнительные сведения об объявлении правил см. в разделах Определение правил включения ленты и Определение правил отображения ленты.
Добавьте измененный файлcustomizations.xml обратно в файл .zip решения.
Импортируйте файл решения.
Выберите Опубликовать все настройки.
Правило включения и отображения из пользовательского управляемого решения, которое я создал
Чтобы исправить правило включения и отображения, установленное созданным пользовательским управляемым решением, выполните следующие действия.
В отдельной организации разработки, которая имеет неуправляемую исходную версию настраиваемого решения, выполните описанные выше действия для параметра Включение и отображение правила находится в неуправляемом активном решении .
Увеличьте версию пользовательского решения.
Экспорт решения как управляемого.
В отдельной затронутой организации импортируйте эту новую версию пользовательского решения.
Правило включения и отображения используется в пользовательском управляемом решении, которое я не создал или моя организация не владеет (от стороннего или независимого поставщика программного обеспечения).
Чтобы исправить правило включения и отображения, установленное пользовательским управляемым решением, которое было создано сторонним поставщиком или поставщиком программного обеспечения, необходимо обратиться к автору решения и запросить новую версию решения, содержащую фиксированное определение правила включения и отображения, и установить это новое решение в затронутой организации.
Правило включения и отображения находится в управляемом решении Майкрософт, опубликованном
Чтобы исправить правило включения и отображения, установленное опубликованным управляемым решением Майкрософт, может потребоваться установить более новую версию решения, что обычно выполняется во время обновления выпуска. Возможно, вы определили ошибку, которую по-прежнему необходимо исправить. Обратитесь за помощью в службу поддержки клиентов.