Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Ao usar ações no Power Apps, pode encontrar valores dinâmicos de retorno ou valores de entrada para algumas ações. Anteriormente, o Power Apps ignorava campos de entrada dinâmicos e estes não eram visíveis em expressões do Power Fx. Agora, trabalha diretamente com estes campos. Anteriormente, quando um tipo de retorno era dinâmico, o Power Apps devolvia um valor booleano. Em vez disso, agora, devolve um valor dinâmico.
Nota
Se as suas expressões do Power Fx dependerem de um valor de retorno booleano destas funções, reescreva a fórmula e converta explicitamente o valor dinâmico para um booleano. Determinadas funções, como "IfError", ainda não suportam totalmente valores dinâmicos. Se a sua expressão utilizar uma destas funções, consulte a nota no final deste artigo para obter soluções alternativas.
Transmitir valores dinâmicos como parâmetros
Determinadas ações requerem a utilização de um valor dinâmico como parâmetro. Se tiver um registo do Power Fx, converta-o para um valor dinâmico para transmiti-lo para a ação.
No exemplo a seguir, a ação de união numa tabela de Conta do Dataverse requer vários argumentos dinâmicos. Para preparar, defina três variáveis para conter TargetObject, SubordinateObject e UpdateContextObject. Comece pro atribuir a cadeia de texto Microsoft.Dynamics.CRM.account a uma variável, que é reutilizada ao longo do exemplo.
Set (OdataType, “Microsoft.Dynamics.CRM.account”);
Em seguida, atribua a um registo do Power Fx a TargetObject com as propriedades nome, accountid e @odata.type. Da mesma forma, atribua registos do Power Fx aos objetos Subordinate e 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 });
Em seguida, crie mais três variáveis para armazenar os registos dinâmicos após a conversão: TargetDynamicValue, SubordinateDynamicValue e UpdateContextDynamicValue. Para converter, use a função ParseJSON(JSON()) nas variáveis originais. Esta ação transforma os registos do Power Fx em valores dinâmicos.
Set (TargetDynamicValue, ParseJSON(JSON(TargetObject)));
Set (SubordinateDynamicValue, ParseJSON(JSON(SubordinateObject)));
Set (UpdateContextDynamicValue, ParseJSON(JSON(UpdateContextObject)));
Finalmente, chame a ação de união e transmita os parâmetros necessários para tipos dinâmicos e específicos:
Environment.Merge({Target: TargetDynamicValue, Subordinate: SubordinateDynamicValue, UpdateContent: UpdateContextDynamicValue, PerformParentingChecks: false });
Utilizar valores dinâmicos devolvidos através de uma ação
Se uma Ação baseada em conector devolver um objeto, poderá aceder às respetivas propriedades diretamente, mesmo que não tenham um tipo. Mas se quiser usar uma propriedade para algo específico no Power Apps, como etiquetar, converta primeiro.
Neste exemplo, a função httpRequest devolve um valor dinâmico que já está convertido em booleano.
Set (response, Office365Groups.HttpRequest("/v1.0/me", "GET", ""));
Uma das propriedades na resposta é displayName. Pode ser acedido e convertido com uma expressão do Power Fx, como a seguinte:
Text(response.displayName)
Transmita para o objeto Texto para utilizar num controlo de etiquetas do Power Apps.
Trabalhar com campos do Dynamic
As respostas de ação agora capturam a saída dinâmica e pode usar o método descrito acima para aceder a estas propriedades. Também pode trabalhar com campos de entrada dinâmicos.
Considere a ação GetMessageDetails no Microsoft Teams, que tem um parâmetro body de entrada dinâmico. Anteriormente, não conseguia ver nem especificar este parâmetro. Com a atualização recente, defina uma variável chamada body com a estrutura de registo do Power Fx apropriada.
Set ( body, ParseJSON(JSON( {recipient: { groupID: “7f733b36-7c7f-4f4c-9699-0a7b7a2b3897”, channelID: “19: 085d522328fb4a439220641006f7f25@thread.tacv2”}})));
Em seguida, podemos chamar a ação GetMessageDetails e atribuir a resposta à variável teamsResponse.
Set (teamsResponse, MicrosoftTeams.GetMessageDetails ( 1661365068558, “channel”, body ));
Converter fórmulas que devolvem valores dinâmicos que anteriormente devolviam valores booleanos
O Power Fx utiliza um número limitado de valores dinâmicos, pelo que conversão explícita pode ser necessária para a sua fórmula. Em particular, se a sua fórmula depender de uma resposta booleana, precisa de converter. Se precisar de saber simplesmente se existe um erro, pode utilizar a função IsError:
If(
IsError(Office365Outlook.CalendarDeleteItemV2("Calendar", 1)),
Notify("An Outlook appointment could not be found or could not be deleted")
)
Para aceder às informações do erro que estão disponíveis exclusivamente através de IfError, tem de transformar o valor dinâmico num tipo específico usando uma função de conversão como Booleano, Texto ou Valor. Estas funções irão produzir um erro se lhe for dado um. O exemplo seguinte ilustra este ponto:
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)
) ) )