Microsoft Dataverse y la mejora de la experiencia de origen de datos

Introducción

En mayo de 2021, muchas funciones que antes eran opcionales ahora serán el comportamiento predeterminado para todas las aplicaciones nuevas. Este artículo proporciona orientación a los usuarios que desarrollaron una aplicación antes de la introducción de nuevas funciones sobre cómo actualizar su aplicación para aprovechar las últimas funcionalidades.

Nativa Dataverse

Si creó una aplicación de lienzo con Dataverse o Dynamics 365 Connector antes de noviembre de 2019, entonces es posible que no tenga los beneficios de usar la experiencia de conexión nativa actual para Dataverse.

Si creó su aplicación antes de noviembre de 2019 y no estás usando una conexión nativa Dataverse, en Configuración, en la pestaña Próximas funciones, en la pestaña "Retirado" encontrará la opción Mejorar la experiencia origen de datos y vistas de Microsoft Dataverse junto con datos relacionales, opciones y otras características nuevas para Microsoft Dataverse.

¿Cómo me actualizo?

Actualice su aplicación inspeccionando la configuración de las características y siguiendo las instrucciones que se indican a continuación:

Los datos relacionales, los conjuntos de opciones y otras características nuevas de Microsoft Dataverse están desactivadas

Compruebe la sección Retirada en Próximas características. Si se establece en Desactivada, continúe con las instrucciones siguientes como primer paso en la conversión.

Si no ve Datos relacionales, conjuntos de opciones y otras características nuevas de Microsoft Dataverse en Configuración general o si ya está activada, omita los siguientes pasos y continúe con la siguiente sección.

  • Paso 1: Activar la característica Usar nombres para mostrar:

    1. Active la característica Usar nombres para mostrar.
    2. Espere a que el monitor de estado termine de analizar la aplicación.
    3. Guarde, cierre y vuelva a abrir la aplicación.
    4. Resuelva todos los errores de fórmula.
    5. Guarde, cierre y vuelva a abrir la aplicación.

    Posibles errores y sugerencias:

    Es posible que algunos de los nombres para mostrar recién mostrados entren en conflicto con los nombres para mostrar de otras tablas, campos o controles. Por ejemplo, puede tener un control y un campo con el mismo nombre. Puede cambiar el nombre del control con un valor único para corregirlo.

    Para cualquier conflicto de campo y nombre de tabla, es posible que vea una fórmula que espera una tabla pero se resuelve en un nombre de campo de ámbito local.

    Utilice el corchete con un símbolo @ para indicar un ámbito global para que se resuelva en la tabla; por ejemplo, [@tableName].

  • Paso 2: activar las características Datos relacionales, los conjuntos de opciones y otras características nuevas para Microsoft Dataverse y Usar tipos de datos GUID en lugar de cadenas:

    1. Active la característica Datos relacionales, los conjuntos de opciones y otras características nuevas de Microsoft Dataverse.
    2. Active la característica Usar tipos de datos GUID en lugar de cadenas.
    3. Espere a que el monitor de estado termine de analizar la aplicación.
    4. Resuelva todos los errores de fórmula.
    5. Guarde, cierre y vuelva a abrir la aplicación.

    Posibles errores y sugerencias:

    Es posible tener errores en esta etapa si está utilizando un campo de elección o valores de texto GUID codificados.

    • Valores de elección: si está utilizando un campo de elección con un identificador de texto para el valor de elección, utilice la notación de puntos en su lugar para hacer referencia al valor de elección. Por ejemplo, cambie Patch(Accounts, OptionSet1 = “12345”) a Patch(Accounts, OptionSet.Item1) donde Item1 corresponde al valor 12345.
      Más información: Ejemplos detallados.
    • GUID: si utiliza una cadena de GUID estática como 015e45e1044e49f388115be07f2ee116, conviértala en una función que devuelva un objeto GUID; por ejemplo GUID(“015e45e1044e49f388115be07f2ee116”).
    • Búsquedas: si está utilizando funciones de búsqueda para obtener valores de búsqueda de primer nivel, como Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”), considere usar ThisItem.PrimaryContacts (donde PrimaryContacts es el nombre de la tabla) en su lugar.

Mejorar la experiencia de origen de datos y las vistas de Microsoft Dataverse está desactivada

Use la siguiente instrucción para activar la característica Mejorar la experiencia de origen de datos y las vistas de Microsoft Dataverse:

  1. Quite las conexiones de origen de datos de Dataverse existentes.
  2. Active la característica Mejorar la experiencia de origen de datos y las vistas de Microsoft Dataverse:
  3. Agregue la conexión de Dataverse con la nueva experiencia de selección de orígenes de datos.
  4. Guarde la aplicación.

Nota

