Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Cuando utiliza acciones en Power Apps, puede encontrar valores de retorno dinámicos o valores de entrada para algunas acciones. Anteriormente, Power Apps ignoraba los campos de entrada dinámicos y no eran visibles en Power Fx las expresiones. Ahora, trabaja directamente con estos campos. Anteriormente, cuando un tipo de valor devuelto era dinámico, Power Apps devolvía un valor booleano. Ahora, devuelve un valor dinámico en su lugar.
Nota
Si las Power Fx expresiones se basan en un valor de retorno booleano de estas funciones, vuelva a escribir la fórmula y convierta explícitamente el valor dinámico en un valor booleano. Algunas funciones, como 'IfError', aún no son totalmente compatibles con los valores dinámicos. Si la expresión usa una de estas funciones, consulte la nota al final de este artículo para obtener soluciones alternativas.
Pasar valores dinámicos como parámetros
Ciertas acciones requieren el uso de un valor dinámico como parámetro. Si tiene un Power Fx registro, conviértalo en un valor dinámico para pasarlo a la acción.
En el siguiente ejemplo, la acción de combinación en una Dataverse tabla cuenta requiere varios argumentos dinámicos. Para prepararse, defina tres variables que contengan TargetObject, SubordinateObject y UpdateContextObject. Comience asignando la cadena de texto Microsoft.Dynamics.CRM.account a una variable, que reutilizará a lo largo del ejemplo.
Set (OdataType, “Microsoft.Dynamics.CRM.account”);
A continuación, asigne TargetObject un Power Fx registro con las propiedades name, accountid y @odata.type. Del mismo modo, asigne registros de Power Fx a los objetos Subordinate y UpdateContext.
Set (TargetObject, {name: "Test 2", accountid: "145dc2ba-85a2-ed11-aado-0022482d76a5", '@odata.type': OdataType});
Set (SubordinateObject, {name: FirstRecord.’Account name’, accountid: FirstRecord.Account, ‘@odata.type’ : OdataType });
Set (UpdateContextObject, {telephone1: FirstRecord.’Main Phone’, address1_city: FirstRecord.’Address 1 : City’, ‘@odata.type’ : OdataType });
A continuación, cree tres variables más para almacenar los registros dinámicos después de la conversión: TargetDynamicValue, SubordinateDynamicValue y UpdateContextDynamicValue. Para convertir, use la función ParseJSON(JSON()) en las variables originales. Esta acción transforma los registros Power Fx en valores dinámicos.
Set (TargetDynamicValue, ParseJSON(JSON(TargetObject)));
Set (SubordinateDynamicValue, ParseJSON(JSON(SubordinateObject)));
Set (UpdateContextDynamicValue, ParseJSON(JSON(UpdateContextObject)));
Por último, llame a la acción merge y pase los parámetros necesarios para los tipos dinámicos y específicos:
Environment.Merge({Target: TargetDynamicValue, Subordinate: SubordinateDynamicValue, UpdateContent: UpdateContextDynamicValue, PerformParentingChecks: false });
Uso de valores dinámicos devueltos a través de una acción
Si un conector basado en acciones devuelve un objeto, puede acceder a sus propiedades directamente, incluso si no tienen un tipo. Pero si desea usar una propiedad para algo específico Power Apps, como el etiquetado, conviértala primero.
En este ejemplo, la función httpRequest devuelve un valor dinámico que ya se ha convertido a Booleano.
Set (response, Office365Groups.HttpRequest("/v1.0/me", "GET", ""));
Una de las propiedades en la respuesta es displayName. Se puede acceder a ella, y convertirla, con una expresión Power Fx como la siguiente:
Text(response.displayName)
Convierta el objeto Texto para usarlo en un control de etiquetas de Power Apps.
Trabajar con campos dinámicos
Las respuestas a la acción ahora capturan resultados dinámicos y puede usar el método descrito anteriormente para acceder a estas propiedades. También puede trabajar con campos de entrada dinámicos.
Considere la acción GetMessageDetails en Microsoft Teams, que tiene un parámetro de entrada body dinámico. Anteriormente, no se podía ver ni especificar este parámetro. Con la actualización reciente, establezca una variable llamada body con la estructura de registro adecuada Power Fx.
Set ( body, ParseJSON(JSON( {recipient: { groupID: “7f733b36-7c7f-4f4c-9699-0a7b7a2b3897”, channelID: “19: 085d522328fb4a439220641006f7f25@thread.tacv2”}})));
Luego, podemos llamar a la acción GetMessageDetails y asignar la respuesta a la variable teamsResponse.
Set (teamsResponse, MicrosoftTeams.GetMessageDetails ( 1661365068558, “channel”, body ));
Conversión de fórmulas que devuelven valores dinámicos que anteriormente devolvían valores booleanos
Power Fx toma un número limitado de valores dinámicos, por lo que puede ser necesaria una conversión explícita para su fórmula. En particular, si la fórmula depende de una respuesta booleana, debe convertir. Si simplemente necesita saber si existe un error, puede usar la función IsError:
If(
IsError(Office365Outlook.CalendarDeleteItemV2("Calendar", 1)),
Notify("An Outlook appointment could not be found or could not be deleted")
)
Para acceder a la información de error que está disponible exclusivamente a través de IfError, debe transformar el valor dinámico en un tipo específico mediante una función de conversión como Boolean, Text o Value. Estas funciones producirán un error si se les da uno. El siguiente ejemplo lo muestra:
With({result: Office365Outlook.CalendarDeleteItemV2("Calendar", 1)},
If( IsError(result),
IfError(
Boolean(result), // any conversion function would do, such as Text, Value, …
Notify("An Outlook appointment could not be found or could not be deleted: " & FirstError.Message)
) ) )