AsType dan IsType fungsi

Function Applies to
AsType Aplikasi Kanvas Copilot Studio Model-driven aplikasi Power Platform CLI Dataverse fungsi Power Pages
IsType Aplikasi Kanvas Copilot Studio Aplikasi berbasis Model Dataverse fungsi Power Pages

Memeriksa apakah referensi rekaman adalah jenis tabel tertentu (IsType) dan memperlakukan referensi sebagai jenis tersebut (AsType).

Note

Perintah pac pac power-fx PAC tidak mendukung IsType.

Description

Fungsi AsType dan IsType dapat digunakan untuk mengonversi referensi rekaman (misalnya pencarian polimorfik di Dataverse) dan nilai dinamis ke nilai yang diketik yang dapat digunakan secara langsung.

Record References

Baca Memahami referensi rekaman dan pencarian polimorfik untuk pengantar yang lebih luas dan detail lebih lanjut.

Bidang pencarian biasanya mengacu pada rekaman pada tabel tertentu. Karena jenis tabel sudah mapan, akses bidang pencarian menggunakan notasi titik sederhana. Contohnya, First( Accounts ).'Primary Contact'.'Full Name' berjalan dari tabel Akun ke rekaman Kontak Utama di tabel Kontak dan mengekstrak bidang Nama Lengkap.

Microsoft Dataverse juga mendukung bidang pencarian polimorfik, yang dapat merujuk ke rekaman dari rangkaian tabel, seperti contoh ini.

Lookup field Dapat merujuk pada
Owner Pengguna atau Tim
Customer Akun atau Kontak
Regarding Akun, Kontak, Artikel Pengetahuan, dll.

Dalam rumus Canvas-App, gunakan referensi rekaman untuk bekerja dengan pencarian pomorfik. Karena referensi rekaman bisa merujuk ke tabel yang berbeda, Anda tidak dapat mengetahui bidang mana yang tersedia saat runtime saat Anda menulis rumus. Notasi Record.Field tidak tersedia. Rumus ini perlu beradaptasi dengan rekaman yang ditemui aplikasi saat berjalan.

Fungsi IsType memeriksa apakah referensi rekaman mengacu pada jenis tabel tertentu. Fungsi menampilkan Boolean BENAR atau SALAH.

Fungsi ini AsType memperlakukan referensi rekaman sebagai jenis tabel tertentu, juga disebut casting. Anda menggunakan hasilnya seolah-olah itu adalah rekaman tabel dan menggunakan notasi Record.Field untuk mengakses semua bidang rekaman tersebut. Jika referensi bukan dari jenis tertentu, kesalahan terjadi.

Gunakan fungsi-fungsi ini bersama-sama untuk terlebih dahulu memeriksa jenis tabel rekaman lalu perlakukan sebagai rekaman jenis tersebut sehingga bidang 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 bidang referensi rekaman. Misalnya, Anda menggunakan referensi rekaman dalam fungsi Filter tanpa IsType atau AsType:

Filter( Accounts, Owner = First( Users ) )

Demikian pula, Anda dapat menggunakan referensi rekaman dengan fungsi Patch:

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

Saat Anda menggunakan fungsi ini dalam konteks rekaman, seperti dalam kontrol formulir Galeri atau Edit , Anda mungkin memerlukan operator disambiguasi global untuk mereferensikan jenis tabel. Misalnya, rumus ini berfungsi untuk galeri yang menampilkan daftar kontak di mana Nama Perusahaan adalah pencarian Pelanggan :

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

Untuk kedua fungsi, tentukan jenis dengan menggunakan nama sumber data yang tersambung ke tabel. Agar rumus berfungsi, tambahkan sumber data ke aplikasi untuk semua jenis yang ingin Anda periksa atau transmisikan. Misalnya, tambahkan tabel Pengguna sebagai sumber data jika Anda ingin menggunakan IsType dan AsType dengan pencarian dan rekaman Pemilik dari tabel tersebut. Tambahkan hanya sumber data yang Anda gunakan di aplikasi Anda; Anda tidak perlu menambahkan semua tabel yang dapat dirujuk oleh pencarian.

Jika referensi rekaman kosong, IsType mengembalikan FALSE, dan AsType mengembalikan kosong. Semua bidang rekaman kosong juga kosong.

Dynamic values

