Share via


Tyypittämättömien ja dynaamisten objektien käyttö

Kun käsitellään Power Appsin toimintoja, joihin ei ole määritetty kirjoitusta, joidenkin toimintojen palautusarvoja tai syötearvoja voi esiintyä. Aiemmin Power Apps jätti huomioimatta kirjoittamattomat tai dynaamiset syötekentät, eivätkä ne olleet näkyvissä PowerFX-lausekkeissa, mutta nyt voit työskennellä suoraan näiden kenttien kanssa. Aiemmin, kun palautustyyppiä ei kirjoitettu, Power Apps palautti totuusarvon. Nyt se palauttaa sen sijaan tyypittämättömän objektin.

Huomautus

Oletetaan, että Power Fx -lausekkeet perustuvat näiden toimintojen totuusarvoihin. Tällöin kaava on kirjoitetaan uudelleen ja totuusarvoon on kirjoitettu erityisesti tyypittämätön objekti. Tietyt funktiot, kuten "IfError", eivät tue vielä kokonaan tyypittämätöntä objektia. Jos lauseke sisältää tällaisen funktion, katso tämän artikkelin lopusta muistiinpanoa, miten ne voidaan ratkaista.

Tyypittämättömien objektien syöttäminen parametreina

Tietyt toiminnot edellyttävät, että parametriarvoksi tarvitaan tyypittämätön objekti. Jos sinulla on Power Fx -tietue, voit muuntaa sen tyypittämättömäksi objektiksi, jolloin se sopii toiminnon kohteeksi.

Alla olevassa esimerkissä Asiakas-taulukossa käytettävissä oleva Dataverse-yhdistämistoiminto edellyttää useita tyypittämättömiä argumentteja. Valmistelemiseksi määritetään kolme muuttujaa, jotka pitävät TargetObject-, SubordinateObject- ja UpdateContextObject-arvot. Aloitetaan määrittämällä tekstimerkkijono Microsoft.Dynamics.CRM.account muuttujalle, jota voidaan käyttää uudelleen koko esimerkissä.

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

Tämän jälkeen TargetObjectille määritetään Power Fx -tietue, jolla on nimen, accountid-tunnuksen ja @odata.type-ominaisuudet. Vastaavasti määritämme Power Fx -tietueita myös alisteisiin ja UpdateContext-objekteihin.

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

Seuraavaksi luodaan kolme muuttujaa, jotka tallentavat muuttamattomat tietueet muuntamisen jälkeen: TargetUntypedObject, SubordinateUntypedObject ja UpdateContextUntypedObject. Muuntamisessa käytetään alkuperäisen muuttujan ParseJSON(JSON())-funktiota. Tämä toiminto muuntaa Power Fx -tietueet tyypittämättömiksi objekteiksi.

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

Lopuksi kutsutaan yhdistämistoiminnimeksi syötettyjä parametreja, kuten sekä kirjoittamattomia että kirjoittamattomia parametreja:

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

Toiminnon avulla palautetun tyypittämättömän objektin käyttäminen

Jos toiminto-pohjainen yhdistin palauttaa objektin, sen ominaisuuksia voi käyttää suoraan riippumatta siitä, onko tyypille määritetty objektityyppi. Jos kuitenkin aiot käyttää ominaisuutta Power Appsissa tiettyyn tarkoitukseen, kuten otsikoimiseen, sinun täytyy ensin muuttaa sen tyyppi.

Seuraavassa esimerkissä httpRequest-funktio palauttaa muun kuin tyypittämättömän objektin, jota on aiemmin käytetty totuusarvona.

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

Yksi vastauksen ominaisuuksista on displayName. Sitä voidaan käyttää ja tyyppiä muuntaa seuraavanlaisella Power Fx -lausekkeella:

Text(response.displayName)

Muunna tyyppi objektiin Teksti, jos haluat käyttää sitä Power Apps -otsikko-ohjausobjektissa.

Dynamics-kenttien käsitteleminen

Toimintopalautteet keräävät nyt dynaamista tulosta, ja voit käyttää näitä ominaisuuksia edellä kuvatulla tavalla. Lisäksi on mahdollista käyttää dynaamisia syötekenttiä.

Ota huomioon GetMessageDetails-toiminto Microsoft Teamsissa, jossa on dynaaminen tekstinsyöttöparametri. Aiemmin tätä parametria ei voitu tarkastella tai määrittää. Äskettäisissä päivityksessä voit määrittää muuttujan nimeltä teksti, jolla on asianmukainen Power Fx -tietuerakenne.

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

Tämän jälkeen voidaan kutsua GetMessageDetails-toimintoa ja delegoida vastaus teamsResponse-muuttujalle.

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

Kaavojen muuntaminen, jotka palauttavat totuusarvoa palauttaneet muut kuin tyypittämättömät objektit.

Power Fx käyttää rajoitettua määrää tyypittämättömiä objekteja, joten eksplisiittinen muuntaminen voi olla tarpeen kaavassa. Jos kaava määräytyy totuusarvovastauksen mukaan, muunna se. Jos haluat yksinkertaisesti tietää, onko virhe olemassa, voit käyttää IsError-toimintoa:

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

Jos haluat käyttää virhetietoja, jotka ovat käytettävissä vain IfError-toiminnon kautta, muunna tyypittämätön objekti kelvolliseksi muuntotoiminnolla, kuten totuusarvolla, tekstillä tai arvolla. Nämä toiminnot tuottavat virheen, jos niitä annetaan. Seuraavassa esimerkissä havainnollistetaan tätä:

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