Κοινή χρήση μέσω


Συναρτήσεις AsType και IsType functions

Ισχύει σε: Εφαρμογές καμβά Εφαρμογές βάσει μοντέλου Power Pages Power Platform CLI

Ελέγχει μια αναφορά καρτέλας για έναν συγκεκριμένο τύπο πίνακα (IsType) και αντιμετωπίζει την αναφορά ως τύπο (AsType).

Σημείωμα

Οι εντολές PAC CLI pac power-fx δεν υποστηρίζουν το IsType.

Description

Οι συναρτήσεις AsType και IsType μπορούν να χρησιμοποιηθούν για τη μετατροπή αναφορών εγγραφών (για παράδειγμα, πολυμορφικές αναζητήσεις στο Dataverse) και μη τυπολογημένων αντικειμένων σε τυπολογημένα αντικείμενα που μπορούν να χρησιμοποιηθούν απευθείας.

Αναφορές καρτέλας

Διαβάστε Κατανοήστε τις αναφορές καρτελών και τις πολυμορφικές αναζητήσεις για μια ευρύτερη εισαγωγή και περισσότερες λεπτομέρειες.

Ένα πεδίο αναζήτησης αναφέρεται συνήθως σε καρτέλες σε ένα συγκεκριμένο πίνακα. Επειδή ο τύπος πίνακα είναι ήδη καθορισμένος, μπορείτε να αποκτήσετε πρόσβαση στα πεδία της αναζήτησης χρησιμοποιώντας μια απλή σήμανση κουκκίδας. Για παράδειγμα, το First( Accounts ).'Primary Contact'.'Full Name' μετακινείται από τον πίνακα Λογαριασμοί στην καρτέλα Κύρια επαφή στον πίνακα Επαφές και εξάγει το πεδίο Πλήρες όνομα.

Το Microsoft Dataverse υποστηρίζει επίσης πεδία πολυμορφικής αναζήτησης, τα οποία μπορούν να αναφέρονται σε καρτέλες από ένα σύνολο πινάκων, όπως σε αυτά τα παραδείγματα.

Πεδίο αναζήτησης Μπορεί να αναφέρεται σε
Κάτοχος Χρήστες ή Ομάδες
Πελάτης Λογαριασμοί ή Επαφές
Σχετικά με Λογαριασμοί, Επαφές, Άρθρα γνώσεων κ.λπ.

Σε τύπους εφαρμογών καμβά, χρησιμοποιήστε αναφορές καρτελών για να εργαστείτε με πολυμορφικές αναζητήσεις. Επειδή μια αναφορά καρτέλας μπορεί να αναφέρεται σε διαφορετικούς πίνακες, δεν είναι σαφές ποια πεδία είναι διαθέσιμα στο περιβάλλον εκτέλεσης όταν γράφετε έναν τύπο. Η σημειογραφία Record.Field δεν είναι διαθέσιμη. Οι τύποι αυτοί πρέπει να προσαρμόζονται στις καρτέλες που εντοπίζει η εφαρμογή κατά την εκτέλεσή της.

Η συνάρτηση IsType ελέγχει αν μια αναφορά καρτέλας αναφέρεται σε έναν συγκεκριμένο τύπο πίνακα. Η συνάρτηση αποδίδει μια δυαδική τιμή TRUE ή FALSE.

Η συνάρτηση AsType αντιμετωπίζει μια αναφορά καρτέλας ως συγκεκριμένο τύπο πίνακα, που μερικές φορές αναφέρεται ως επιλογή για ρόλο. Μπορείτε να χρησιμοποιήσετε το αποτέλεσμα σαν να ήταν μια καρτέλα του πίνακα και να χρησιμοποιήσετε ξανά τη σήμανση Record.Field για να αποκτήσετε πρόσβαση σε όλα τα πεδία αυτής της καρτέλας. Παρουσιάζεται σφάλμα εάν η αναφορά δεν είναι του συγκεκριμένου τύπου.

Χρησιμοποιήστε αυτές τις λειτουργίες μαζί για να δοκιμάσετε πρώτα τον τύπο πίνακα μιας καρτέλας και, στη συνέχεια, να την αντιμετωπίσετε ως καρτέλα αυτού του τύπου, ώστε να είναι διαθέσιμα τα πεδία:

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

Χρειάζεστε αυτές τις συναρτήσεις μόνο εάν αποκτάτε πρόσβαση στα πεδία μιας αναφοράς καρτέλας. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε αναφορές καρτέλας στη συνάρτηση Filter χωρίς IsType ή AsType:

Filter( Accounts, Owner = First( Users ) )

Επίσης, μπορείτε να χρησιμοποιήσετε αναφορές καρτέλας με τη συνάρτηση Patch:

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

