Compartir a través de


Ejemplo de complementos con poco código de Dataverse (versión preliminar)

[Este tema es documentación preliminar y está sujeto a modificaciones.]

El objetivo de estos complementos de ejemplo es ayudarlo a comenzar integrándolos en sus aplicaciones. Comprenderá que la experiencia de creación incluye la creación de API de Microsoft Dataverse personalizadas respaldadas por expresiones Power Fx, que pueden desencadenar acciones internas o externas a Dataverse.

Importante

  • Esta es una característica en versión preliminar.
  • Las características en vísta previa no se han diseñado para un uso de producción y pueden tener una funcionalidad restringida. Estas características están disponibles antes del lanzamiento oficial para que los clientes puedan tener un acceso anticipado y proporcionar comentarios.

Requisito previo

Para utilizar uno de los complementos de ejemplo para el evento de datos, la aplicación acelerador de Dataverse debe estar instalada en el entorno. Más información: Requisitos previos para crear un complemento de código bajo

Nota

Las plantillas de correo electrónico solo están disponibles para ciertas tablas. Más información: Crear plantillas para correo electrónico

Devolver un valor no negativo

Este ejemplo usa la función Abs() para devolver el valor no negativo de su argumento. Si el número es negativo, Abs muestra el equivalente positivo.

  1. Reproduzca la aplicación Dataverse Accelerator, en la barra de comandos seleccione Nueva acción > Complemento instantáneo.

  2. Proporcione un nombre, como el nombre de la fórmula y la descripción.

  3. Cree un parámetro Out para validar el comportamiento esperado que tiene sentido, como una cadena Opcionalmente, use parámetros de entrada para facilitar las pruebas, que tiene sentido con la fórmula.

  4. En el editor de fórmulas, ajuste el parámetro Out entre llaves:

    {Out: "" }
    
  5. Ingrese una expresión que pruebe la fórmula:

    • Valide que Intellisense acepte la fórmula (el texto se vuelve azul claro).
    • Implemente una expresión que proporcione una salida para ayudar a validar el resultado, por ejemplo.
    {Out: "Abs(-5) = 5: " & Text( Abs(-5) = 5 )  }
    
  6. Seleccione Siguiente y, a continuación, seleccione Guardar.

  7. Seleccione Probar para probar la fórmula. Utilice el parámetro de salida para validar el resultado.

Validación de entrada y errores personalizados

Detección de duplicados

Implemente la validación de entrada del lado del servidor, como la detección de errores duplicados, que arroja un mensaje de error personalizado.

  1. Reproduzca la aplicación Dataverse Accelerator, en la barra de comandos seleccione Nueva acción > Complemento automatizado.
  2. En el cuadro Nombre, introduzca Comprobación de duplicados.
  3. Para Tabla, seleccione Contacto.
  4. Para Ejecute este complemento cuando la fila esté, seleccione Creado.
  5. Escriba esta fórmula en el cuadro Fórmula:
 If( !IsBlank(LookUp([@Contacts],'Last Name'=ThisRecord.'Last Name' && 'First Name'=ThisRecord.'First Name')),
    Error("You have existing contacts with the same first name and last name")
)
  1. Seleccione Guardar.

Probar el complemento

  1. Para probar el complemento, cree una aplicación de lienzo usando la tabla de contactos siguiendo los pasos aquí: Especificar una tabla
  2. Cree una fila de contacto.
  3. Crea otro contacto con el mismo nombre que en el paso anterior.
  4. Se muestra un mensaje que indica que se encontraron registros duplicados. Seleccione Ignorar y guardar en el indicador de mensaje de error.

Se muestra este mensaje de error personalizado: Tiene dos contactos con el mismo primero y apellido.

Validación de datos

