Freigeben über


Mit dynamischen Werten arbeiten

Wenn Sie Aktionen in Power Apps verwenden, können Sie bei einigen Aktionen auf dynamische Rückgabe- oder Eingabewerte stoßen. Power Apps ignorierte zuvor dynamische Eingabefelder und sie waren in Power Fx Ausdrücken nicht sichtbar. Jetzt arbeiten Sie direkt mit diesen Feldern. Power Apps wurde zuvor ein boolescher Wert zurückgegeben, wenn ein Rückgabetyp dynamisch war. Jetzt wird stattdessen ein dynamischer Wert zurückgegeben.

Anmerkung

Wenn Ihre Ausdrücke auf einem booleschen Rückgabewert dieser Funktionen beruhen, schreiben Sie die Formel um, und wandeln Sie Power Fx den dynamischen Wert explizit in einen booleschen Wert um. Bestimmte Funktionen, wie z. B. IfError, unterstützen dynamische Werte noch nicht vollständig. Wenn Ihr Ausdruck eine dieser Funktionen verwendet, finden Sie Problemumgehungen im Hinweis am Ende dieses Artikels.

Übergeben von dynamischen Werten als Parameter

Für bestimmte Aktionen muss ein dynamischer Wert als Parameter verwendet werden. Wenn Sie über einen Power Fx Datensatz verfügen, konvertieren Sie ihn in einen dynamischen Wert, um ihn an die Aktion zu übergeben.

Im folgenden Beispiel sind für die Zusammenführungsaktion in einer Dataverse Kontotabelle mehrere dynamische Argumente erforderlich. Definieren Sie zur Vorbereitung drei Variablen, die TargetObject, SubordinateObject und UpdateContextObject enthalten. Weisen Sie zunächst die Textzeichenfolge Microsoft.Dynamics.CRM.account einer Variablen zu, die Sie im gesamten Beispiel wiederverwenden.

Set (OdataType, “Microsoft.Dynamics.CRM.account”);

Weisen Sie dann TargetObject einen Power Fx Datensatz mit den Eigenschaften Name, AccountId und @odata.type zu. Auf ähnliche Weise weisen Sie Power Fx Datensätze dem Subordinate-Objekt und dem UpdateContext-Objekt zu.

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 }); 

Erstellen Sie als Nächstes drei weitere Variablen, um die dynamischen Datensätze nach der Konvertierung zu speichern: TargetDynamicValue, SubordinateDynamicValue und UpdateContextDynamicValue. Verwenden Sie zum Konvertieren die Funktion ParseJSON(JSON()) für die ursprünglichen Variablen. Durch diese Aktion werden die Power Fx Datensätze in dynamische Werte umgewandelt.

Set (TargetDynamicValue, ParseJSON(JSON(TargetObject)));
Set (SubordinateDynamicValue, ParseJSON(JSON(SubordinateObject)));
Set (UpdateContextDynamicValue, ParseJSON(JSON(UpdateContextObject)));

Rufen Sie abschließend die Zusammenführungsaktion auf, und übergeben Sie die erforderlichen Parameter für dynamische und bestimmte Typen:

Environment.Merge({Target: TargetDynamicValue, Subordinate: SubordinateDynamicValue, UpdateContent: UpdateContextDynamicValue, PerformParentingChecks: false  });

Verwendung dynamischer Werte, die über eine Aktion zurückgegeben werden

Wenn ein aktionsbasierter Konnektor ein Objekt zurückgibt, können Sie direkt auf dessen Eigenschaften zugreifen, auch wenn sie keinen Typ haben. Wenn Sie eine Eigenschaft jedoch für etwas Bestimmtes in Power Apps verwenden möchten, z. B. für Beschriftungen, wandeln Sie sie zuerst um.

In diesem Beispiel gibt die Funktion einen dynamischen Wert zurück, der httpRequest bereits in einen booleschen Wert umgewandelt wurde.

Set (response, Office365Groups.HttpRequest("/v1.0/me", "GET", ""));

Eine der Eigenschaften in der Antwort ist displayName. Zugriff und Umwandlung kann mit einem Power Fx Ausdruck wie der folgende erfolgen:

Text(response.displayName)

Umwandung in das Objekt Text, um es in einem Power Apps Beschriftungssteuerelement zu verwenden.

Arbeiten mit Dynamics-Feldern

Aktionsantworten erfassen jetzt dynamische Ausgaben, und Sie können die oben beschriebene Methode verwenden, um auf diese Eigenschaften zuzugreifen. Sie können auch mit dynamischen Eingabefeldern arbeiten.

Betrachten Sie die GetMessageDetails Aktion in Microsoft Teams, die über einen dynamischen Eingabeparameter body verfügt. Bisher konnten Sie diesen Parameter nicht anzeigen oder angeben. Mit dem letzten Update legen Sie eine Variable namens body mit der entsprechenden Datensatzstruktur Power Fx fest.

Set ( body, ParseJSON(JSON( {recipient: { groupID: “7f733b36-7c7f-4f4c-9699-0a7b7a2b3897”, channelID: “19: 085d522328fb4a439220641006f7f25@thread.tacv2”}})));

Anschließend können wir die Aktion „GetMessageDetails“ aufrufen und die Antwort der Variablen „teamsResponse“ zuweisen.

Set (teamsResponse, MicrosoftTeams.GetMessageDetails ( 1661365068558, “channel”, body ));

Konvertieren von Formeln, die dynamische Werte zurückgeben, die zuvor boolesche Werte zurückgegeben haben

Power Fx nimmt eine begrenzte Anzahl dynamischer Werte, sodass für Ihre Formel möglicherweise eine explizite Konvertierung erforderlich ist. Insbesondere wenn Ihre Formel von einer booleschen Antwort abhängt, müssen Sie konvertieren. Wenn Sie einfach wissen müssen, ob ein Fehler vorliegt, können Sie die IsError-Funktion verwenden:

If(
  IsError(Office365Outlook.CalendarDeleteItemV2("Calendar", 1)),
  Notify("An Outlook appointment could not be found or could not be deleted")
)

Um auf Fehlerinformationen zuzugreifen, die ausschließlich über IfError verfügbar sind, müssen Sie den dynamischen Wert mithilfe einer Konvertierungsfunktion wie Boolean, Text oder Value in einen bestimmten Typ transformieren. Diese Funktionen erzeugen einen Fehler, wenn ihnen einer gegeben wird. Das folgende Beispiel zeigt dieses Problem:

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)
) ) )