Um botão na barra de comandos fica oculto quando deve estar visível no Power Apps

Aplica-se a: Power Apps
Número de KB original: 4552163

Determinar por que um botão está oculto

Um botão pode ser oculto devido a uma regra de habilitação ou regra de exibição no comando associado ao botão que avalia como false. Pode ser que o comando associado tenha uma regra de Mscrm.HideOnModern exibição que ocultaria o botão em aplicativos de Interface Unificada. Um HideCustomAction também poderia ter sido criado que forçaria o botão a ser oculto. Se o usuário estiver offline, comandos personalizados e comandos padrão sem a Mscrm.IsEntityAvailableForUserInMocaOffline regra de habilitação não serão exibidos.

Aviso

  • Qualquer regra de exibição do tipo EntityPrivilegeRule com um valor PrivilegeType de um dos seguintes (Criar, Gravar, Excluir, Atribuir, Compartilhar) será avaliada como false se a entidade tiver a opção Somente Leitura no Celular habilitada, o que forçará a entidade a permitir apenas privilégio de leitura . Exemplos de algumas das regras padrão mais comuns do sistema que serão avaliadas como false quando o sinalizador Somente leitura no Celular estiver habilitado na entidade, são os seguintes, mas não se limitam apenas a essa lista (Mscrm.CreateSelectedEntityPermission, , Mscrm.CanSavePrimary, Mscrm.CanWritePrimary, Mscrm.CanWriteSelected, Mscrm.WritePrimaryEntityPermissionMscrm.WriteSelectedEntityPermission, Mscrm.DeletePrimaryEntityPermissionMscrm.CanDeletePrimary, Mscrm.DeleteSelectedEntityPermission, Mscrm.AssignSelectedEntityPermission, Mscrm.SharePrimaryPermission, Mscrm.ShareSelectedEntityPermission). Você pode editar a entidade e desmarcar a opção Somente leitura no Celular para permitir que essas regras sejam avaliadas como true, desde que o privilégio que está sendo testado pela regra também seja concedido ao usuário.
  • Não remova a Mscrm.HideOnModern regra de exibição de um comando para forçar um botão a aparecer na Interface Unificada. Os comandos que têm a Mscrm.HideOnModern regra de exibição são destinados à interface herdada do Cliente Web e não têm suporte na Interface Unificada e podem não funcionar corretamente.
  1. Habilite o verificador de comando e selecione o botão de comando para inspecionar.

  2. O exemplo a seguir mostra que o botão Novo na página de grade da entidade de contato não está visível e é representado por um item rotulado como Novo (oculto).

    Observação

    Se o botão não estiver listado, ele poderá ser devido a uma personalização HideCustomAction que pode ter sido instalada ou o comando associado tem uma regra de Mscrm.HideOnModern exibição. No momento da gravação deste guia, a ferramenta Verificador de Comando não lista botões que foram ocultos por uma HideCustomAction regra ou Mscrm.HideOnModern de exibição. No momento, estamos trabalhando para aumentar essa listagem para incluir essas informações em uma atualização futura.

    A captura de tela mostra que o botão Novo na página de grade da entidade de contato não está visível e é representado por um item rotulado como Novo (oculto).

    Observação

    Se o botão ainda estiver oculto quando todas as regras forem avaliadas como True, ele poderá ser devido a comandos confidenciais de contexto em grades. Quando os registros são selecionados em uma grade, todos os botões sem um SelectionCountRule elemento serão considerados não relevantes para os registros selecionados. E eles ficam ocultos mesmo que a avaliação da regra seja True. Observe que os flyouts não são afetados, pois as crianças de flyout ainda podem ter comandos baseados em registros.

  3. Selecione a guia Propriedades de Comando para exibir os detalhes do comando para este botão. Isso mostrará as regras de habilitação e as regras de exibição, juntamente com o resultado (True, False, Skipped) de cada avaliação de regra. O exemplo a seguir mostra o comando do botão Novo (oculto) a ser Mscrm.NewRecordFromGrid e há uma regra de habilitação chamada new.contact.EnableRule.EntityRule que foi avaliada como False, como resultado, o botão será oculto.

    A captura de tela mostra os detalhes das propriedades de comando do comando para o botão Novo (oculto).

  4. Expanda a new.contact.EnableRule.EntityRule regra de habilitação, selecionando no ícone chevron para exibir os detalhes da regra. Para entender por que uma regra é avaliada como True ou False requer um pouco de compreensão do tipo de regra. Para obter detalhes de cada tipo de regra, consulte Definir regras de habilitação de faixa de opções e Definir regras de exibição de faixa de opções. O exemplo a seguir mostra que o tipo de regra é Entity e o nome lógico da entidade é conta. Como a entidade atual é o contato, que não é igual à conta, essa regra retorna False.

    A captura de tela mostra um exemplo para exibir os detalhes da regra.

  5. A abordagem necessária para corrigir a visibilidade de um botão dependerá das várias personalizações em seu cenário específico. Considerando nosso exemplo:

    • Se essa regra foi criada erroneamente, de modo que a entidade declarada na regra se destinasse a ser contato , mas fosse definida como conta, você poderia editar a new.contact.EnableRule.EntityRule regra de habilitação e fazer alterações que permitiriam que a regra fosse avaliada como true.
    • Se essa regra foi adicionada ao comando sem querer, você poderá modificar o Mscrm.NewRecordFromGrid comando e remover a new.contact.EnableRule.EntityRule regra de habilitação da definição de comando.
    • Se o comando for uma substituição de uma definição publicada pela Microsoft, essa versão personalizada do comando poderá ser excluída para restaurar a funcionalidade padrão.

