Deli z drugimi prek


Delo s predmeti brez vrste in dinamičnimi predmeti

Pri delu z dejanji v Power Apps je mogoče naleteti na netipizirane povratne vrednosti ali vhodne vrednosti za nekatera dejanja. Prej je Power Apps prezrl netipizirana ali dinamična vnosna polja in ne bi bila vidna v izrazih PowerFX, zdaj pa lahko s temi polji delate neposredno. Prej, ko vrnjena vrsta ni bila tipizirana, je Power Apps vrnil logično vrednost. Zdaj namesto tega vrne predmet brez vrste.

Opomba

Recimo, da se vaši Power Fx izrazi zanašajo na logično vrnjeno vrednost teh funkcij. V tem primeru boste morali ponovno napisati formulo in izrecno pretvoriti predmet brez vrste v logično vrednost. Nekatere funkcije, kot je 'IfError', še ne podpirajo v celoti netipiziranih predmetov. Če vaš izraz vsebuje takšno funkcijo, glejte opombo na koncu tega članka za rešitve.

Posredovanje netipiziranih predmetov kot parametrov

Nekatera dejanja zahtevajo predmet brez vrste kot vrednost parametra. Če imate Power Fx zapis, ga lahko pretvorite v predmet brez vrste, tako da je primeren za prenos v dejanje.

V spodnjem primeru dejanje spajanja, ki je na voljo v tabeli Dataverse Account, zahteva več netipiziranih argumentov. Za pripravo bomo definirali tri spremenljivke za TargetObject, SubordinateObject in UpdateContextObject. Začeli bomo z dodelitvijo besedilnega niza Microsoft.Dynamics.CRM.account spremenljivki, ki bo ponovno uporabljena v celotnem primeru.

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

Nato se TargetObject dodeli Power Fx zapis z lastnostmi ime, accountid in @odata.type. Podobno dodelimo Power Fx zapise tudi objektoma Podrejeni in 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 }); 

Nato bomo ustvarili še tri spremenljivke za shranjevanje netipiziranih zapisov po pretvorbi: TargetUntypedObject, SubordinateUntypedObject in UpdateContextUntypedObject. Za izvedbo pretvorbe bomo uporabili funkcijo ParseJSON(JSON()) na izvirnih spremenljivkah. To dejanje bo pretvorilo Power Fx zapise v netipizirane predmete.

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

Nazadnje pokličemo dejanje združevanja tako, da posredujemo potrebne parametre, vključno z netipiziranimi in tipiziranimi:

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

Uporaba predmet brez vrste vrnjena prek dejanja

Če konektor, ki temelji na dejanju vrne predmet, je mogoče neposredno dostopati do njegovih lastnosti, ne glede na to, ali jim je bila dodeljena vrsta. Če pa nameravate uporabiti lastnost za določen namen v Power Apps, na primer za označevanje, jo boste morali najprej udejaniti.

V naslednjem primeru funkcija httpRequest vrne predmet brez vrste, ki je bil predhodno pretvorjen kot logična vrednost.

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

Ena od lastnosti v odgovor je displayName. Do njega lahko dostopate in ga predvajate z Power Fx izrazom, kot je naslednji:

Text(response.displayName)

Predvajaj na predmet Besedilo, da ga uporabiš v Power Apps kontroli oznake.

Delo z dinamičnimi polji

Odzivi na dejanja zdaj zajemajo dinamični izhod in za dostop do teh lastnosti lahko uporabite zgoraj opisano metodo. Poleg tega je možno tudi delo z dinamičnimi vnosnimi polji.

Razmislite o dejanju 'GetMessageDetails' v Microsoft Teams ki ima dinamični vhodni parameter telesa. Prej si tega parametra ni bilo mogoče ogledati ali določiti. Z nedavno posodobitvijo lahko nastavite spremenljivko, imenovano 'body', z ustrezno Power Fx strukturo zapisa.

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

Nato lahko pokličemo dejanje GetMessageDetails in spremenljivki teamsResponse dodelimo odgovor.

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

Pretvarjanje formul, ki vrnejo netipizirane predmete, ki so prej vrnili logično vrednost.

Power Fx sprejme omejeno število netipiziranih objektov, zato bo za vašo formulo morda potrebna izrecna pretvorba. Še posebej, če je vaša formula odvisna od logične vrednosti odgovor, boste morali pretvoriti. Če želite preprosto vedeti, ali obstaja napaka, lahko uporabite funkcijo IsError:

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

Za dostop do informacij o napakah, ki so na voljo izključno prek IfError, morate predmet brez vrste preoblikovati v veljavno vrsto s funkcijo pretvorbe, kot je Boolean, Text ali Value. Te funkcije bodo povzročile napako, če bodo podane. Naslednji primer to ponazarja:

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