Comparteix a través de


Un botón de la barra de comandos está oculto cuando debería estar visible en Power Apps

Se aplica a: Power Apps
Número de KB original: 4552163

Determinar por qué se oculta un botón

Un botón se puede ocultar debido a una regla de habilitación o una regla de presentación en el comando asociado al botón que se evalúa como false. Podría ser que el comando asociado tenga una Mscrm.HideOnModern regla de visualización que ocultaría el botón en las aplicaciones de la interfaz unificada. También se podría haber creado una clase HideCustomAction que obligaría a ocultar el botón. Si el usuario está sin conexión, no se mostrarán los comandos personalizados y los comandos predeterminados sin la Mscrm.IsEntityAvailableForUserInMocaOffline regla de habilitación.

Advertencia

  • Cualquier regla de presentación del tipo EntityPrivilegeRule con un valor PrivilegeType de uno de los siguientes (Crear, Escribir, Eliminar, Asignar, Compartir) se evaluará como false si la entidad tiene habilitada la opción Solo lectura en móvil , lo que obligará a la entidad a permitir solo el privilegio De lectura . Los ejemplos de algunas de las reglas del sistema predeterminadas más comunes que se evaluarán como false cuando la marca Solo lectura en móvil esté habilitada en la entidad son las siguientes, pero no se limitan solo a esta lista (Mscrm.CreateSelectedEntityPermission, Mscrm.CanSavePrimary, Mscrm.CanWritePrimary, , Mscrm.CanWriteSelectedMscrm.WritePrimaryEntityPermissionMscrm.WriteSelectedEntityPermission, Mscrm.CanDeletePrimaryMscrm.DeletePrimaryEntityPermission, Mscrm.DeleteSelectedEntityPermission, Mscrm.SharePrimaryPermissionMscrm.AssignSelectedEntityPermission, ). Mscrm.ShareSelectedEntityPermission Puede editar la entidad y desactivar la opción Solo lectura en móvil para permitir que estas reglas se evalúen como true, siempre que el privilegio que la regla está probando también se conceda al usuario.
  • No quite la Mscrm.HideOnModern regla de visualización de un comando para forzar que aparezca un botón en la interfaz unificada. Los comandos que tienen la Mscrm.HideOnModern regla de presentación están diseñados para la interfaz de cliente web heredada y no se admiten en la interfaz unificada y es posible que no funcionen correctamente.
  1. Habilite el comprobador de comandos y seleccione el botón de comando que se va a inspeccionar.

  2. En el ejemplo siguiente se muestra que el botón Nuevo de la página de cuadrícula de la entidad de contacto no está visible y se representa mediante un elemento con la etiqueta Nuevo (oculto).

    Nota:

    Si el botón no aparece en la lista, podría deberse a una personalización HideCustomAction que se haya instalado o que el comando asociado tenga una Mscrm.HideOnModern regla para mostrar. En el momento de escribir esta guía, la herramienta Comprobador de comandos no enumera los botones ocultos por una HideCustomAction regla de visualización o Mscrm.HideOnModern . Actualmente estamos trabajando para aumentar esta lista para incluir esta información en una actualización futura.

    Captura de pantalla que muestra que el botón Nuevo de la página de cuadrícula de la entidad de contacto no está visible y está representado por un elemento con la etiqueta Nuevo (oculto).

    Nota:

    Si el botón sigue oculto cuando todas las reglas se evalúan como True, puede deberse a comandos contextuales en cuadrículas. Cuando se seleccionan registros en una cuadrícula, todos los botones sin un SelectionCountRule elemento se considerarán no relevantes para los registros seleccionados. Y se ocultan incluso si su evaluación de reglas es True. Tenga en cuenta que los controles flotantes no se ven afectados, ya que es posible que los elementos secundarios del control flotante sigan teniendo comandos basados en registros.

  3. Seleccione la pestaña Propiedades del comando para mostrar los detalles del comando para este botón. Esto mostrará las reglas de habilitación y las reglas de presentación, junto con el resultado (True, False, Omitido) de cada evaluación de reglas. En el ejemplo siguiente se muestra que el comando del botón Nuevo (oculto) es Mscrm.NewRecordFromGrid y hay una regla de habilitación denominada new.contact.EnableRule.EntityRule que se ha evaluado como False, por lo que el botón se ocultará.

    Captura de pantalla que muestra los detalles de las propiedades de comando del comando para el botón Nuevo (oculto).

  4. Expanda la new.contact.EnableRule.EntityRule regla de habilitación; para ello, seleccione el icono de botón adicional para ver los detalles de la regla. Para comprender por qué una regla se evalúa como True o False requiere un poco de comprensión del tipo de regla. Para obtener más información sobre cada tipo de regla, vea Definir reglas de habilitación de la cinta de opciones y Definir reglas de visualización de cinta. En el ejemplo siguiente se muestra que el tipo de regla es Entity y el nombre lógico de la entidad es account. Dado que la entidad actual es contacto, que no es igual a la cuenta, esta regla devuelve False.

    Captura de pantalla que muestra un ejemplo para ver los detalles de la regla.

  5. El enfoque necesario para corregir la visibilidad de un botón dependerá de las distintas personalizaciones del escenario específico. Teniendo en cuenta nuestro ejemplo:

    • Si esta regla se creó erróneamente, de modo que la entidad declarada en la regla estaba pensada para ser contacto , pero se estableció en cuenta, podría editar la new.contact.EnableRule.EntityRule regla de habilitación y realizar cambios que permitan que la regla se evalúe como true.
    • Si esta regla se agregó al comando de forma involuntaria, podría modificar el Mscrm.NewRecordFromGrid comando y quitar la new.contact.EnableRule.EntityRule regla de habilitación de la definición de comando.
    • Si el comando es una invalidación de una definición publicada por Microsoft, esta versión personalizada del comando podría eliminarse para restaurar la funcionalidad predeterminada.

