Bendrinti naudojant


Darbas su objektais be tipų ir dinaminiais objektais

Kai dirbate su veiksmais Power Apps, galite susidurti su neįvestomis kai kurių veiksmų grąžinamomis reikšmėmis arba įvesties reikšmėmis. Anksčiau Power Apps nepaisydavo neįvestų arba dinaminių įvesties laukų ir jie nebus matomi "PowerFX" išraiškose, bet dabar galite dirbti tiesiogiai su šiais laukais. Anksčiau, kai grąžinimo tipas buvo neįvestas, Power Apps būdavo grąžinama Bulio logikos reikšmė. Dabar jis grąžina neįvestą objektą.

Pastaba

Tarkime, kad jūsų Power Fx išraiškos priklauso nuo šių funkcijų loginės reikšmės. Tokiu atveju turėsite perrašyti formulę ir aiškiai perduoti neįvestą objektą į Bulio logiką. Tam tikros funkcijos, pvz., "IfError", dar nevisiškai palaiko neįvestus objektus. Jei jūsų išraiškoje yra tokia funkcija, sprendimo būdų ieškokite šio straipsnio pabaigoje esančioje pastaboje.

Perdavimas neįvestais objektais kaip parametrais

Tam tikriems veiksmams reikalingas neįvestas objektas kaip parametro reikšmė. Jei turite Power Fx įrašą, galite konvertuoti jį į neįvestą objektą, kad jis būtų tinkamas perduoti veiksmui.

Toliau pateiktame pavyzdyje suliejimo veiksmui, pasiekiamam Dataverse lentelėje Abonementas, reikia kelių neįvestų argumentų. Norėdami pasiruošti, apibrėšime tris kintamuosius, kad laikytume "TargetObject", "SubordinateObject" ir "UpdateContextObject". Pradėsime priskirdami teksto eilutę Microsoft.Dynamics.CRM.account kintamajam, kuris bus pakartotinai naudojamas visame pavyzdyje.

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

Tada TargetObject priskiriamas Power Fx įrašas su vardo, accountid ir @odata.type. ypatybėmis. Mes taip pat priskiriame Power Fx įrašus objektams Subordinuoti ir 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 }); 

Tada sukursime dar tris kintamuosius, kad po konvertavimo būtų saugomi neįvesti įrašai: TargetUntypedObject, SubordinateUntypedObject ir UpdateContextUntypedObject. Norėdami atlikti konvertavimą, pradiniuose kintamuosiuose naudosime funkciją ParseJSON(JSON()). Šis veiksmas pavers Power Fx įrašus neįvestais objektais.

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

Galiausiai sujungimo veiksmą vadiname perduodami reikiamus parametrus, įskaitant ir neįvestus, ir įvestus:

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

Neįvesto objekto, grąžinto atliekant veiksmą, naudojimas

Jei veiksmu pagrįsta jungtis grąžina objektą, jo ypatybes galima pasiekti tiesiogiai, neatsižvelgiant į tai, ar joms priskirtas tipas. Tačiau jei ketinate naudoti savybę konkrečiam tikslui Power Apps, pvz., ženklinimui, pirmiausia turėsite ją perduoti.

Šiame pavyzdyje funkcija httpRequest grąžina neįvestą objektą, kuris anksčiau buvo perduotas kaip Bulio logika.

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

Viena iš atsakymo ypatybių yra displayName. Jį galima pasiekti ir perduoti naudojant Power Fx tokią išraišką:

Text(response.displayName)

Perduoti objektui Tekstas, jei norite jį naudoti etiketės Power Apps valdiklyje.

Darbas su dinaminiais laukais

Veiksmų atsakymai dabar užfiksuoja dinaminę išvestį ir galite naudoti aukščiau aprašytą metodą, kad pasiektumėte šias ypatybes. Be to, taip pat galima dirbti su dinaminiais įvesties laukais.

Apsvarstykite veiksmą Microsoft Teams "GetMessageDetails", kuriame yra dinaminio įvesties kūno parametras. Anksčiau šio parametro nebuvo galima peržiūrėti ar nurodyti. Su naujausiu atnaujinimu galite nustatyti kintamąjį, vadinamą "kūnu", su atitinkama Power Fx įrašų struktūra.

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

Tada galime iškviesti veiksmą GetMessageDetails ir priskirti atsakymą komandomisResponse kintamajam.

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

Formulių, grąžinančių neįvestus objektus, kurie anksčiau grąžino Bulio logikos elementus, konvertavimas.

Power Fx užima ribotą skaičių neįvestų objektų, todėl jūsų formulei gali prireikti aiškaus konvertavimo. Visų pirma, jei jūsų formulė priklauso nuo Bulio loginio atsakymo, turėsite konvertuoti. Jei jums reikia tiesiog žinoti, ar yra klaida, galite naudoti funkciją IsError:

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

Norėdami pasiekti klaidos informaciją, kuri pasiekiama tik per IfError, turite transformuoti neįvestą objektą į tinkamą tipą naudodami konvertavimo funkciją, pvz., Bulio logiką, tekstą arba reikšmę. Šios funkcijos sukels klaidą, jei joms bus suteikta. Tai iliustruoja šis pavyzdys:

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