Εάν χρησιμοποιείται σε ένα περιβάλλον καρτέλας, όπως μέσα σε ένα στοιχείο ελέγχου Gallery ή Edit form, μπορεί να χρειαστεί να χρησιμοποιήσετε τον καθολικό τελεστή αποσαφήνισης για την αναφορά στον τύπο πίνακα. Για παράδειγμα, αυτός ο τύπος θα ήταν αποτελεσματικός για μια συλλογή που εμφανίζει μια λίστα επαφών όπου το Όνομα εταιρείας είναι μια αναζήτηση Πελάτη:

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

Και για τις δύο συναρτήσεις, καθορίζετε τον τύπο μέσω του ονόματος της προέλευσης δεδομένων που συνδέεται με τον πίνακα. Για να λειτουργήσει ο τύπος, πρέπει επίσης να προσθέσετε μια προέλευση δεδομένων στην εφαρμογή για οποιονδήποτε τύπο που θέλετε να δοκιμάσετε ή να εκτελέσετε. Για παράδειγμα, πρέπει να προσθέσετε τον πίνακα Χρήστες ως προέλευση δεδομένων εάν θέλετε να χρησιμοποιήσετε τα στοιχεία IsType και AsType με μια αναζήτηση Κατόχου και καρτέλες από αυτόν τον πίνακα. Μπορείτε να προσθέσετε μόνο τις προελεύσεις δεδομένων που χρησιμοποιείτε πραγματικά στην εφαρμογή σας. Δεν χρειάζεται να προσθέσετε όλους τους πίνακες στους οποίο θα μπορούσε να αναφέρεται μια αναζήτηση.

Εάν η αναφορά καρτέλας είναι κενή, το IsTypeεπιστρέφει την τιμή "ψευδής" και το AsType επιστρέφει κενό. Όλα τα πεδία μιας κενής καρτέλας θα είναι κενά.

Μη τυπολογημένα αντικείμενα

Σημαντικό

Ένα μη τυπολογημένο αντικείμενο από ένα API web ή τη [συνάρτηση ParseJSON] πρέπει να μετατραπεί σε τυπολογημένο αντικείμενο για να μπορέσει να χρησιμοποιηθεί στο Power Fx. Οι επιλογές για να το κάνετε αυτό περιλαμβάνουν:

  1. Πληκτρολογήστε έμμεσα το πεδίο στο σημείο που χρησιμοποιείται. Για παράδειγμα, ένα αντικείμενο μετατρέπεται σε αριθμό εάν χρησιμοποιείται με τον + τελεστή, εάν μπορεί να μετατραπεί σε αριθμό. Αυτή η επιλογή μπορεί να έχει μη αναμενόμενες μετατροπές και δεν μπορεί να μετατρέψει εγγραφές και πίνακες συνολικά.
  2. Πληκτρολογήστε ρητά κάθε πεδίο ξεχωριστά με τις συναρτήσεις Δεκαδικός, Κείμενο, DateTime, GUID και άλλες συναρτήσεις κατασκευαστή τύπων. Αυτό είναι το πιο επεμβατικό στις φόρμουλές σας, καθώς κάθε πεδίο πρέπει να γίνει ξεχωριστά.
  3. Προσδιορίστε ρητά το JSON με το δεύτερο όρισμα της συνάρτησης ParseJSON. Αυτή είναι μια εύκολη επιλογή που αποφεύγει την ανάγκη του μη τυπολογημένου αντικειμένου.
  4. Προσδιορίστε ρητά ένα μη τυπολογημένο αντικείμενο χρησιμοποιώντας τη συνάρτηση AsType. Μπορείτε επίσης να δοκιμάσετε τον τύπο πριν επιχειρήσετε τη μετατροπή με τη συνάρτηση IsType.

Σύνταξη

AsType( RecordReference, TableType )

  • RecordReference - Υποχρεωτικό. Μια αναφορά καρτέλας, συχνά ένα πεδίο αναζήτησης που μπορεί να αναφέρεται σε μια καρτέλα σε οποιονδήποτε από πολλούς πίνακες.
  • TableType - Απαιτείται. Ο συγκεκριμένος πίνακας στον οποίο θα πρέπει να ανατεθεί η καρτέλα.

AsType( UntypedObject, TypeSpecification )

  • UntypedObject - Απαιτείται. Μια αναφορά καρτέλας, συχνά ένα πεδίο αναζήτησης που μπορεί να αναφέρεται σε μια καρτέλα σε οποιονδήποτε από πολλούς πίνακες.
  • TypeSpecification - Απαιτείται. Ένα όνομα τύπου ή μια προδιαγραφή τύπου που ορίζεται με τη συνάρτηση Τύπος.

IsType( RecordReference, TableType )

  • RecordReference - Υποχρεωτικό. Μια αναφορά καρτέλας, συχνά ένα πεδίο αναζήτησης που μπορεί να αναφέρεται σε μια καρτέλα σε οποιονδήποτε από πολλούς πίνακες.
  • TableType - Απαιτείται. Ο συγκεκριμένος πίνακας για τον οποίο θα γίνει η δοκιμή.