Opciones de reparación

Seleccione una opción de reparación en una de las pestañas siguientes. La primera pestaña está seleccionada de forma predeterminada.

Cómo eliminar un comando

Si hay otra capa de solución que contiene una definición de trabajo del comando, puede eliminar la definición para restaurar la definición de trabajo inactiva.

Si esta es la única capa y ya no necesita el comando, puede quitarlo de la solución si ningún otro botón hace referencia al comando.

Para eliminar un comando, es necesario determinar qué solución ha instalado la personalización:

  1. Seleccione el vínculo Ver capas de solución de definición de comandos debajo del nombre del comando para ver las soluciones que instalaron una definición del comando.

    Captura de pantalla del vínculo Ver capas de solución de definición de comandos bajo un nombre de comando.

  2. El panel Capas de solución mostrará la capa de cada definición de componente de cinta de opciones que tiene instalada una solución determinada. La capa de la parte superior de la lista es la definición actual que usa la aplicación, las otras capas están inactivas y la aplicación no las usa en este momento. Si se desinstala la solución superior o se instala una versión actualizada que quita la definición, la siguiente capa se convertirá en la definición activa actual que usa la aplicación. Cuando una capa de solución activa no administrada está presente, siempre será la definición que usa la aplicación. Si no aparece ninguna solución activa, la solución que aparece en la parte superior de la lista será la definición que usa la aplicación. Cualquier solución administrada personalizada que Microsoft no publique también tendrá prioridad sobre las capas de solución publicadas por Microsoft.

    El contexto de entidad indica el objeto en el que está la personalización de la cinta de opciones, si aparece "Todas las entidades", la capa procede de las extensiones de cliente de la cinta de opciones de aplicación y no de la entidad específica; de lo contrario, se mostrará el nombre lógico de la entidad.

    Cuando hay dos o más capas, puede seleccionar dos filas y seleccionar Comparar para ver una comparación de las definiciones que incluye cada solución.

    Al seleccionar Atrás , volverá a la ventana del Comprobador de comandos anterior.

    En la imagen siguiente se muestran las capas de solución del comando en nuestro ejemplo e indica que hay una capa de solución para la entidad de contacto que es una personalización no administrada, tal como se indica en la solución denominada Active. El escenario real puede diferir, es posible que no tenga una capa de solución activa , que tenga una solución administrada y que el nombre de esa solución se muestre aquí.

    Captura de pantalla que muestra un ejemplo de la capa de solución.

  3. Ahora que hemos revisado las capas de solución e identificado la solución que instaló la personalización, debemos corregir la definición en la solución adecuada.

Seleccione una de las siguientes opciones que coincidan con su escenario determinado:

El comando está en la solución activa no administrada.

Para eliminar un comando en la capa de solución no administrada activa , exportaremos una solución no administrada que contenga la entidad o la cinta de opciones de aplicación, editaremos el <RibbonDiffXml> nodo en el archivo customizations.xml y, a continuación, importaremos una nueva versión de esta solución donde se ha quitado este comando para eliminar el componente. Consulte Exportación, preparación para editar e importar la cinta de opciones.

El comando es específico de la entidad.