Opções de reparo

Selecione uma opção de reparo em uma das guias abaixo. A primeira guia é selecionada por padrão.

Como excluir um comando

Se houver outra camada de solução que contenha uma definição de trabalho do comando, você poderá excluir a definição para restaurar a definição de trabalho inativa.

Se essa for a única camada e você não precisar mais do comando, poderá removê-la de sua solução se nenhum outro botão estiver fazendo referência ao comando.

Para excluir um comando, precisamos determinar qual solução instalou a personalização:

  1. Selecione o link Exibir camadas de solução de definição de comando abaixo do nome do comando para exibir as soluções que instalaram uma definição do comando.

    Captura de tela do link Exibir camadas de solução de definição de comando em um nome de comando.

  2. O painel Camadas de Solução exibirá a camada de cada definição de componente de faixa de opções que uma solução específica instalou. A camada na parte superior da lista é a definição atual que é usada pelo aplicativo, as outras camadas estão inativas e não são usadas pelo aplicativo no momento. Se a solução superior estiver desinstalada ou uma versão atualizada for instalada que remova a definição, a próxima camada se tornará a definição ativa atual usada pelo aplicativo. Quando uma camada de solução Active não gerenciada estiver presente, sempre será a definição que o aplicativo usa. Se não houver nenhuma solução Ativa listada, a solução listada na parte superior da lista será a definição usada pelo aplicativo. Todas as soluções gerenciadas personalizadas que não forem publicadas pela Microsoft também terão precedência sobre as camadas de solução publicadas pela Microsoft.

    O contexto Entity indica o objeto em que a personalização da faixa de opções está, se "Todas as Entidades" estiver listada, a camada será das extensões de cliente da Application Ribbon e não da entidade específica, caso contrário, o nome lógico da entidade será listado.

    Quando houver duas ou mais camadas, você pode selecionar duas linhas e selecionar Comparar para exibir uma comparação das definições trazidas por cada solução.

    Selecionar Voltar retornará à janela anterior do Verificador de Comandos.

    A imagem a seguir mostra as camadas de solução para o comando em nosso exemplo e indica que há uma camada de solução para a entidade de contato que é uma personalização não gerenciada, conforme indicado pela solução intitulada Active. Seu cenário real pode ser diferente, você pode não ter uma camada de solução Ativa , você pode ter uma solução gerenciada e o nome dessa solução será listado aqui.

    A captura de tela mostra um exemplo da camada de solução.

  3. Agora que examinamos as camadas de solução e identificamos a solução que instalou a personalização, devemos corrigir a definição na solução apropriada.

Selecione uma das seguintes opções que correspondem ao seu cenário específico:

O comando está na solução Active não gerenciada

Para excluir um comando na camada de solução não gerenciada do Active , exportaremos uma solução não gerenciada contendo a entidade ou o Application Ribbon e editaremos o <RibbonDiffXml> nó no arquivo customizations.xml e importaremos uma nova versão dessa solução em que esse comando foi removido para excluir o componente. Consulte Exportar, preparar para editar e importar a faixa de opções.

O comando é específico da entidade