IsType( UntypedObject, TypeSpecification )

  • UntypedObject - Απαιτείται. Μια αναφορά καρτέλας, συχνά ένα πεδίο αναζήτησης που μπορεί να αναφέρεται σε μια καρτέλα σε οποιονδήποτε από πολλούς πίνακες.
  • TypeSpecification - Απαιτείται. Ένα όνομα τύπου ή μια προδιαγραφή τύπου που ορίζεται με τη συνάρτηση Τύπος.

Παραδείγματα

Αναφορές καρτέλας

Κατανόηση των αναφορών καρτέλας και των πολυμορφικών αναζητήσεων περιέχει εκτενή παραδείγματα.

  1. Δημιουργήστε μια κενή εφαρμογή καμβά για tablet.

  2. Στο αριστερό τμήμα παραθύρου επιλέξτε Δεδομένα>Προσθήκη δεδομένων. Στη συνέχεια, προσθέστε τους πίνακες Λογαριασμοί και Επαφές.

    Κενή εφαρμογή με δύο προελεύσεις δεδομένων: λογαριασμοί και επαφές.

  3. Στο αριστερό τμήμα παραθύρου, επιλέξτε + (Εισαγωγή) >Διάταξη>Κατακόρυφη κενή συλλογή.

    Εισαγάγετε ένα Στοιχείο ελέγχου Gallery με κενή κατακόρυφη διάταξη.

  4. Επιλέξτε Σύνδεση σε δεδομένα και, στη συνέχεια, επιλέξτε Επαφές ως προέλευση δεδομένων.

  5. Ορίστε τη διάταξη της συλλογής σε Τίτλος και υπότιτλος.

    Άνοιγμα του επιλογέα διάταξης από το τμήμα παραθύρου

    Ορισμός διάταξης σε τίτλο και υπότιτλο.

  6. Στο τμήμα παραθύρου Δεδομένα, ανοίξτε τη λίστα Title1 κι, έπειτα, επιλέξτε Ονοματεπώνυμο.

    Ορισμός τιμής τίτλου.

  7. Επιλέξτε το Στοιχείο ελέγχου Label Subtitle1.

    Ορισμός τιμής υποτίτλου.

  8. Ορίστε την ιδιότητα Text του Subtitle1 σε αυτόν τον τύπο:

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

    Η οθόνη ολοκληρώνεται πλέον με την εμφάνιση λογαριασμών και επαφών που αναμειγνύονται στη συλλογή.

    Ο υπότιτλος στη συλλογή δείχνει αυτές τις τιμές:

    • "--" εάν το "Όνομα εταιρείας" είναι κενό.
    • "Λογαριασμός: " και στη συνέχεια το πεδίο Όνομα λογαριασμού από τον πίνακα Λογαριασμοί εάν το πεδίο Όνομα εταιρείας αναφέρεται σε λογαριασμό.
    • "Επαφή: " και στη συνέχεια το πεδίο Πλήρες όνομα από τον πίνακα Επαφές εάν το πεδίο Όνομα εταιρείας αναφέρεται σε επαφή.

    Τα αποτελέσματά σας ενδέχεται να διαφέρουν, επειδή το δείγμα δεδομένων ενδέχεται να έχει τροποποιηθεί ώστε να εμφανίζει περισσότερους τύπους αποτελεσμάτων.

Μη τυπολογημένα αντικείμενα

Τα παρακάτω παραδείγματα δείχνουν μια απλή εγγραφή JSON που ερμηνεύεται με διάφορους τρόπους από τα ParseJSON, AsType και IsType στο Pac CLI Power Fx REPL.

Σε αυτό το πρώτο παράδειγμα, δεν παρέχονται πληροφορίες τύπου στο ParseJSON, επομένως επιστρέφει ένα μη τυπολογημένο αντικείμενο.

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

Το πεδίο μετατρέπεται σιωπηρά σε αριθμό όταν χρησιμοποιείται σε αριθμητικό περιβάλλον.

>> 1 + rec.a
2

Εναλλακτικά, αυτό το παράδειγμα μετατρέπει ρητά την εγγραφή σε τυπολογημένη Power Fx εγγραφή με το δεύτερο όρισμα σε ParseJSON.

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

Και μια άλλη εναλλακτική λύση, αυτό το παράδειγμα μετατρέπει ρητά την εγγραφή σε τυπολογημένη Power Fx εγγραφή χρησιμοποιώντας το AsType.

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

Τέλος, εάν δεν ήμασταν σίγουροι, αυτό το παράδειγμα δοκιμάζει τον τύπο πριν τον μετατρέψει με τη συνάρτηση IsType.

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