Nem írt és dinamikus objektumok használata

A műveletekben Power Apps végzett műveletek során előfordulhat, hogy egyes műveletekhez nem típusos visszatérési értékekkel vagy bemeneti értékekkel találkozik. Korábban Power Apps figyelmen kívül hagyta a nem gépelt vagy dinamikus beviteli mezőket, és azok nem voltak láthatók a PowerFX-kifejezésekben, de most már közvetlenül dolgozhat ezekkel a mezőkkel. Korábban, amikor egy visszatérési típus nem volt beírva, Power Apps logikai értéket adott vissza. Most egy nem gépelt objektumot ad vissza.

Megjegyzés

Tegyük fel, hogy a kifejezések ezekből a Power Fx függvényekből származó logikai visszatérési értékre támaszkodnak. Ebben az esetben át kell írnia a képletet, és explicit módon logikai értékre kell helyeznie a nem gépelt objektumot. Bizonyos függvények, például az "IfError", még nem támogatják teljes mértékben a nem gépelt objektumokat. Ha a kifejezés tartalmaz ilyen függvényt, a kerülő megoldásokért tekintse meg a cikk végén található megjegyzést.

Nem gépelt objektumok átadása paraméterként

Bizonyos műveletekhez paraméterértékként nem típusos objektumra van szükség. Ha van egy Power Fx rekordja, átalakíthatja azt nem gépelt objektummá, így alkalmassá teheti a műveletsornak való átadásra.

Az alábbi példában a Dataverse Partner táblában elérhető egyesítési művelethez több beíratlan argumentum szükséges. A felkészüléshez három változót határozunk meg a TargetObject, SubordinateObject és UpdateContextObject tárolására. Először rendeljük hozzá a Microsoft.Dynamics.CRM.account szöveges karakterláncot egy változóhoz, amelyet a példában újra felhasználunk.

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

Ezután a TargetObject objektumhoz hozzá lesz rendelve egy Power Fx rekord a name, accountid és @odata.type tulajdonságokkal. Hasonlóképpen rekordokat rendelünk Power Fx a Subordinate és UpdateContext objektumokhoz is.

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

Ezután létrehozunk három további változót a nem típusos rekordok tárolására az átalakítás után: TargetUntypedObject, SubordinateUntypedObject és UpdateContextUntypedObject. Az átalakítás végrehajtásához a ParseJSON(JSON()) függvényt fogjuk használni az eredeti változókon. Ez a művelet a Power Fx rekordokat nem gépelt objektumokká alakítja át.

Set (TargetUntypedObject, ParseJSON(JSON(TargetObject)));
Set (SubordinateUntypedObject, ParseJSON(JSON(SubordinateObject)));
Set (UpdateContextUntypedObject, ParseJSON(JSON(UpdateContextObject)));

Végül az egyesítési műveletet a szükséges paraméterek átadásával hívjuk, beleértve a nem típusos és a beírt paramétereket is:

Environment.Merge({Target: TargetUntypedObject, Subordinate: SubordinateUntypedObject, UpdateContent: UpdateContextUntypedObject, PerformParentingChecks: false  });

Művelettel visszaadott nem gépelt objektum használata

Ha egy műveletalapú összekötő egy objektumot ad vissza, annak tulajdonságai közvetlenül elérhetők, függetlenül attól, hogy hozzá vannak-e rendelve típushoz. Ha azonban egy tulajdonságot egy adott célra Power Apps, például címkézésre szeretne használni, először át kell alakítania.

A következő példában a httpRequest függvény egy korábban logikai értékűként átadott, nem típusos objektumot ad vissza.

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

A válasz egyik tulajdonsága displayName. A következőhöz hasonló kifejezéssel Power Fx érhető el és küldhető le:

Text(response.displayName)

Átküldés az objektumra Szöveg – címke vezérlőelemben való használat. Power Apps

Dinamikus mezők használata

A műveletválaszok mostantól rögzítik a dinamikus kimenetet, és a fent leírt módszerrel elérheti ezeket a tulajdonságokat. Ezenkívül dinamikus beviteli mezőkkel is dolgozhat.

Vegye figyelembe a "GetMessageDetails" műveletet Microsoft Teams , amely dinamikus beviteli törzsparaméterrel rendelkezik. Korábban ezt a paramétert nem lehetett megtekinteni vagy megadni. A legutóbbi frissítéssel beállíthat egy "body" nevű változót a megfelelő Power Fx rekordstruktúrával.

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

Ezután meghívhatjuk a GetMessageDetails műveletet, és hozzárendelhetjük a választ a teamsResponse változóhoz.

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

Olyan képletek konvertálása, amelyek korábban logikai értéket visszaadó, nem írt objektumokat adnak vissza.

Power Fx korlátozott számú nem típusos objektumot vesz igénybe, ezért explicit átalakításra lehet szükség a képlethez. Különösen, ha a képlet logikai választól függ, akkor konvertálnia kell. Ha egyszerűen tudnia kell, hogy létezik-e hiba, használhatja az IsError függvényt:

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

A kizárólag az IfError függvényen keresztül elérhető hibainformációk eléréséhez a nem típusos objektumot érvényes típussá kell alakítania egy konverziós függvény (például Logikai, Szöveg vagy Érték) használatával. Ezek a függvények hibát okoznak, ha kapnak egyet. A következő példa ezt szemlélteti:

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