AsType IsType dan fungsi

Function Applies to
AsType Apl kanvas Copilot Studio Apl dipacu model Power Platform CLI Fungsi Dataverse Power Pages
IsType Apl kanvas Copilot Studio Apl dipacu model Fungsi Dataverse Power Pages

Menyemak sama ada rujukan rekod ialah jenis jadual tertentu (IsType) dan menganggap rujukan sebagai jenis tersebut (AsType).

Note

PAC CLI pac power-fx arahan tidak menyokong IsType.

Description

AsType Fungsi dan IsType boleh digunakan untuk menukar rujukan rekod (contohnya carian polimorfik dalam Dataverse) dan nilai dinamik kepada nilai ditaip yang boleh digunakan secara langsung.

Record References

Baca Memahami rujukan rekod dan carian polimorfik untuk pengenalan yang lebih luas dan lebih terperinci.

Medan carian biasanya merujuk kepada rekod dalam jadual tertentu. Oleh kerana jenis jadual telah mantap, akses medan carian menggunakan notasi titik mudah. Contohnya, First( Akaun ).'Kenalan Utama'.'Nama Penuh bergerak daripada jadual Akaun kepada rekod Kenalan Utama dalam jadual Kenalan dan ekstrak medan Nama Penuh.

Microsoft Dataverse juga menyokong medan carian polimorfik, yang boleh merujuk kepada rekod daripada set jadual, seperti dalam contoh ini.

Lookup field Boleh merujuk ke
Owner Pengguna atau Pasukan
Customer Akaun atau Kenalan
Regarding Akaun, Kenalan, Artikel Pengetahuan, dsb.

Dalam formula aplikasi kanvas, gunakan rujukan rekod untuk bekerja dengan carian polimorfik. Oleh kerana rujukan rekod boleh merujuk kepada jadual yang berbeza, anda tidak boleh mengetahui medan yang tersedia pada masa jalan apabila anda menulis formula. Notasi Record.Field tidak tersedia. Formula ini perlu disesuaikan dengan rekod yang ditemui oleh apl apabila ia dijalankan.

Fungsi ini IsType menyemak sama ada rujukan rekod merujuk kepada jenis jadual tertentu. Fungsi akan mengembalikan Boolean BENAR atau PALSU.

Fungsi ini AsType menganggap rujukan rekod sebagai jenis jadual tertentu, juga dipanggil pemutas. Anda menggunakan hasil seolah-olah ia adalah rekod jadual dan menggunakan notasi Record.Field untuk mengakses semua medan rekod tersebut. Jika rujukan bukan daripada jenis tertentu, ralat berlaku.

Gunakan fungsi ini bersama-sama untuk terlebih dahulu menyemak jenis jadual rekod dan kemudian menganggapnya sebagai rekod jenis itu supaya medan tersedia:

If( IsType( First( Accounts ).Owner, Users ),
    AsType( First( Accounts ).Owner, Users ).'Full Name',
    AsType( First( Accounts ).Owner, Teams ).'Team Name'
)

Anda memerlukan fungsi ini hanya jika anda mengakses medan rujukan rekod. Contohnya, anda menggunakan rujukan rekod dalam fungsi Penapis tanpa IsType atau AsType:

Filter( Accounts, Owner = First( Users ) )

Begitu juga, anda boleh menggunakan rujukan rekod dengan fungsi Patch:

Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )

Apabila anda menggunakan fungsi ini dalam konteks rekod, seperti dalam kawalan Galeri atau Edit borang , anda mungkin memerlukan pengendali nyahkekaburan global untuk merujuk jenis jadual. Contohnya, formula ini berfungsi untuk galeri yang memaparkan senarai kenalan di mana Nama Syarikat ialah carian Pelanggan :

