Exemplo Dataverse complementos de código baixo (vista previa)

[Este tema é a documentación de pre-lanzamento e está suxeito a cambios.]

O obxectivo destes complementos de exemplo é axudarche a comezar integrándoos nas túas aplicacións. Comprenderás que a experiencia de creación inclúe a creación de Microsoft Dataverse API personalizadas apoiadas por Power Fx expresións, que poden desencadear accións internas ou externas Dataverse.

Importante

  • Os complementos instantáneos de código baixo teñen prioridade e non se entregan como función. Os complementos instantáneos de código baixo substitúense por funcións. Máis información: Funcións en Microsoft Dataverse (vista previa)
  • Esta é unha funcionalidade de vista previa.
  • As funcionalidades de vista previa non se deseñaron para uso de produción e poden ter funcionalidade restrinxida. Estas funcionalidades están dispoñibles antes da versión oficial para que os clientes poidan obter acceso a elas rápido e fornecer comentarios.

Requisito previo

Para utilizar un dos complementos de exemplo para o evento de datos, a aplicación aceleradora Dataverse debe estar instalada no contorno. Máis información: Requisitos previos para crear un complemento de código baixo

Nota

Os modelos de correo electrónico só están dispoñibles para determinadas táboas. Máis información: Cree modelos para correo electrónico

Devolve un valor non negativo

Este exemplo usa a función Abs() para devolver o valor non negativo do seu argumento. Se un número é negativo, Abs devolve o equivalente positivo.

  1. Xoga a Dataverse aplicación Acelerador, na barra de comandos selecciona Nova acción>Complemento instantáneo.

  2. Proporcione un nome para mostrar, como o nome da fórmula e unha descrición.

  3. Crea un Out parámetro para validar o comportamento esperado que teña sentido, como unha cadea Opcionalmente, usa parámetros de entrada para facilitar as probas, que ten sentido coa fórmula.

  4. No editor de fórmulas, coloca o parámetro Out entre corchetes:

    {Out: "" }
    
  5. Introduza unha expresión que probe a fórmula:

    • Valida que intellisense acepta a fórmula (o texto vólvese azul claro).
    • Implementa unha expresión que proporciona unha saída para axudar a validar o resultado, por exemplo.
    {Out: "Abs(-5) = 5: " & Text( Abs(-5) = 5 )  }
    
  6. Seleccione Seguinte e, a continuación, seleccione Gardar.

  7. Seleccione Proba para probar a fórmula. Use o parámetro de saída para validar o resultado.

Validación de entrada e erros personalizados

Detección de duplicados

Implementa a validación de entrada no servidor, como a detección de erros duplicados que arroxa unha mensaxe de erro personalizada.

  1. Xoga a Dataverse aplicación Acelerador, na barra de comandos selecciona Nova acción>Complemento automatizado.
  2. Na caixa Nome, introduza Comprobación duplicada.
  3. Para Táboa, seleccione Contacto.
  4. Para Executar este complemento cando a fila estea, seleccione Creado.
  5. Na caixa Fórmula , introduza esta 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 Gardar.

Proba o complemento

  1. Para probar o complemento, crea unha aplicación de lenzo usando a táboa de contactos seguindo os pasos que se indican aquí: Especifica unha táboa.
  2. Crea unha fila de contactos.
  3. Crea outro contacto co mesmo nome que no paso anterior.
  4. Móstrase unha mensaxe que indica rexistros duplicados atopados. Seleccione Ignorar e gardar no indicador da mensaxe de erro.

Móstrase esta mensaxe de erro personalizada: Tes dous contactos co mesmo nome e apelidos.

Validación de datos

Mostra tipos específicos de erros mediante a enumeración ErrorKind .

  1. Crea un novo complemento automático.

  2. Proporcione os seguintes valores:

    • Nome: Validación de entrada
    • Descrición: Comproba a data válida e envía un erro se non é válida
    • Táboa: Cita
    • Executa este complemento cando a fila estea : Actualizada
  3. Introduza a fórmula a continuación:

    If(ThisRecord.'Due Date' < Now(), 
     Error({ Kind: ErrorKind.Validation , Message: "The due date cannot be in the past" })
    );
    
  4. En Opcións avanzadas, establece Cando debería executarse en Preoperación; quere executar esta regra antes de gardar os datos para evitar que os datos non sexan válidos.

  5. Seleccione Gardar.

Vaia á función Error() para obter máis información sobre os erros personalizados.

Enviar correo electrónico en función dun evento de datos

Requisitos previos:

Exemplo de modelo de correo electrónico