Si la aplicación es muy grande, la adición de las conexiones de origen de datos puede tardar unos minutos. No cierre la aplicación durante este proceso.

Conversión de aplicaciones de lienzo con Dynamics 365 Connector

Para convertir la aplicación que usa Dynamics 365 Connector, deberá quitar y agregar las conexiones a los orígenes de datos. Siga los pasos que se indican a continuación para convertir las conexiones a los orígenes de datos.

  1. Asegúrese de que la característica Mejorar la experiencia de origen de datos y las vistas de Microsoft Dataverse está activada:

  2. Quite las conexiones de origen de datos de Dynamics 365 existentes.

  3. Agregue las conexiones a los orígenes de datos al Dataverse con la nueva experiencia de selección de orígenes de datos.

    Nota

    • Si tiene conexiones a otros entornos (distintos del actual), seleccione la categoría Tabla y luego la opción Más (...) para cambiar el entorno. Luego, puede seleccionar una tabla de un entorno diferente para agregar a su aplicación. Las conexiones entre inquilinos no funcionan con el conector nativo mejorado. Tendrá que usar la integración de datos para acceder a los datos entre inquilinos.
    • Debe cumplir uno de los siguientes requisitos para poder ver un entorno al que desea agregar la conexión:
  4. Guarde la aplicación.

Posibles errores y sugerencias:

Es posible tener errores al realizar la conversión si: no está usando nombres para mostrar, si está usando cadenas GUID o si está usando una opción.

  • Si hay conflictos de nombres de control, cambie el nombre del control para que sea diferente y único.
  • Para conflictos de campo y nombre de tabla, es posible que vea una fórmula que espera una tabla pero se resuelve en un nombre de campo más de ámbito local. Utilice el corchete con un símbolo @ para indicar un ámbito global para que se resuelva en la tabla; por ejemplo, [@tableName].
  • Valores de elección: si está utilizando un campo de elección con un identificador de texto para el valor de elección, utilice la notación de puntos en su lugar para hacer referencia al valor de elección. Por ejemplo, cambie Patch(Accounts, OptionSet1 = “12345”) a Patch(Accounts, OptionSet.Item1) donde Item1 corresponde al valor 12345.
    Más información: Ejemplos detallados.
  • GUID: si utiliza una cadena de GUID estática como 015e45e1044e49f388115be07f2ee116, conviértala en una función que devuelva un objeto GUID; por ejemplo GUID(“015e45e1044e49f388115be07f2ee116”).
  • Búsquedas: si está utilizando funciones de búsqueda para obtener valores de búsqueda de primer nivel, como Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”), considere usar ThisItem.PrimaryContacts (donde PrimaryContacts es el nombre de la tabla) en su lugar.
  • Para obtener referencias polimórficas, consulte la sección Ejemplos detallados a continuación.

Ejemplos detallados

Convertir su aplicación para usar los nuevos tipos de datos Conjuntos de opciones y Dos opciones con controles de soporte pueden ser un desafío al actualizar una aplicación para usar la nueva característica Mejorar la experiencia de origen de datos y vistas de Microsoft Dataverse.

Opciones

Campos separados _myfield y _myfield_label se utilizaron antes en elecciones. Ahora, hay un solo myfield que se puede utilizar tanto para comparaciones independientes del entorno local como para obtener la etiqueta específica del entorno local.

Eliminar y agregar tarjetas de datos de elección

Le recomendamos eliminar las tarjetas de datos existentes y volver a agregarlas para que funcionen con su elección. Por ejemplo, si está trabajando con la tabla Cuenta y la opción Categoría, verá que la propiedad DataField de la tarjeta de datos se estableció en _accountcategorycode_label. En la lista de campos puede ver que la tarjeta de datos tiene un tipo de Cadena:

OptionSet con nombre de estilo antiguo.

Con la nueva característica Mejora de la experiencia de origen de datos y las vistas de Microsoft Dataverse ya no verá _accountcategorycode_label. Se reemplaza por accountcategorycode. La tarjeta ahora está marcada como personalizada y verá errores. Retire la tarjeta de datos antigua y agregue de nuevo la Elección. La nueva tarjeta de datos es consciente de Elección.

OptionSet con nuevo nombre de estilo.

Editar las expresiones del filtro de opciones para usar una nueva sintaxis

Anteriormente, si deseaba usar un valor de Opción en una expresión de filtro, necesitaría usar el campo Valor. Por ejemplo:

Filter(Account,'Category Value' = "1")

Deberá editar esta fórmula. El identificador de texto de elección ya no se usa para el valor. Esta expresión debe actualizarse a:

Filter(Account, Category= ‘Category (Accounts)’.’Preferred Customer’)