If( IsType( ThisItem.'Company Name', Accounts ),
    AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

Untuk kedua-dua fungsi, tentukan jenis dengan menggunakan nama sumber data yang disambungkan ke jadual. Untuk formula berfungsi, tambahkan sumber data pada apl untuk sebarang jenis yang anda mahu semak atau hantar. Contohnya, tambah jadual Pengguna sebagai sumber data jika anda mahu menggunakan IsType dan AsType dengan carian Pemilik dan rekod daripada jadual tersebut. Tambahkan hanya sumber data yang anda gunakan dalam apl anda; Anda tidak perlu menambah semua jadual yang boleh dirujuk oleh carian.

Jika rujukan rekod kosong, IsType mengembalikan FALSE dan AsType mengembalikan kosong. Semua medan rekod kosong juga kosong.

Dynamic values

Nilai Dinamik daripada API web atau [fungsi ParseJSON ] perlu ditukar kepada nilai ditaip tertentu sebelum anda boleh menggunakannya dalam Power Fx. Berikut ialah beberapa pilihan:

  1. Taipkan medan secara tersirat pada titik anda menggunakannya. Sebagai contoh, objek bertukar kepada nombor jika anda menggunakannya dengan + pengendali, jika ia boleh ditukar kepada nombor. Pilihan ini boleh menyebabkan penukaran yang tidak dijangka dan tidak boleh menukar rekod dan jadual secara keseluruhan.
  2. Taipkan setiap medan secara eksplisit secara individu dengan Perpuluhan , Teks, TarikhMasa, GUID dan fungsi pembina jenis lain. Pilihan ini adalah yang paling invasif kepada formula anda kerana anda perlu melakukan setiap bidang secara berasingan.
  3. Taipkan JSON secara eksplisit dengan hujah kedua kepada fungsi ParseJSON . Pilihan ini mudah dan mengelak daripada memerlukan nilai Dinamik .
  4. Taipkan nilai Dinamik secara eksplisit menggunakan AsType fungsi. Anda juga boleh menyemak jenis sebelum anda mencuba penukaran dengan fungsi tersebut IsType .

Syntax

AsType( RecordReference, TableType )

  • RecordReference - Diperlukan. Rujukan rekod, selalunya medan carian yang merujuk kepada rekod dalam mana-mana beberapa jadual.
  • TableType - Diperlukan. Jadual khusus untuk membuang rekod.

AsType( DynamicValue, TypeSpecification )

  • DynamicValue - Diperlukan. Nilai dinamik daripada fungsi ParseJSON atau panggilan API.
  • JenisSpesifikasi - Diperlukan. Nama jenis atau spesifikasi jenis yang anda takrifkan dengan fungsi Jenis.

IsType( RecordReference, TableType )

  • RecordReference - Diperlukan. Rujukan rekod, selalunya medan carian yang boleh merujuk kepada rekod dalam sebarang jadual berbilang.
  • TableType - Diperlukan. Jadual khusus untuk diuji.

IsType( DynamicValue, TypeSpecification )

  • DynamicValue - Diperlukan. Nilai dinamik daripada fungsi ParseJSON atau panggilan API.
  • JenisSpesifikasi - Diperlukan. Nama jenis atau spesifikasi jenis yang ditakrifkan dengan fungsi Jenis.

Examples

Record References

Fahami rujukan rekod dan carian polimorfik mengandungi contoh yang luas.

  1. Cipta aplikasi kanvas kosong untuk tablet.

  2. Pada anak tetingkap kiri, pilih Data>Tambah data dan kemudian tambah jadual Akaun dan Kenalan .

    Aplikasi kosong dengan dua sumber data: akaun dan kenalan.

  3. Pada anak tetingkap kiri, pilih + (Masukkan) >Tataletak>Galeri menegak kosong.

    Sisipkan kawalan galeri dengan tataletak menegak kosong.

  4. Pilih Sambung kepada data dan kemudian pilih Kenalan sebagai sumber data.

  5. Tetapkan susun atur galeri kepada Tajuk dan sari kata.

    Buka pemilih tataletak daripada anak tetingkap sifat.

    Tetapkan reka letak kepada Tajuk dan sari kata.

  6. Dalam anak tetingkap Data, buka senarai Title1 dan kemudian pilih Nama Penuh.

    Tetapkan nilai tajuk.

  7. Pilih kawalan label Subtitle1.

    Tetapkan nilai sari kata.

  8. Tetapkan sifat Text bagi Subtitle1 kepada formula ini:

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

    Skrin kini selesai menunjukkan akaun dan kenalan bercampur dalam galeri.

    Subtajuk dalam galeri menunjukkan nilai ini:

    • "--" jika 'Nama Syarikat' adalah kosong.
    • "Akaun: " dan medan Nama Akaun daripada jadual Akaun jika medan Nama Syarikat merujuk kepada akaun.
    • "Kenalan: " dan medan Nama Penuh daripada jadual Kenalan jika medan Nama Syarikat merujuk kepada kenalan.

    Hasil anda mungkin berbeza kerana data sampel boleh diubah suai untuk menunjukkan lebih banyak jenis hasil.

Dynamic values

Contoh berikut menunjukkan rekod JSON ringkas yang ditafsirkan dalam pelbagai cara oleh ParseJSON,AsType , dan IsType dalam Pac CLI Power Fx REPL.

Dalam contoh pertama ini, tiada maklumat jenis diberikan kepada ParseJSON, jadi ia mengembalikan nilai dinamik.

>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Dynamic: Use Value, Text, Boolean, or other functions to establish the type>

Medan ini secara tersirat ditukar kepada nombor apabila digunakan dalam konteks berangka.

>> 1 + rec.a
2

Sebagai alternatif, contoh ini secara eksplisit menukar rekod kepada rekod yang ditaip Power Fx dengan hujah kedua kepada ParseJSON.

>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}

Dan alternatif lain, contoh ini secara eksplisit menukar rekod kepada rekod Power Fx yang ditaip menggunakan AsType.

>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}

Akhir sekali, jika anda tidak pasti, contoh ini menguji jenis sebelum menukarnya dengan IsType fungsi.

>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true