AsType- ja IsType-funktio
Koskee: Pohjaan perustuvat sovellukset
Mallipohjaiset sovellukset
Power Pages
Power Platform CLI
Tarkistaa tietyn taulukkotyypin (IsType) tietueviittauksen ja käsittelee viittausta tiettynä tyyppinä (AsType).
Muistiinpano
PAC CLI:n pac power-fx -komennot eivät tue IsType-funktiota.
Description
AsType- ja IsType-funktioilla voidaan muuntaa tietueviittauksia (esimerkiksi Dataversen polymorfisia hakuja) ja tyypittämättömiä objekteja tyypitetyiksi objekteiksi, joita voidaan käyttää suoraan.
Tietueviittaukset
Laajempi esittely ja lisätietoja on artikkelissa Tietueviittausten ja polymorfisten hakujen ymmärtäminen.
Valintakenttä viittaa yleensä tietyn taulukon tietueisiin. Koska taulukkotyyppi on määritetty hyvin, valintakenttiä voi käyttää yksinkertaisella pistemerkinnällä. Esimerkiksi First( Accounts ).'Primary Contact'.'Full Name tulee Asiakkaat-taulukosta Yhteyshenkilöt-taulukon Ensisijainen yhteyshenkilö -tietueeseen ja poimii Koko nimi -kentän.
Microsoft Dataverse tukee myös monisteenisia valintakenttiä, jotka voivat viitata taulukoiden tietueisiin kuten näissä esimerkeissä.
Hakukenttä | Voi viitata kohteisiin |
---|---|
Omistaja | Users tai Teams |
Asiakas | Accounts tai Contacts |
Liittyy | Accounts, Contacts, Knowledge Articles, jne. |
Kaaviosovellusten kaavoissa voit käyttää tietueviitteitä käyttääksesi polymorfisia hakuja. Koska tietueviittaus voi viitata eri taulukoihin, ei ole selvää, mitkä kentät ovat käytettävissä suorituksen aikana kaavaa kirjoitettaessa. Record.Field-merkintä ei ole käytettävissä. Kaavojen on mukauduttava tietueisiin, jotka sovellus havaitsee, kun sitä suoritetaan.
IsType-funktio testaa, viittaako tietueviittaus tiettyyn taulukkotyyppiin. Funktio palauttaa totuusarvon TOSI tai EPÄTOSI.
AsType-funktio käsittelee tietueviittauksia tietyntyyppisenä taulukkona, jota kutsutaan myös tyyppimuunnokseksi (cast). Voit käyttää tulosta niin kuin se olisi taulukon tietue ja käyttää tietuetta uudelleen. Record.Field-merkinnän avulla voit käyttää kaikkia tietueen kenttiä. Virhe tapahtuu, jos viittaus ei ole tiettyä tyyppiä.
Näiden toimintojen avulla voit ensin testata tietuetaulukon tyypin ja käsitellä sitä sitten tietuetyyppinä niin, että kentät ovat käytettävissä:
If( IsType( First( Accounts ).Owner, Users ),
AsType( First( Accounts ).Owner, Users ).'Full Name',
AsType( First( Accounts ).Owner, Teams ).'Team Name'
)
Tarvitset näitä funktioita vain, jos käytät tietueviittauksen kenttiä. Voit esimerkiksi käyttää tietueviittauksia Filter- funktiossa, ilman IsType- tai AsType-funktioita:
Filter( Accounts, Owner = First( Users ) )
Vastaavasti voit käyttää tietueviittauksia Patch-toiminnon kanssa:
Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )
Jos käytät tietueen kontekstissa, esimerkiksi Gallery- tai Edit form -ohjausobjektissa, sinun on ehkä viitattava taulukkotyyppiin yleisessä selvitysoperaattorissa. Tämä kaava on esimerkiksi tehokas valikoimassa, jossa on luettelo yhteyshenkilöistä, joiden Yrityksen nimi on Asiakas-entiteetin valinta:
If( IsType( ThisItem.'Company Name', Accounts ),
AsType( ThisItem.'Company Name', Accounts ).'Account Name',
AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)
Molemmille toiminnoille määritetään tyyppi sen tietolähteen kautta, joka on yhdistetty taulukkoon. Jotta kaava toimisi, sinun täytyy myös lisätä sovellukseen tietolähde mille tahansa testattavalle tai muunnettavalle tyypille. Lisää esimerkiksi Käyttäjät-taulukko tietolähde, jos haluat käyttää Taulukosta IsType- ja AsType-tyyppiä Omistaja-haun ja tietueiden kanssa. Voit lisätä vain ne tietolähteet, joita todellisuudessa käytät sovelluksessasi. Sinun ei tarvitse lisätä kaikkia taulukoita, joihin valinta voi viitata.
Jos tietueviittaus on tyhjä, IsType palauttaa arvon EPÄTOSI ja AsType palauttaa tyhjän. Tyhjän tietueen kaikki kentät ovat myös tyhjiä.
Tyypittämättömät objektit
Tärkeää
- AsType- ja IsType-funktioiden käyttäminen tyypittämättömien objektien kanssa on kokeellinen ominaisuus.
- Kokeellisia ominaisuuksia ei ole tarkoitettu tuotantokäyttöön, ja niiden toiminnallisuus voi olla rajoitettu. Nämä toiminnot ovat käytettävissä ennen virallista julkaisua, jotta voit käyttää niitä aikaisessa vaiheessa ja antaa palautetta. Lisätietoja: Tietoja in kokeellisista, esiversio- ja käytöstä poistetuista ominaisuuksista pohjaan perustuvissa sovelluksissa
- Tässä artikkelissa kuvattu toiminta on käytettävissä vain, kun kokeellinen Käyttäjän määrittämät tyypit -ominaisuus on otettu käyttöön (se on oletusarvoisesti pois käytöstä) kohdassa Asetukset > : Tulevat ominaisuudet > Kokeellinen.
- Palautteenne on meille arvokasta. Kerro meille mielipiteesi Power Appsin kokeellisten ominaisuuksien yhteisön keskustelupalstalla.
Verkko-ohjelmointirajapinnan tai [ParseJSON-funktion] tyypittämätön objekti on muunnettava tyypitetyksi objektiksi, ennen kuin sitä voidaan käyttää Power Fx:ssä. Vaihtoehtoja tähän ovat:
- Kirjoita kenttä implisiittisesti kohtaan, jossa sitä käytetään. Esimerkiksi objekti muunnetaan numeroksi, jos sitä käytetään
+
-operaattorin kanssa ja jos se voidaan muuntaa numeroksi. Tällä vaihtoehdolla voi olla odottamattomia muunnoksia, eikä se voi muuntaa tietueita ja taulukkoja kokonaisuutena. - Kirjoita kukin kenttä yksitellen Decimal-, Text-, DateTime-, GUID-tyyppien ja muiden tyyppien konstruktorifunktioilla. Tämä kajoaa kaavoihin voimakkaimmin, koska jokainen kenttä on täytettävä erikseen.
- Kirjoita erikseen JSON toisen argumentin kanssa ParseJSON-funktioon. Tämä on helppo vaihtoehto, joka välttää tyypittämättömän objektin tarpeen.
- Määritä tyypittämättömälle objektille eksplisiittisesti tyyppi AsType-funktiolla. Voit myös testata tyyppiä ennen muunnoksen yrittämistä IsType-funktiolla.
Syntaksi
AsType( RecordReference, TableType )
- RecordReference - pakollinen. Tietueviittaus, usein valintakenttä, joka voi viitata usean taulukon tietueeseen.
- TableType - vaaditaan. Tietty taulukko, johon tietue tulisi muuttaa.
AsType( UntypedObject, TypeSpecification )
- UntypedObject - pakollinen. Tietueviittaus, usein valintakenttä, joka voi viitata usean taulukon tietueeseen.
- TypeSpecification – pakollinen. Tyyppinimi tai tyyppimääritys, jotka on määritetty Type-funktiolla.
IsType( RecordReference, TableType )
- RecordReference - pakollinen. Tietueviittaus, usein valintakenttä, joka voi viitata usean taulukon tietueeseen.
- TableType - vaaditaan. Taulukko, jota varten testi suoritetaan.
IsType( UntypedObject, TypeSpecification )
- UntypedObject - pakollinen. Tietueviittaus, usein valintakenttä, joka voi viitata usean taulukon tietueeseen.
- TypeSpecification – pakollinen. Tyyppinimi tai tyyppimääritys, jotka on määritetty Type-funktiolla.
Esimerkkejä
Tietueviittaukset
Tietoja tietueviittauksista ja polymorfisista hauista sisältää laajoja esimerkkejä.
Luo tyhjä kaaviosovellus tableteille.
Valitse vasemmassa ruudussa Tiedot>Lisää tiedot. Lisää sitten Asiakkaat- ja Yhteyshenkilöt-taulukot.
Valitse vasemmassa ruudussa + (Lisää) >Asettelu>Tyhjä pystysuuntainen valikoima.
Valitse Yhdistä tietoihin ja valitse sitten Yhteyshenkilöt-tietolähde.
Määritä gallerian asetteluksi Otsikko ja alaotsikko.
Avaa Tiedot-ruudussa Title1-luettelo ja valitse Full Name.
Valitse Subtitle1-seliteohjausobjekti.
Määritä Subtitle1-ohjausobjektin Text-ominaisuudeksi seuraava kaava:
If( IsBlank( ThisItem.'Company Name' ), "--", IsType( ThisItem.'Company Name', Accounts ), "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name', "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name' )
Gallerian alaotsikko näyttää seuraavat arvot:
- "--" jos Yrityksen nimi on tyhjä.
- "Asiakas: " ja sitten Tilit-taulukon Tilin nimi -kenttä, jos Yrityksen nimi -kentässä viitataan tiliin.
- "Yhteyshenkilö: " ja sitten Yhteyshenkilöt-taulukon Koko nimi -kenttä, jos Yrityksen nimi -kentässä viitataan yhteyshenkilöön.
Tulokset voivat olla erilaisia, koska näytetietoja on saatettu muokata näyttämään useampia tulostyyppejä.
Tyypittämättömät objektit
Seuraavissa esimerkeissä näkyy yksinkertainen JSON-tietue, jonka ParseJSON,- AsType- ja IsType-funktiot tulkitsevat eri tavoin kohteessa Pac CLI Power Fx REPL.
Tässä ensimmäisessä esimerkissä ParseJSON-funktiolle ei anneta tyyppitietoja, joten se palauttaa tyypittämättömän objektin.
>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Untyped: Use Value, Text, Boolean, or other functions to establish the type>
Kenttä muunnetaan implisiittisesti luvuksi, kun sitä käytetään numeerisessa kontekstissa.
>> 1 + rec.a
2
Vaihtoehtoisesti tämä esimerkki muuntaa tietueen tyypitetyksi Power Fx -tietueeksi, toiseksi argumentiksi ParseJSON-funktiolle.
>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}
Toinen vaihtoehto: Tämä esimerkki muuntaa tietueen tyypitetyksi Power Fx -tietueeksi AsType-funktion avulla.
>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}
Lopuksi, jos emme olleet varmoja, tässä esimerkissä testataan tyyppi IsType-funktiolla ennen sen muuntamista.
>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true