Muestre tipos específicos de errores usando la enumeración ErrorKind.

  1. Cree un nuevo complemento automatizado.

  2. Indique los siguientes valores:

    • Nombre: Validación de entrada
    • Descripción: Comprueba la fecha válida y arroja un error si no es válido
    • Tabla: Cita
    • Ejecutar esta regla de complemento cuando la fila es: Actualizada
  3. Especifique la fórmula abajo:

    If(ThisRecord.'Due Date' < Now(), 
     Error({ Kind: ErrorKind.Validation , Message: "The due date cannot be in the past" })
    );
    
  4. Bajo Opciones avanzadas, establezca ¿Cuándo debería ejecutarse esto? en Preoperatorio; desea ejecutar esta regla antes de que se guarden los datos para evitar datos no válidos.

  5. Seleccione Guardar.

Vaya a la función Error() para obtener más información sobre los errores personalizados.

Enviar correo electrónico basado en un evento de datos

Requisitos previos:

Ejemplo de plantilla de un correo electrónico

Aquí hay un ejemplo de plantilla de correo electrónico que puede crear para el evento de datos basado en SenMail:

  • Tipo de plantilla: Global
  • Nombre: Orden gracias
  • Descripción: Utilice esta plantilla para agradecer a un cliente por realizar un pedido con usted.
  • Asunto: Thank you for your order <orderconfirmation-{!salesorder:Order Number; }>
  • Cuerpo: Utilice este código.
   Hello {!Sales Order:First Name;},
   Order Type: {! Sales Order: Order Type;},
   Location Type: {! Sales Order: Location Type;},
   Address1: {! Sales Order: Address 1;},
   Address2: {! Sales Order: Address 2;},
   Preferred Service Start Date 1: {! Sales Order: Preferred Service Start Date;},
   Next Step- We take upto 48 hrs to schedule an in-person and will notify you as soon as we have a In-person Technician allocated at your site. For any questions, please contact us at 1-800-CON-SOLAR
   Yours Sincerely, 
   Contoso Sales 

Crear el complemento automatizado

  1. Reproduzca la aplicación Dataverse Accelerator y, a continuación, seleccione +Nuevo complemento bajo Complementos automatizados.
  2. Escriba la siguiente información:
    • Nombre: SendEmailUponCreate

    • Tabla: seleccione el nombre de la tabla lógica de los pedidos de venta, que es SalesOrder. Este evento se basa en la tabla de pedidos de ventas.

    • Ejecutar esta regla de complemento cuando la fila es: Creada

    • Fórmula: pegue el siguiente código en el cuadro Fórmula. Para obtener más información sobre la función SendEmailFromTemplate, consulte Acción SendEmailFromTemplate.

      XSendEmailFromTemplate(
          LookUp('Email Templates',StartsWith(title,"Order Thank You")).'Email Template',
      ThisRecord,
      LookUp(Users,'Primary Email'="sampleemail@sample.com"),[ThisRecord.Email]
      )
      
  3. Seleccione Avanzado > Postoperatorio.
  4. Seleccione Guardar.

Aparece el mensaje de confirmación Complemento guardado correctamente.

Envía notificaciones dentro de la aplicación basadas en una acción instantánea

Las notificaciones en la aplicación permiten a los creadores configurar notificaciones contextuales y procesables para los usuarios en aplicaciones basadas en modelos.

Cree el complemento de código bajo que envía una notificación en la aplicación

  1. Reproduzca la aplicación acelerador de Dataverse y, a continuación, seleccione +Nuevo complemento en Complementos instantáneos.
  2. Escriba la siguiente información y luego seleccione Siguiente.
    • Nombre: Notificar al técnico1
    • Descripción: Este complemento instantáneo notifica al usuario de la aplicación.
  3. En la página Definiciones, cree parámetros de entrada con estos tipos de datos:
    • OrderID: Cadena
    • TechnicianEmail: Cadena
  4. Fórmula. Copie el siguiente código en el cuadro Fórmula: Para obtener más información sobre esta función, vaya a Acción SendAppNotification.
     XSendAppNotification(
         "New service",
         LookUp(Users,'Primary Email'=TechnicianEmail),
         "You have a new solar panel installation scheduled on "& LookUp('Scheduling Results','OrderId'=OrderID).'ServiceDate'&" in "& LookUp('Service Orders','Order Number'=OrderID).City &". Contact the coordinator with any questions.",
     [
         XCreateSidePaneActionForEntity(
                 "View order",
             OrderID,
             "Sales Order",
             "cr8b8_serviceorder1",
             LookUp('Service Orders','Order Number'=OrderID).'Service Order'
             )
         ]
     )
    
  5. Seleccione Siguiente.
  6. En la página Resumen, seleccione Guardar.

