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


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

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

Определение причины скрытия кнопки

Кнопка может быть скрыта из-за правила включения или отображения правила в команде , связанной с тем, что кнопка имеет значение false. Возможно, связанная Mscrm.HideOnModern команда содержит правило отображения, которое скрывает кнопку в приложениях единого интерфейса. Можно также создать свойство HideCustomAction , которое приведет к скрытию кнопки. Если пользователь находится в автономном режиме, пользовательские команды и команды по умолчанию без Mscrm.IsEntityAvailableForUserInMocaOffline правила включения не будут отображаться.

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

  • Любое правило отображения типа EntityPrivilegeRule со значением PrivilegeType одного из следующих значений (Create, Write, Delete, Assign, Share) будет иметь значение false, если для сущности включен параметр Только для чтения в мобильном приложении , что приведет к тому, что сущность будет разрешать только право на чтение . Примеры некоторых из наиболее распространенных системных правил по умолчанию, которые будут оцениваться как false, если флаг только для чтения в мобильном устройстве включен для сущности, приведены ниже, но не ограничиваются только этим списком (Mscrm.CreateSelectedEntityPermission, Mscrm.CanWriteSelectedMscrm.CanWritePrimaryMscrm.CanSavePrimaryMscrm.WritePrimaryEntityPermissionMscrm.WriteSelectedEntityPermission, ). Mscrm.ShareSelectedEntityPermissionMscrm.CanDeletePrimaryMscrm.DeletePrimaryEntityPermissionMscrm.DeleteSelectedEntityPermissionMscrm.AssignSelectedEntityPermissionMscrm.SharePrimaryPermission Вы можете изменить сущность и снять флажок Только для чтения на мобильном устройстве , чтобы разрешить этим правилам оценивать значение true, при условии, что привилегии, тестируемые правилом, также предоставляются пользователю.
  • Не удаляйте Mscrm.HideOnModern правило отображения из команды, чтобы кнопка отображалась в едином интерфейсе. Команды с правилом Mscrm.HideOnModern отображения предназначены для устаревшего интерфейса веб-клиента и не поддерживаются в едином интерфейсе и могут работать неправильно.
  1. Включите средство проверки команд и нажмите кнопку команды для проверки.

  2. В следующем примере показана кнопка Создать на странице сетки сущности контакта, которая не отображается и представлена элементом с меткой New (hidden).

    Примечание.

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

    Снимок экрана: кнопка

    Примечание.

    Если кнопка по-прежнему скрыта, когда все правила имеют значение True, это может быть связано с контекстно-чувствительными командами в сетках. При выборе записей в сетке все кнопки без SelectionCountRule элемента будут считаться не относящимися к выбранным записям. И они скрыты, даже если их оценка правила имеет значение True. Обратите внимание, что всплывающие элементы не затрагиваются, так как дочерние элементы всплывающего меню могут по-прежнему иметь команды на основе записей.

  3. Перейдите на вкладку Свойства команды , чтобы отобразить сведения о команде для этой кнопки. При этом будут показаны правила включения и правила отображения, а также результат (True, False, Пропущено) каждой оценки правила. В следующем примере показана команда кнопки Создать (скрытая) и Mscrm.NewRecordFromGrid есть правило включения с именем new.contact.EnableRule.EntityRuleFalse. В результате кнопка будет скрыта.

    Снимок экрана: сведения о свойствах команды для кнопки Создать (скрытая).

  4. new.contact.EnableRule.EntityRule Разверните правило включения, щелкнув значок шеврона, чтобы просмотреть сведения о правиле. Чтобы понять, почему правило имеет значение True или False, необходимо немного разобраться в типе правила. Дополнительные сведения о каждом типе правил см. в разделах Определение правил включения ленты и Определение правил отображения ленты. В следующем примере показано, что тип правила — Entity , а логическое имя сущности — account. Так как текущей сущностью является контакт, который не равен учетной записи, это правило возвращает значение False.

    Снимок экрана: пример для просмотра сведений о правиле.

  5. Подход, необходимый для исправления видимости кнопки, будет зависеть от различных настроек в конкретном сценарии. В нашем примере:

    • Если это правило было создано ошибочно, так что сущность, объявленная в правиле, должна была быть контактным , но была задана учетная запись, можно изменить new.contact.EnableRule.EntityRule правило включения и внести изменения, которые позволят правилу оценить значение true.
    • Если это правило было добавлено в команду непреднамеренно, можно изменить Mscrm.NewRecordFromGrid команду и удалить new.contact.EnableRule.EntityRule правило включения из определения команды.
    • Если команда является переопределением опубликованного Майкрософт определения, то эту пользовательскую версию команды можно удалить, чтобы восстановить функциональные возможности по умолчанию.

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

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

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

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

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

Чтобы удалить команду, необходимо определить, какое решение установило настройку:

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

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

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

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

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

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

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

    Снимок экрана: пример уровня решения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Снимок экрана: удаление узла 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> узел с идентификатором команды, которую требуется удалить. Убедитесь, что вы не случайно удалили другие <CommandDefinitions> узлы, которые могут присутствовать.
  12. Сохраните файлcustomizations.xml .
  13. Добавьте измененный файлcustomizations.xml обратно в сжатый файл решения .zip.
  14. Импортируйте файл решения.
  15. Выберите Опубликовать все настройки.
Команда получена из пользовательского управляемого решения, которое создала моя компания.

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

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

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