'Categoría(cuentas)' es el nombre de la enumeración que se utiliza en el campo Categoría de la tabla Cuentas. Esta es una opción local. Puede leer más sobre las opciones locales y globales aquí: Opciones globales.

Edición de declaraciones de parches de opciones para usar una nueva sintaxis

A continuación se muestra un ejemplo de una declaración de parche anterior para elegir:

Patch( Accounts, First(Accounts), { ‘Category Value’: 1 } ) )

Deberá actualizar sus instrucciones para seguir este formulario:

Patch( Accounts, First(Accounts), { Category: ‘Category (Accounts)’.’Preferred Customer’ } )

Desambiguación de elección

Si el nombre de una elección campo y el nombre de la elección es el mismo, deberá eliminar la ambigüedad de la fórmula. Para continuar usando el ejemplo de Código de categoría de cuentas, el @ implica utilizar la elección, no el campo.

Filter(Accounts, 'Category Code' = [@’Category Code’].'Preferred Customer')

Dos opciones

Eliminar y agregar tarjetas de datos Sí/No

Elminar las tarjetas de datos existentes y volver a agregarlas para que funcionen con su Sí/No. Los tipos de datos se reconocieron anteriormente como booleanos simples, como verdadero/activado y falso/desactivado sin etiquetas:

Sí / No - estilo antiguo.

Con la nueva característica Mejora de la experiencia de origen de datos y las vistas de Microsoft Dataverse, su tarjeta ahora se marcará como personalizada y verá errores. Retire la tarjeta de datos antigua y agregue de nuevo la elección. Después de agregarlo, verá un control de edición con dos opciones de forma predeterminada.

Sí / No - estilo nuevo.

Si prefiere el interruptor de alternancia para su campo booleano, puede desbloquear la tarjeta de datos y reemplazar el control en la tarjeta de datos con un control de alternancia. También tendrá que establecer estas propiedades en este interruptor.

Toggle1.Default = ThisItem.’Do not allow Bulk Emails’
Toggle1.TrueText = ‘Do not allow Bulk Emails (Accounts)’.’Do Not Allow’
Toggle1.FalseText = ‘Do not allow Bulk Emails (Accounts)’.Allow
DataCard.Value = If( Toggle1.Value,
    ‘Do not allow Bulk Emails (Accounts)’.’Do Not Allow’,
    ‘Do not allow Bulk Emails (Accounts)’.Allow )

Interruptor de alternancia de opción Dos.

Refinamiento de instrucciones de parche de opción Dos

Mediante la función Patch con la opción Dos debería funcionar "tal cual". Es compatible con el uso directo de verdadero y falso, similar al booleano. La única diferencia es que si antes había puesto el valor en un control Etiqueta que mostraba verdadero y falso, ahora mostrará las etiquetas de la opción Dos.

Búsquedas polimórficas

Las directrices siguientes ayudan a actualizar su aplicación si hace referencia a campos polimórficos. Las búsquedas polimórficas, del mismo campo, admiten referencias a un conjunto restringido de varias tablas. Al igual que las referencias en otros idiomas, una referencia de registro es un puntero a un registro específico en una tabla específica. Una referencia de registro lleva la información de la tabla, lo que le permite apuntar a un registro en otras tablas, lo que difiere de una búsqueda normal que solo puede apuntar a registros en una tabla.

Obtener acceso, establecer y filtrar por el campo Propietario de un registro

Por ejemplo, el campo Propietario en una tabla puede referirse a un registro en la tabla Usuarios o Equipos. El mismo campo de búsqueda en diferentes registros podría hacer referencia a registros en diferentes tablas.

Campo de propietario polimórfico.

Polimórfico con Filter y Patch

Las referencias de registro se pueden usar como un registro completo:

Filter( Accounts, Owner = First( Teams ) )
Patch( Accounts, First( Accounts ), { Owner: First( Users ) })

Dado que una referencia puede apuntar a diferentes tablas, debe ser específico. No puede usar ThisItem.Owner.Name ya que el nombre campo en la tabla Equipo es Nombre de equipo y el campo nombre en la tabla Usuario es Nombre completo. Power Apps no sabrá a qué tipo de búsqueda se refiere hasta que ejecute la aplicación.

Para solucionar ese problema:

  1. Agregue los orígenes de datos para los tipos de entidad que podría ser el Propietario, en el ejemplo actual, Usuarios y Equipos.
  2. Utilice más funciones para dejar clara su intención.

Hay dos nuevas funciones que puede utilizar:

  • IsType: comprueba si una referencia de registro es de un tipo de tabla en particular.
  • AsType: comprueba si una referencia de registro es de un tipo de tabla en particular.

Con estas funciones, puede escribir una fórmula que muestre el nombre del propietario tomado de dos campos con nombres diferentes, según el tipo de tabla del propietario:

If( IsType( ThisItem.Owner,  [@Teams]), 
    AsType( ThisItem.Owner, [@Teams]).'Team Name', 
    AsType( ThisItem.Owner, [@Users]).'Full Name' )

Galería con AsType.

El operador de desambiguación global para [@Teams] y [@Users] se utiliza para asegurarse de que hace referencia al tipo de tabla global. Aunque en este caso no es necesario, se recomienda siempre ser claro. Las relaciones de uno a varios suelen entrar en conflicto en el ámbito de registros de la galería, y esta práctica evita esa confusión.

Acceda y configure el campo Nombre de la empresa (un tipo de datos de Cliente) de la tabla Contactos

Un campo de búsqueda Cliente es otra búsqueda polimórfica que es muy similar a Propietario. Solo puede tener un campo Propietario por tabla. Pero una tabla puede incluir cero, uno o más campos de búsqueda de clientes. La tabla del sistema Contactos incluye el campo Nombre de empresa, que es un campo de búsqueda Cliente. Lea Mostrar los campos de un cliente para obtener más información.

Acceda y configure el campo Respecto de las tablas de actividad como faxes, llamadas telefónicas, mensajes de correo electrónico

Las búsquedas polimórficas no se limitan a Cuentas y Contactos. La lista de tablas se puede ampliar con tablas personalizadas. Para el ejemplo, la tabla faxes tiene una columna de búsqueda polimórfica Con respecto a, que puede hacer referencia a Cuentas, Contactos y otras tablas. Si tiene una galería con origen de datos establecido en Faxes, puede usar la siguiente fórmula para mostrar el nombre asociado con el campo de búsqueda Referente a.

If( IsBlank( ThisItem.Regarding ), "",
   IsType( ThisItem.Regarding, [@Accounts] ),
       "Account: " & AsType( ThisItem.Regarding, [@Accounts] ).'Account Name',
   IsType( ThisItem.Regarding, [@Contacts] ),
       "Contacts: " & AsType( ThisItem.Regarding, [@Contacts] ).'Full Name',
   "" )

Galería con Referente a.

Lea Campos de búsqueda Referente a y Relaciones referente a para obtener más información.

Obtener acceso a la lista de todas las actividades para un registro

En Dataverse, tablas como Faxes, Tareas, Correos electrónicos, Notas, Llamadas telefónicas, Cartas, y Chats están designadas como actividades. También puede crear sus propias tablas de actividad personalizadas.

Puede mostrar actividades de un tipo específico (como faxes o impuestos) o todas las actividades asociadas con una tabla, como una cuenta. Agregue la tabla de actividades y otras tablas individuales cuyos datos planea mostrar en la aplicación de lienzo.

Cada vez que agrega un registro a (por ejemplo, la tabla Tareas), se crea un registro en la tabla Actividad con los campos comunes en todas las tablas de actividad. Lea tabla de actividades para más detalles.

El siguiente ejemplo muestra que al seleccionar una cuenta, se mostrarán todas las actividades asociadas a esa cuenta:

Actividades polimórficas.

Los registros se muestran desde la tabla Actividad. No obstante, aún puede usar la función IsType para identificar qué tipo de actividad son. De nuevo, antes de usar IsType con un tipo de tabla, debe agregar el origen de datos necesario.

Al usar esta fórmula, puede mostrar el tipo de registro en un control de etiqueta dentro de la galería:

If( IsType( ThisItem, [@Faxes] ), "Fax",
   IsType( ThisItem, [@'Phone Calls'] ), "Phone Call",
   IsType( ThisItem, [@'Email Messages'] ), "Email Message",
   IsType( ThisItem, [@Chats] ), "Chat",
   "Unknown")

Nuevo IsType polimórfico.

Obtenga acceso a la lista de Notas para un registro

Cuando crea una tabla, puede habilitar los archivos adjuntos. Si selecciona la casilla de verificación para habilitar archivos adjuntos, creará una relación Con respecto a con la tabla Notas, como muestra este gráfico para la tabla Cuentas:

Campo Notas.

Filtering

No puede leer ni filtrar en función del campo Referente a. No obstante, está disponible la relación inversa de uno a varios de Notas. Para enumerar todas las notas asociadas a una tabla de cuentas, puede utilizar la siguiente fórmula:

First( Accounts ).Notes
Ruta

No puede establecer el campo Notas en una tabla usando Parche. Para agregar un registro a la tabla de Notas de una tabla, puede usar la función Relacionar. Primero cree la nota, como en este ejemplo:

Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note", isdocument:'Is Document (Notes)'.No } ) )

Pasos siguientes

Vea también

¿Qué es Dataverse?

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).