Aquí tes un exemplo de modelo de correo electrónico que podes crear para o evento de datos baseado en SenMail:

  • Tipo de modelo: Global
  • Nome: Grazas do pedido
  • Descrición: Utiliza este modelo para agradecer a un cliente por facerche un pedido.
  • Asunto: Thank you for your order <orderconfirmation-{!salesorder:Order Number; }>
  • Corpo: utiliza 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 

Crea o complemento automático

  1. Xoga a Dataverse aplicación Acelerador e, a continuación, selecciona +Novo complemento en Complementos automatizados.
  2. Introduza a seguinte información:
    • Nome: SendEmailUponCreate

    • Táboa: seleccione o nome da táboa lóxica dos pedidos de venda, que é Pedido de vendas. Este evento baséase na táboa Pedidos de vendas.

    • Executar este complemento coa fila : Creouse

    • Fórmula: pega o seguinte código na caixa Fórmula . Para obter máis información sobre a función SendEmailFromTemplate, a 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>Postoperación.
  4. Seleccione Gardar.

Aparece a mensaxe de confirmación O complemento gardouse correctamente .

Envía notificacións na aplicación baseadas nunha acción instantánea

As notificacións integradas nas aplicacións permiten aos creadores configurar notificacións contextuais e accionables para os usuarios en aplicacións baseadas en modelos.

Crea o complemento de código baixo que envía unha notificación na aplicación

  1. Reproduce a Dataverse aplicación aceleradora e, a continuación, selecciona +Novo complemento en Complementos instantáneos.
  2. Introduza a seguinte información, seleccione Seguinte:
    • Nome: Notificar Técnico1
    • Descrición: Este complemento instantáneo notifica ao usuario da aplicación.
  3. Na páxina Definicións , cree parámetros de entrada con estes tipos de datos:
    • OrderID: Cadea
    • Correo electrónico técnico: Cadea
  4. Fórmula. Pega o seguinte código na caixa Fórmula . Para obter máis información sobre esta función, vai 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 Seguinte.
  6. Na páxina Resumo , seleccione Gardar.

Invoca a acción instantánea de notificación na aplicación

  1. Selecciona unha aplicación de lenzo e, a continuación, selecciona Editar na barra de comandos (ou crea unha nova).
  2. Selecciona a pantalla no panel de navegación esquerdo ou crea unha nova.
  3. No menú Inserir , engade un botón á páxina mediante o TextoNotificar ao técnico.
  4. Seleccione o botón e introduza o seguinte na fx barra de fórmulas, onde DataCardValue17 é a columna que contén o ID de pedido e DataCardValue15 é a columna que contén o enderezo de correo electrónico. Neste exemplo, utilízase unha aplicación de lenzo chamada Aplicación de pedidos de servizos .
     Environment.cr8b8_Notifytechnician1({
           OrderID: DataCardValue17.Text,
        TechnicianEmail: DataCardValue15.Text 
     });
    
       	Notify("The technician was notified!", NotificationType.Success, 2000);
    
    
    Engade un botón con Power Fx fórmula para enviar unha notificación ao técnico
  5. Garda e Publica os teus cambios.

Cando se selecciona a acción de notificación do técnico na aplicación, envíase unha notificación na aplicación ao técnico que foi asignado á orde de servizo. Unha acción na notificación abre os detalles da orde de servizo nun panel lateral.

Notificación enviada ao técnico que recibe na aplicación

Exemplo de complemento instantáneo co conector MSN Weather

Este complemento devolve o tempo actual para unha localización específica mediante o Conector meteorolóxico de MSN.

Requisitos previos:

  1. Crea unha referencia de conexión para MSN Weather se aínda non está dispoñible no entorno: Crea unha referencia de conexión na aplicación desde o panel de referencias de conexión da dereita

  2. Copiar fragmento: Copia o fragmento de acción do panel de conexións

  3. Remate de editar a fórmula usando intellisense e consuma as propiedades de resposta do conector segundo sexa necesario: Completa a definición do complemento no editor

  4. Gardar IcM

  5. Proba o complemento

Suxestión

Use a función With() para capturar a resposta completa dunha acción se quere acceder a diferentes propiedades que poida ter a resposta. No seguinte exemplo, hai un parámetro de entrada Location (cadea) e un parámetro de saída Out (cadea).

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."
})

Recomendacións

Xestionar erros de bucle infinitos en complementos automatizados de código baixo

Non escribas unha declaración de parche nun complemento automatizado no evento "Actualizar", onde o parche está ocorrendo na mesma táboa que o complemento. Isto leva a bucles infinitos e erros de execución de complementos.

Patrón problemático: o uso de Patch() fórmula activa outra actualización.

Patrón recomendado: use a fórmula Set() para evitar este problema.

Consulte tamén

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