Jaa


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

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:

  1. 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.
  2. 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.
  3. Kirjoita erikseen JSON toisen argumentin kanssa ParseJSON-funktioon. Tämä on helppo vaihtoehto, joka välttää tyypittämättömän objektin tarpeen.
  4. 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ä.

  1. Luo tyhjä kaaviosovellus tableteille.

  2. Valitse vasemmassa ruudussa Tiedot>Lisää tiedot. Lisää sitten Asiakkaat- ja Yhteyshenkilöt-taulukot.

    Tyhjä sovellus, jossa on kaksi tietolähdettä: asiakkuudet ja yhteyshenkilöt.

  3. Valitse vasemmassa ruudussa + (Lisää) >Asettelu>Tyhjä pystysuuntainen valikoima.

    Lisää valikoimaohjausobjekti, jonka asettelu on Tyhjä pystysuuntainen.

  4. Valitse Yhdistä tietoihin ja valitse sitten Yhteyshenkilöt-tietolähde.

  5. Määritä gallerian asetteluksi Otsikko ja alaotsikko.

    Avaa asettelun valitsin ominaisuusruudusta.

    Asettelun määrittäminen arvoon Otsikko ja alaotsikko.

  6. Avaa Tiedot-ruudussa Title1-luettelo ja valitse Full Name.

    Otsikon arvon määrittäminen.

  7. Valitse Subtitle1-seliteohjausobjekti.

    Aliotsikon arvon määrittäminen.

  8. 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'
    )
    

    Näyttö on nyt valmis, sillä se näyttää asiakkuudet ja yhteyshenkilöt galleriassa sekoitettuna.

    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