Invocar la acción instantánea de notificación en la aplicación

  1. Seleccione una aplicación de lienzo y luego seleccione Editar en la barra de comandos (o cree una nueva).
  2. Seleccione la pantalla en el panel de navegación izquierdo o cree una nueva.
  3. En el menú Insertar, agregue un Botón a la página usando el Texto Notificar al técnico.
  4. Seleccione el botón e ingrese lo siguiente en la barra de fórmulas fx, donde DataCardValue17 es la columna que contiene el ID de pedido y DataCardValue15 es la columna que contiene la dirección de correo electrónico del técnico. En este ejemplo, se utiliza una aplicación de lienzo denominada Aplicación de orden de servicio.
    Environment.cr8b8_Notifytechnician1({
           OrderID: DataCardValue17.Text,
       TechnicianEmail: DataCardValue15.Text 
    });
    
        Notify("The technician was notified!", NotificationType.Success, 2000);
    
    
    Agregue un botón con la fórmula Power Fx para enviar una notificación al técnico
  5. Guarde y publique sus cambios.

Cuando se selecciona la acción de notificar al técnico en la aplicación, se envía una notificación en la aplicación al técnico que se ha asignado a la orden de servicio. Una acción en la notificación abre los detalles de la orden de servicio en un panel lateral.

Notificación enviada al técnico que recibe en la aplicación

Complemento instantáneo de muestra con conector MSN Weather

Este complemento devuelve el clima actual para una ubicación específica usando el conector meteorológico de MSN.

Requisitos previos:

  1. Cree una referencia de conexión para MSN Weather si aún no está disponible en el entorno: Cree una referencia de conexión en la aplicación desde el panel de referencias de conexión a la derecha

  2. Copie el fragmento de código: Copiar el fragmento de código de acción desde el panel de conexiones

  3. Termine de editar la fórmula usando IntelliSense y consuma las propiedades de respuesta del conector según sea necesario: Complete la definición del complemento en el editor

  4. Guardar

  5. Probar el complemento

Sugerencia

Utilice la función With() para capturar la respuesta completa de una acción si desea acceder a diferentes propiedades que pueda tener la respuesta. En el siguiente ejemplo, hay un parámetro de entrada Location (cadena) y un parámetro de salida Out (cadena).

With({ /* Capture current weather response from connector */
c: new_MsnWeather.CurrentWeather( Location, "Imperial" ).responses.weather.current
},{ /* Return concatenated weather details */
Out: "Current temp: " & c.temp & " degrees. Feels like " & c.feels & " degrees. Wind speed is " & c.windSpd & " mph."
})

Procedimientos recomendados

Manejo de errores de bucle infinito en complementos automatizados con poco código

No escriba una declaración de parche en un complemento automatizado en el evento "Actualización", donde el parche se realiza en la misma tabla que el complemento. Esto conduce a bucles infinitos y fallos en la ejecución de complementos.

Patrón problemático: el uso de la fórmula Patch() desencadena otra actualización. "Fórmula problemática en complementos automatizados"

Patrón recomendado: utilice la fórmula Set() en su lugar para evitar este problema. "Fórmula recomendada en complementos automatizados"

Consulte también

Complementos de bajo código Power Fx (vista previa)