Nilai Dinamis dari API web atau [fungsi ParseJSON ] perlu dikonversi ke nilai tertentu yang ditik sebelum Anda dapat menggunakannya di Power Fx. Berikut ini adalah beberapa opsi:

  1. Ketik bidang secara implisit pada titik yang Anda gunakan. Misalnya, objek dikonversi ke angka jika Anda menggunakannya dengan + operator, jika dapat dikonversi ke angka. Opsi ini dapat menyebabkan konversi yang tidak terduga dan tidak dapat mengonversi rekaman dan tabel secara keseluruhan.
  2. Ketikkan setiap bidang secara eksplisit satu per satu dengan fungsi Konstruktor Decimal , Text , DateTime, GUID , dan lainnya. Opsi ini adalah yang paling invasif untuk rumus Anda karena Anda perlu melakukan setiap bidang secara terpisah.
  3. Ketik JSON secara eksplisit dengan argumen kedua ke fungsi ParseJSON . Opsi ini mudah dan menghindari kebutuhan nilai Dinamis .
  4. Ketik nilai Dinamis secara eksplisit menggunakan AsType fungsi . Anda juga dapat memeriksa jenis sebelum mencoba konversi dengan IsType fungsi .

Syntax

AsType( RecordReference, TableType )

  • RecordReference - Wajib. Referensi rekaman, seringkali bidang pencarian yang mengacu pada rekaman di salah satu dari beberapa tabel.
  • TableType - Wajib. Tabel tertentu untuk melemparkan rekaman.

AsType( DynamicValue, TypeSpecification )

  • DynamicValue - Diperlukan. Nilai dinamis dari fungsi ParseJSON atau panggilan API.
  • TypeSpecification - Diperlukan. Nama jenis atau spesifikasi jenis yang Anda tentukan dengan fungsi Jenis.

IsType( RecordReference, TableType )

  • RecordReference - Wajib. Referensi rekaman, sering kali bidang pencarian yang dapat merujuk ke rekaman di salah satu dari beberapa tabel.
  • TableType - Wajib. Tabel tertentu untuk diuji.

IsType( DynamicValue, TypeSpecification )

  • DynamicValue - Diperlukan. Nilai dinamis dari fungsi ParseJSON atau panggilan API.
  • TypeSpecification - Diperlukan. Nama jenis atau spesifikasi jenis yang ditentukan dengan fungsi Type.

Examples

Record References

Pahami referensi rekaman dan pencarian polimorfik berisi contoh yang luas.

  1. Buat aplikasi kanvas kosong untuk tablet.

  2. Di panel kiri, pilih Tambahkan data>, lalu tambahkan tabel Akun dan Kontak.

    Aplikasi kosong dengan dua sumber data: akun dan kontak.

  3. Di panel kiri, pilih + (Sisipkan) >Galeri vertikal Kosong>.

    Memasukkan kontrol galeri dengan tata letak vertikal kosong.

  4. Pilih Sambungkan ke data, lalu pilih Kontak sebagai sumber data.

  5. Atur tata letak galeri ke Judul dan subtitel.

    Buka pemilih tata letak dari panel properti.

    Atur tata letak ke Judul dan subjudul.

  6. Di panel Data, buka daftar Title1, lalu pilih Nama Lengkap.

    Tetapkan nilai judul.

  7. Pilih kontrol label Subtitle1.

    Tetapkan nilai subtitle.

  8. Tetapkan properti Teks dari Subtitle1 ke rumus 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'
    )
    

    Layar sekarang selesai menampilkan akun dan kontak yang tercampur di galeri.

    Subtitel di galeri menunjukkan nilai berikut:

    • "--" jika 'Nama Perusahaankosong.
    • "Akun: " dan bidang Nama Akun dari tabel Akun jika bidang Nama Perusahaan merujuk ke akun.
    • "Kontak: " dan bidang Nama Lengkap dari tabel Kontak jika bidang Nama Perusahaan merujuk ke kontak.

    Hasil Anda dapat berbeda karena data sampel dapat dimodifikasi untuk menampilkan lebih banyak jenis hasil.

Dynamic values

Contoh berikut menunjukkan catatan JSON sederhana yang ditafsirkan dengan berbagai cara oleh ParseJSON, AsType, dan IsType di Pac CLI Power Fx REPL.

Dalam contoh pertama ini, tidak ada informasi jenis yang disediakan untuk ParseJSON, sehingga mengembalikan nilai dinamis.

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

Bidang secara implisit dikonversi menjadi angka saat digunakan dalam konteks numerik.

>> 1 + rec.a
2

Sebagai alternatif, contoh ini secara eksplisit mengonversi rekaman menjadi rekaman yang diketik Power Fx dengan argumen kedua ke ParseJSON.

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

Dan alternatif lain, contoh ini secara eksplisit mengonversi rekaman menjadi catatan Power Fx yang ditik menggunakan AsType.

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

Terakhir, jika Anda tidak yakin, contoh ini menguji jenis sebelum mengonversinya dengan IsType fungsi .

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