En función de nuestro escenario de ejemplo, hemos identificado que la entidad es contacto y el comando que debe eliminarse es Mscrm.NewRecordFromGrid y se declara en la capa de solución no administrada activa de un publicador denominado DefaultPublisherCITTest.

  1. Abra Configuración avanzada.

  2. Vaya a Soluciones de configuración>.

  3. Seleccione Nuevo para crear una nueva solución y establezca Publisher en el valor que se muestra en la lista de capas de solución del comprobador de comandos para el comando y la capa de solución activa. (En nuestro ejemplo, se trata de DefaultPublisherCITTest)

  4. Seleccione Entidades>Agregar existente.

  5. Seleccione la entidad en la que está definido el comando (en nuestro ejemplo, este es el contacto) y seleccione Aceptar.

  6. Asegúrese de desactivar las opciones Incluir metadatos de entidad y Agregar todos los recursos antes de seleccionar Finalizar.

  7. Seleccione Guardar.

  8. Seleccione Exportar solución y exporte la solución no administrada.

  9. Extraiga el archivo .zip.

  10. Abra el archivo customizations.xml .

  11. Busque el <Entity> nodo secundario del nodo de entidad que desea editar y busque su nodo secundario <RibbonDiffXml> .

  12. Busque el <CommandDefinition> nodo. (En nuestro ejemplo, el identificador del <CommandDefinition> nodo es Mscrm.NewRecordFromGrid, por lo que se buscaría el nodo siguiente).

    Captura de pantalla que muestra la ubicación del nodo CommandDefinition.

  13. Edite el <RibbonDiffXml> nodo y quite el nodo específico <CommandDefinition> que tiene el identificador del comando que desea eliminar. Asegúrese de no eliminar involuntariamente otros <CommandDefinition> nodos que puedan estar presentes. (En función de nuestro ejemplo, eliminaremos el nodo en el <CommandDefinition> que el identificador es Mscrm.NewRecordFromGrid.)

    Captura de pantalla para eliminar el nodo CommandDefinition.

  14. Guarde el archivo customizations.xml .

  15. Vuelva a agregar el archivo customizations.xml modificado al archivo .zip de la solución.

  16. Importe el archivo de solución.

  17. Seleccione Publicar todas las personalizaciones.

El comando está en la cinta de opciones de aplicación (se aplica a "Todas las entidades")

Si el comando no es específico de la entidad, sino que se aplica a "Todas las entidades" declaradas en la cinta de opciones de aplicación, los pasos serán ligeramente diferentes de la siguiente manera:

  1. Abra Configuración avanzada.
  2. Vaya a Soluciones de configuración>.
  3. Seleccione Nuevo para crear una nueva solución y establezca Publisher en el valor que se muestra en la lista de capas de solución del comprobador de comandos para el comando y la capa de solución activa.
  4. Seleccione Extensiones> de cliente Agregarcintas de opciones de aplicaciónexistentes>.
  5. Seleccione Guardar.
  6. Seleccione Exportar solución y exporte la solución no administrada.
  7. Extraiga el archivo .zip.
  8. Abra el archivo customizations.xml .
  9. Busque el nodo raíz <RibbonDiffXml> .
  10. Busque el <CommandDefinition> nodo.
  11. Edite el <RibbonDiffXml> nodo y quite el <CommandDefinition> nodo que tiene el identificador del comando que desea eliminar. Asegúrese de no eliminar involuntariamente otros <CommandDefinitions> nodos que puedan estar presentes.
  12. Guarde el archivo customizations.xml .
  13. Vuelva a agregar el archivo customizations.xml modificado al archivo .zip de la solución comprimida.
  14. Importe el archivo de solución.
  15. Seleccione Publicar todas las personalizaciones.
El comando procede de una solución administrada personalizada que mi empresa ha creado.

Para eliminar un comando instalado por una solución administrada personalizada que creó, siga estos pasos:

  1. En la organización de desarrollo independiente que tiene la versión de origen no administrada de la solución personalizada, complete los pasos indicados anteriormente para el comando Está en la opción solución activa no administrada .
  2. Incremente la versión de la solución personalizada.
  3. Exporte la solución como administrada.
  4. En la organización afectada independiente, importe esta nueva versión de la solución administrada personalizada.
El comando procede de una solución administrada personalizada que mi empresa no ha creado (de terceros o ISV)

Para eliminar un comando instalado por una solución administrada personalizada creada por un tercero o ISV, deberá ponerse en contacto con el autor de la solución y solicitar una nueva versión de la solución que haya quitado la definición de comando específica y, a continuación, instalar esta nueva solución en la organización afectada.