Com base em nosso cenário de exemplo, identificamos que a entidade é contato e o comando que precisa ser excluído é e é Mscrm.NewRecordFromGrid declarado na camada de solução não gerenciada ativa de um editor chamado DefaultPublisherCITTest.

  1. Abra Configurações Avançadas.

  2. Navegue até Soluções de Configurações>.

  3. Selecione Novo para criar uma nova solução, defina Publisher como o valor mostrado na lista de camadas de solução do Verificador de Comando para o comando e a camada de solução Ativa. (Em nosso exemplo, este é DefaultPublisherCITTest)

  4. Selecione Entidades>adicionar existentes.

  5. Selecione a entidade em que seu comando está definido (em nosso exemplo, este é o contato) e selecione OK.

  6. Desmarque os metadados Incluir entidade e Adicione todas as opções de ativos antes de selecionar Concluir.

  7. Selecione Salvar.

  8. Selecione Exportar solução e exportar a solução não gerenciada.

  9. Extraia o arquivo .zip.

  10. Abra o arquivo customizations.xml .

  11. Localize o <Entity> nó filho do nó da entidade que você deseja editar e localizar seu nó filho <RibbonDiffXml> .

  12. Localize o <CommandDefinition> nó. (Em nosso exemplo, a ID do <CommandDefinition> nó é Mscrm.NewRecordFromGrid, portanto, localizaríamos o nó a seguir)

    A captura de tela mostra o local do nó CommandDefinition.

  13. Edite o <RibbonDiffXml> nó e remova o nó específico <CommandDefinition> que tem a ID do comando que você deseja excluir. Certifique-se de não excluir involuntariamente outros <CommandDefinition> nós que possam estar presentes. (Com base em nosso exemplo, excluiríamos o nó no qual a <CommandDefinition> ID é Mscrm.NewRecordFromGrid.)

    Captura de tela para excluir o nó CommandDefinition.

  14. Salve o arquivo customizations.xml .

  15. Adicione o arquivo decustomizations.xml modificado de volta ao arquivo .zip da solução.

  16. Importe o arquivo da solução.

  17. Selecione Publicar Todas as Personalizações.

O comando está na Faixa de Opções de Aplicativo (se aplica a "Todas as entidades")

Se o comando não for específico da entidade, em vez disso, ele será aplicável a "Todas as Entidades" declaradas na Faixa de Opções de Aplicativo, as etapas serão ligeiramente diferentes da seguinte maneira:

  1. Abra Configurações Avançadas.
  2. Navegue até Soluções de Configurações>.
  3. Selecione Novo para criar uma nova solução, defina Publisher como o valor mostrado na lista de camadas de solução do Verificador de Comando para o comando e a camada de solução Ativa.
  4. Selecione Extensões de Cliente Adicionar Faixas>de Opções de Aplicativo Existentes>.
  5. Selecione Salvar.
  6. Selecione Exportar solução e exportar a solução não gerenciada.
  7. Extraia o arquivo .zip.
  8. Abra o arquivo customizations.xml .
  9. Localize o nó raiz <RibbonDiffXml> .
  10. Localize o <CommandDefinition> nó.
  11. Edite o <RibbonDiffXml> nó e remova o <CommandDefinition> nó que tem a ID do comando que você deseja excluir. Certifique-se de não excluir involuntariamente outros <CommandDefinitions> nós que possam estar presentes.
  12. Salve o arquivo customizations.xml .
  13. Adicione o arquivo decustomizations.xml modificado de volta ao arquivo de .zip de solução compactada.
  14. Importe o arquivo da solução.
  15. Selecione Publicar Todas as Personalizações.
O comando é de uma solução gerenciada personalizada que minha empresa criou

Para excluir um comando instalado por uma solução gerenciada personalizada que você criou, siga estas etapas:

  1. Em sua organização de desenvolvimento separada que tem a versão de origem não gerenciada de sua solução personalizada, conclua as etapas listadas acima para o comando está na opção de solução Active não gerenciada .
  2. Incremente a versão da solução personalizada.
  3. Exportar solução como gerenciada.
  4. Em sua organização afetada separada, importe esta nova versão da sua solução gerenciada sob medida.
O comando é de uma solução gerenciada personalizada que minha empresa não criou (de terceiros/ISV)

Para excluir um comando instalado por uma solução gerenciada personalizada que foi criada por terceiros/ISV, você precisará entrar em contato com o autor da solução e solicitar uma nova versão da solução que removeu a definição de comando específica e instalar essa nova solução em sua organização afetada.