Αντικείμενο App στο Power Apps
Ισχύει σε: Εφαρμογές καμβά Εφαρμογές βάσει μοντέλου
Παρέχει πληροφορίες σχετικά με την εφαρμογή που εκτελείται τη συγκεκριμένη στιγμή και έλεγχο της συμπεριφοράς της εφαρμογής.
Περιγραφή
Όπως ένα στοιχείο ελέγχου, το αντικείμενο εφαρμογής παρέχει ιδιότητες που προσδιορίζουν ποια οθόνη εμφανίζεται και που ζητούν από το χρήστη να αποθηκεύσει τις αλλαγές, έτσι ώστε να μην χαθούν. Κάθε εφαρμογή έχει ένα αντικείμενο εφαρμογής.
Μπορείτε να συντάξετε τύπους για ορισμένες ιδιότητες του αντικειμένου εφαρμογής. Στο επάνω μέρος του τμήματος παραθύρου προβολής δέντρου, επιλέξτε το αντικείμενο εφαρμογής όπως θα κάνατε με οποιοδήποτε άλλο στοιχείο ελέγχου ή οθόνη. Προβάλετε και επεξεργαστείτε μία από τις ιδιότητες του αντικειμένου, επιλέγοντάς την στην αναπτυσσόμενη λίστα, στα αριστερά της γραμμής τύπων.
Ιδιότητα ActiveScreen
Η ιδιότητα ActiveScreen προσδιορίζει την οθόνη που εμφανίζεται.
Αυτή η ιδιότητα επιστρέφει ένα αντικείμενο οθόνης. Χρησιμοποιήστε τη για να αναφέρετε ιδιότητες της οθόνης που εμφανίζεται τη δεδομένη στιγμή, όπως το όνομα με τον τύπο App.ActiveScreen.Name. Μπορείτε, επίσης, να συγκρίνετε αυτήν την ιδιότητα με ένα άλλο αντικείμενο οθόνης, όπως με τον τύπο σύγκρισης App.ActiveΏνΤελλον = Screen2 για να ελέγξετε αν το Screen2 είναι η οθόνη που εμφανίζεται τη δεδομένη στιγμή.
Χρησιμοποιήστε τη συνάρτηση Back ή Navigate για να αλλάξετε την οθόνη που εμφανίζεται.
Ιδιότητα BackEnabled
Η ιδιότητα BackEnabled αλλάζει τον τρόπο με τον οποίο η εφαρμογή ανταποκρίνεται στη χειρονομία επιστροφής της συσκευής (σύρετε ή χρησιμοποιήστε το κουμπί επιστροφής υλικού σε συσκευές Android, σύρετε από αριστερά και πάνω σε συσκευές iOS) όταν εκτελούνται σε κινητά Power Apps. Όταν είναι ενεργοποιημένη, η κίνηση προς τα πίσω της συσκευής πλοηγείται πίσω στην οθόνη που εμφανίστηκε πιο πρόσφατα, η οποία είναι παρόμοια με τον τύπο Πίσω. Όταν είναι απενεργοποιημένη, η κίνηση επιστροφής της συσκευής επιστρέφει τον χρήστη στη λίστα εφαρμογών.
Ιδιότητες ConfirmExit
Κανείς δεν θέλει να χάσει τις αλλαγές που δεν έχουν αποθηκευτεί. Χρησιμοποιήστε τις ιδιότητες ConfirmExit και ConfirmExitMessage για να προειδοποιήσετε το χρήστη προτού κλείσει την εφαρμογή σας.
Σημείωμα
- Το ConfirmExit δεν λειτουργεί σε εφαρμογές που είναι ενσωματωμένες, για παράδειγμα, στο Power BI και το SharePoint.
- Επί του παρόντος, αυτές οι ιδιότητες μπορούν να αναφέρονται σε στοιχεία ελέγχου μόνο στην πρώτη οθόνη, εάν η δυνατότητα προεπισκόπησης καθυστερημένης φόρτωσης είναι ενεργοποιημένη (η οποία είναι από προεπιλογή για νέες εφαρμογές). Εάν γίνονται αναφορές, το Power Apps Studio δεν εμφανίζει κάποιο σφάλμα, αλλά η δημοσιευμένη εφαρμογή που προκύπτει δεν ανοίγει στο Power Apps Mobile ή σε πρόγραμμα περιήγησης. Εργαζόμαστε για να καταργήσουμε αυτόν τον περιορισμό. Στο εντωμεταξύ, μπορείτε να απενεργοποιήσετε την καθυστερημένη φόρτωση στις Ρυθμίσεις>Επερχόμενες δυνατότητες (στην περιοχή Προεπισκόπηση).
ConfirmExit
ConfirmExit είναι μια δυαδική ιδιότητα η οποία, όταν είναι true, ανοίγει ένα παράθυρο διαλόγου επιβεβαίωσης πριν κλείσει η εφαρμογή. Από προεπιλογή, αυτή η ιδιότητα είναι false και δεν εμφανίζεται κανένα παράθυρο διαλόγου.
Σε περιπτώσεις όπου ο χρήστης μπορεί να έχει αλλαγές που δεν έχουν αποθηκευθεί στην εφαρμογή, χρησιμοποιήστε αυτήν την ιδιότητα για να εμφανίσετε ένα παράθυρο διαλόγου επιβεβαίωσης πριν κλείσετε την εφαρμογή. Χρησιμοποιήστε έναν τύπο που μπορεί να ελέγξει τις μεταβλητές και τις ιδιότητες του στοιχείου ελέγχου (για παράδειγμα, την ιδιότητα Unsaved του στοιχείου ελέγχου Edit form).
Το παράθυρο διαλόγου επιβεβαίωσης εμφανίζεται σε κάθε περίπτωση όπου τα δεδομένα θα μπορούσαν να χαθούν, όπως σε αυτά τα παραδείγματα:
- Εκτέλεση της συνάρτησης Exit.
- Εάν η εφαρμογή εκτελείται σε πρόγραμμα περιήγησης:
- Κλείσιμο του προγράμματος περιήγησης ή της καρτέλας του προγράμματος περιήγησης όπου εκτελείται η εφαρμογή.
- Επιλέγοντας το κουμπί "πίσω" του προγράμματος περιήγησης.
- Εκτέλεση της λειτουργίας Launch με ένα LaunchTarget του Self.
- Αν η εφαρμογή εκτελείται στο Power Apps Mobile (iOS ή Android):
- Σάρωση για μετάβαση σε διαφορετική εφαρμογή στο Power Apps Mobile.
- Επιλογή του κουμπιού "πίσω" σε μια συσκευή Android.
- Εκτέλεση της λειτουργίας Launch για την εκκίνηση μιας άλλης εφαρμογής καμβά.
Η ακριβής εμφάνιση του παραθύρου διαλόγου επιβεβαίωσης μπορεί να διαφέρει μεταξύ των συσκευών και των εκδόσεων του Power Apps.
Το παράθυρο διαλόγου επιβεβαίωσης δεν εμφανίζεται στο Power Apps Studio.
ConfirmExitMessage
Από προεπιλογή, στο παράθυρο διαλόγου επιβεβαίωσης εμφανίζεται ένα γενικό μήνυμα, όπως "Μπορεί να έχετε μη αποθηκευμένες αλλαγές." στη γλώσσα του χρήστη.
Χρησιμοποιήστε το ConfirmExitMessage για να παράσχετε ένα προσαρμοσμένο μήνυμα στο παράθυρο διαλόγου επιβεβαίωσης. Αν η ιδιότητα είναι blank, χρησιμοποιείται η προεπιλεγμένη τιμή. Τα προσαρμοσμένα μηνύματα περικόπτονται όπως απαιτείται για να χωρέσουν στο παράθυρο διαλόγου επιβεβαίωσης, γι' αυτό διατηρήστε το μήνυμα σε μερικές γραμμές το πολύ.
Σε ένα πρόγραμμα περιήγησης, το παράθυρο διαλόγου επιβεβαίωσης μπορεί να εμφανιστεί με ένα γενικό μήνυμα από το πρόγραμμα περιήγησης.
Σημείωμα
Το αντικείμενο εφαρμογής έχει δύο ακόμα ιδιότητες OnMessage
και BackEnabled
που είναι πειραματικές. Τελικά, αυτές οι ιδιότητες θα καταργηθούν από το αντικείμενο εφαρμογής. Συνιστάται να μην χρησιμοποιήσετε αυτές τις ιδιότητες στο περιβάλλον παραγωγής σας.
Παράδειγμα
Δημιουργήστε μια εφαρμογή που περιέχει δύο στοιχεία ελέγχου Form, το AccountForm και το ContactForm.
Ορίστε την ιδιότητα του αντικειμένου εφαρμογήςConfirmExit σε αυτήν την παράσταση:
AccountForm.Unsaved Or ContactForm.Unsaved
Αυτό το παράθυρο διαλόγου εμφανίζεται εάν ο χρήστης τροποποιήσει τα δεδομένα σε μια από τις δύο φόρμες και, στη συνέχεια, προσπαθήσει να κλείσει την εφαρμογή χωρίς να αποθηκεύσει αυτές τις αλλαγές.
Ορίστε την ιδιότητα του αντικειμένου εφαρμογήςConfirmExitMessage σε αυτόν τον τύπο:
If( AccountsForm.Unsaved, "Accounts form has unsaved changes.", "Contacts form has unsaved changes." )
Αυτό το παράθυρο διαλόγου εμφανίζεται εάν ο χρήστης τροποποιήσει τα δεδομένα στη φόρμα λογαριασμού και, στη συνέχεια, προσπαθήσει να κλείσει την εφαρμογή χωρίς να αποθηκεύσει αυτές τις αλλαγές.
Ρύθμιση κλειδιού οργάνων μέτρησης για το Application Insights
Για να εξαγάγετε αρχεία καταγραφής εφαρμογών που έχουν δημιουργηθεί από το σύστημα στο Application Insights, πρέπει να ρυθμίσετε το κλειδί εργαλείων για την εφαρμογή καμβά σας.
- Ανοίξτε την εφαρμογή σας για επεξεργασία στο Power Apps Studio.
- Επιλέξτε Εφαρμογή από την προβολή δέντρου στην αριστερή περιήγηση.
- Πληκτρολογήστε το κλειδί εργαλείων στο τμήμα παραθύρου ιδιοτήτων.
Αν τα δεδομένα δεν αποσταλούν στο App Insights, επικοινωνήστε με τον διαχειριστή Power Platform και επαληθεύστε αν το App Insights είναι απενεργοποιημένο σε επίπεδο μισθωτή.
Ιδιότητα Τύποι
Χρησιμοποιήστε τύπους με όνομα, στην ιδιότητα Τύποι για να καθορίσετε έναν τύπο που μπορεί να ξαναχρησιμοποιούνται σε όλη την εφαρμογή σας.
Στο Power Apps, οι τύποι καθορίζουν την τιμή των ιδιοτήτων του στοιχείου ελέγχου. Για παράδειγμα, για να ορίσετε το χρώμα φόντου με συνέπεια σε μια εφαρμογή, μπορείτε να ορίσετε την ιδιότητα Συμπλήρωση για κάθε έναν κοινό τύπο:
Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )
Με τόσα πολλά σημεία όπου μπορεί να εμφανιστεί αυτός ο τύπος, γίνεται κουραστικό και μπορεί να προκληθούν σφάλματα κατά την ενημέρωση εάν χρειάζεται μια αλλαγή. Αντί για αυτό, μπορείτε να δημιουργήσετε μια καθολική μεταβλητή στο OnStart για να ορίσετε το χρώμα μία φορά και, στη συνέχεια, να ξαναχρησιμοποιήσετε την τιμή σε όλη την εφαρμογή:
App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
Παρόλο που αυτή η μέθοδος είναι καλύτερη, εξαρτάται επίσης από το OnStart που εκτελείται πριν καθοριστεί η τιμή για το BGColor. Το BGColor μπορεί επίσης να χρησιμοποιηθεί σε κάποια γωνία της εφαρμογής για την οποία ο δημιουργός δεν γνωρίζει, μια αλλαγή που έγινε από κάποιον άλλο και αυτό μπορεί να είναι δύσκολο να το παρακολουθήσετε.
Οι τύποι με όνομα παρέχουν μια εναλλακτική. Όπως συνήθως γράφουμε στοιχείο ελέγχου-ιδιότητα = παράσταση, μπορούμε αντί για αυτό να γράψουμε όνομα = παράσταση και μετά να χρησιμοποιήσουμε ξανά το όνομα σε ολόκληρη την εφαρμογή μας για να αντικαταστήσουμε την παράσταση. Οι ορισμοί αυτών των τύπων γίνονται στην ιδιότητα Τύποι:
App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
Τα πλεονεκτήματα της χρήσης τύπων με όνομα περιλαμβάνουν τα εξής:
- Η τιμή του τύπου είναι πάντα διαθέσιμη. Δεν υπάρχει εξάρτηση χρόνου, κανένα OnStart που πρέπει να εκτελείται πρώτα για να οριστεί η τιμή, ούτε ώρα κατά την οποία η τιμή του τύπου είναι εσφαλμένη. Οι τύποι με όνομα μπορούν να αναφέρονται ο ένας στον άλλο με οποιαδήποτε σειρά, εφόσον δεν δημιουργούν κυκλική αναφορά. Μπορούν να υπολογιστούν παράλληλα.
- Η τιμή του τύπου είναι πάντα ενημερωμένη. Ο τύπος μπορεί να εκτελέσει έναν υπολογισμό που εξαρτάται από τις ιδιότητες του στοιχείου ελέγχου ή από τις καρτέλες της βάσης δεδομένων και καθώς αλλάζουν, η τιμή του τύπου ενημερώνεται αυτόματα. Δεν χρειάζεται να ενημερώσετε με μη αυτόματο τρόπο την τιμή όπως με μια μεταβλητή. Επίσης, οι τύποι μπορούν να υπολογιστούν εκ νέου μόνο όταν είναι απαραίτητο.
- Ο ορισμός του τύπου δεν μπορεί να είναι αμετάβλητος. Ο ορισμός στο στοιχείο Τύπος είναι μια μοναδική πηγή αλήθειας και η τιμή δεν μπορεί να αλλάξει εύκολα στην εφαρμογή. Με τις μεταβλητές, είναι πιθανό κάποιος κώδικας να αλλάξει απροσδόκητα μια τιμή, αλλά αυτή η δυσκολία στον εντοπισμό σφαλμάτων δεν είναι δυνατή με τύπους με όνομα.
- Ο υπολογισμός του τύπου μπορεί να αναβληθεί. Επειδή η τιμή της είναι αμετάβλητη, μπορεί πάντα να υπολογιστεί όταν χρειάζεται, πράγμα που σημαίνει ότι δεν χρειάζεται να υπολογιστεί μέχρι να χρειαστεί. Οι τιμές τύπου που δεν χρησιμοποιούνται μέχρι να εμφανιστεί το screen2 μιας εφαρμογής δεν πρέπει να υπολογιστούν μέχρι να είναι ορατό το screen2. Η αναβολή αυτής της εργασίας μπορεί να βελτιώσει το χρόνο φόρτωσης της εφαρμογής. Οι τύποι με όνομα είναι δηλωτικοί και παρέχουν ευκαιρίες στο σύστημα για βελτιστοποίηση του πώς και του πότε υπολογίζονται.
- Οι τύποι με όνομα είναι μια έννοια του Excel. Το Power Fx χρησιμοποιεί έννοιες Excel όπου είναι δυνατό, καθώς τόσοι πολλοί χρήστες γνωρίζουν καλά το Excel. Οι τύποι με όνομα είναι το ισοδύναμο κελιών με όνομα και των τύπων με όνομα στο Excel, η διαχείρισή τους γίνεται με τη Διαχείριση ονομάτων. Υπολογίζουν εκ νέου αυτόματα, όπως τα κελιά ενός υπολογιστικού φύλλου και οι ιδιότητες ελέγχου.
Ορίζονται τύποι με όνομα, ο ένας μετά τον άλλον στην ιδιότητα Τύποι, ο καθένας από τους οποίους λήγει με ελληνικό ερωτηματικό. Ο τύπος της φόρμουλας συνάγεται από τους τύπους των στοιχείων μέσα στη φόρμουλα και τον τρόπο με τον οποίο χρησιμοποιούνται μαζί. Για παράδειγμα, αυτοί οι τύποι με όνομα ανακτούν χρήσιμες πληροφορίες σχετικά με τον τρέχοντα χρήστη από το Dataverse:
UserEmail = User().Email;
UserInfo = LookUp( Users, 'Primary Email' = User().Email );
UserTitle = UserInfo.Title;
UserPhone = Switch( UserInfo.'Preferred Phone',
'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
UserInfo.'Main Phone' );
Εάν ο τύπος για το UserTitle πρέπει να ενημερωθεί, μπορεί να γίνει εύκολα σε αυτήν τη θέση. Αν το UserPhone δεν είναι απαραίτητο στην εφαρμογή, τότε αυτές οι κλήσεις στον πίνακα Χρήστες στο Dataverse δεν γίνονται. Δεν υπάρχει ποινή για τη συμπερίληψη ενός ορισμού τύπου που δεν χρησιμοποιείται.
Ορισμένοι περιορισμοί τύπων με όνομα:
- Δεν μπορούν να χρησιμοποιήσουν συναρτήσεις συμπεριφοράς ή να προκαλέσουν με άλλο τρόπο ανεπιθύμητες ενέργειες εντός της εφαρμογής.
- Δεν μπορούν να δημιουργήσουν κυκλική αναφορά. Δεν επιτρέπονται τα a = b; και b = a; στην ίδια εφαρμογή.
Συναρτήσεις που ορίζονται από το χρήστη
Σημαντικό
- Οι συναρτήσεις που ορίζονται από το χρήστη είναι πειραματικές.
- Οι πειραματικές δυνατότητες δεν προορίζονται για χρήση παραγωγής και ενδέχεται να μην είναι ολοκληρωμένες. Αυτές οι δυνατότητες είναι διαθέσιμες πριν από μια επίσημη κυκλοφορία έτσι ώστε να μπορείτε να έχετε πρόσβαση από νωρίς και να κάνετε σχόλια. Περισσότερες πληροφορίες: Κατανοήστε τις πειραματικές, αποσυρμένες δυνατότητες και δυνατότητες προεπισκόπησης σε εφαρμογές καμβά
- Η συμπεριφορά που περιγράφεται σε αυτό το άρθρο είναι διαθέσιμη μόνο όταν η πειραματική δυνατότητα Συναρτήσεις οριζόμενες από το χρήστη στις Ρυθμίσεις > Προσεχείς δυνατότητες > Πειραματικές είναι ενεργοποιημένες (είναι απενεργοποιημένες από προεπιλογή).
- Τα σχόλιά σας είναι πολύτιμα για εμάς. Πείτε μας τη γνώμη σας στο φόρουμ κοινότητας πειραματικών λειτουργιών του Power Apps.
Το Power Fx περιλαμβάνει μια μεγάλη λίστα ενσωματωμένων συναρτήσεων, όπως Αν, Κείμενο και Ορισμός. Οι συναρτήσεις που ορίζονται από το χρήστη σάς επιτρέπουν να γράφετε τις δικές σας συναρτήσεις που λαμβάνουν παραμέτρους και επιστρέφουν μια τιμή, όπως ακριβώς κάνουν οι ενσωματωμένες συναρτήσεις. Μπορείτε να θεωρήσετε τις συναρτήσεις που ορίζονται από το χρήστη ως επέκταση σε φόρμουλες με όνομα που προσθέτει παραμέτρους και υποστηρίζει φόρμουλες συμπεριφοράς.
Για παράδειγμα, μπορείτε να ορίσετε μια ονομασμένη φόρμουλα που επιστρέφει βιβλία μυθοπλασίας από μια βιβλιοθήκη:
Library = [ { Title: "The Hobbit", Author: "J. R. R. Tolkien", Genre: "Fiction" },
{ Title: "Oxford English Dictionary", Author: "Oxford University", Genre: "Reference" } ];
LibraryFiction = Filter( Library, Genre = "Fiction" );
Χωρίς παραμέτρους, θα έπρεπε να ορίσουμε ξεχωριστές ονομασμένες φόρμουλες για κάθε είδος. Αλλά αντ 'αυτού, ας παραμετροποιήσουμε την ονομασμένη φόρμουλα μας:
LibraryType := Type( [ { Title: Text, Author: Text, Genre: Text } ] );
LibraryGenre( SelectedGenre: Text ): LibraryType = Filter( Library, Genre = SelectedGenre );
Τώρα μπορούμε να καλέσουμε LibraryGenre( "Fiction" )
, LibraryGenre( "Reference" )
, ή να φιλτράρουμε άλλα είδη με μία μόνο συνάρτηση καθορισμένη από το χρήστη.
Η σύνταξη είναι η εξής:
FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) : ReturnType = Formula;
- FunctionName – Απαιτείται. Το όνομα της συνάρτησης που καθορίζεται από τον χρήστη.
- ParameterName(s) - Προαιρετικό. Το όνομα μιας παραμέτρου συνάρτησης.
- ParameterType(s) – Προαιρετικό. Το όνομα ενός τύπου, είτε ένα όνομα ενσωματωμένου ονόματος τύπου δεδομένων, ένα όνομα προέλευσης δεδομένων ή έναν τύπο που ορίζεται από μια συνάρτηση Τύπος.
- ReturnType – Απαιτείται. Ο τύπος της τιμής που επιστρέφεται από τη συνάρτηση.
- Formula - Υποχρεωτικό. Ο τύπος που υπολογίζει την τιμή της συνάρτησης με βάση τις παραμέτρους.
Κάθε παράμετρος και το αποτέλεσμα από τη συνάρτηση ορισμού χρήστη πρέπει να έχουν τύπο. Σε αυτό το παράδειγμα, το SelectedGenre: Text
ορίζει την πρώτη παράμετρο της συνάρτησής μας να είναι τύπου Κείμενο και SelectedGenre
είναι το όνομα της παραμέτρου που χρησιμοποιείται στο σώμα για τη λειτουργία φίλτρου. Ανατρέξτε στην ενότητα Τύποι δεδομένων για τα υποστηριζόμενα ονόματα τύπων. Η συνάρτηση Τύπος χρησιμοποιείται για τη δημιουργία ενός συγκεντρωτικού τύπου για τη βιβλιοθήκη μας, ώστε να μπορούμε να επιστρέψουμε έναν πίνακα βιβλίων από τη συνάρτησή μας.
Ορίσαμε LibraryType
ως πληθυντικό πίνακα τύπου καρτελών. Εάν θέλουμε να μεταβιβάσουμε ένα μόνο βιβλίο σε μια συνάρτηση, μπορούμε να εξαγάγουμε τον τύπο της εγγραφής για αυτόν τον πίνακα με τη συνάρτηση RecordOf:
BookType := Type( RecordOf( LibraryType ) );
IsGenre( Book: BookType, SelectedGenre: Text ): Boolean = (Book.Genre = SelectedGenre);
Η αντιστοίχιση εγγραφών για παραμέτρους συνάρτησης είναι αυστηρότερη από ό, τι σε άλλα μέρη του Power Fx. Τα πεδία μιας τιμής καρτέλας πρέπει να αποτελούν κατάλληλο υποσύνολο του ορισμού τύπου και δεν μπορούν να περιλαμβάνουν πρόσθετα πεδία. Για παράδειγμα, το IsGenre( { Title: "My Book", Published: 2001 }, "Fiction" )
θα οδηγήσει σε σφάλμα.
Σημείωση, η αναδρομή δεν υποστηρίζεται ακόμη από συναρτήσεις καθορισμένες από το χρήστη.
Συμπεριφορά συναρτήσεων καθορισμένων από το χρήστη
Οι ονομασμένες φόρμουλες και οι περισσότερες συναρτήσεις που ορίζονται από το χρήστη δεν υποστηρίζουν συμπεριφορές με παρενέργειες, όπως Ορισμός ή Ειδοποίηση. Γενικά, είναι καλύτερο να αποφύγετε την ενημέρωση της κατάστασης εάν μπορείτε, αντ 'αυτού να βασίζεστε σε λειτουργικά μοτίβα προγραμματισμού και να επιτρέπετε στο Power Fx να κάνει αυτόματο επανυπολογισμό τύπων όπως απαιτείται. Αλλά, υπάρχουν περιπτώσεις όπου είναι αναπόφευκτο. Για να συμπεριλάβετε λογική συμπεριφοράς σε μια συνάρτηση που ορίζεται από το χρήστη, τυλίξτε το σώμα με σγουρά σιδεράκια:
Spend( Amount: Number ) : Void = {
If( Amount > Savings,
Error( $"{Amount} is more than available savings" ),
Set( Savings, Savings - Amount );
Set( Spent, Spent + Amount)
);
}
Τώρα μπορούμε να καλέσουμε Spend( 12 )
για να ελέγξουμε αν έχουμε 12 στις αποταμιεύσεις μας και, αν ναι, να το χρεώσουμε με 12 και να προσθέσουμε 12 στη μεταβλητή Δαπάνη. Ο τύπος επιστροφής αυτής της συνάρτησης είναι Άκυρο καθώς δεν επιστρέφει τιμή.
Η σύνταξη μιας συνάρτησης που ορίζεται από τη συμπεριφορά του χρήστη είναι:
FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) : ReturnType = { Formula1 [ ; Formula2 ... ] };
- FunctionName – Απαιτείται. Το όνομα της συνάρτησης που καθορίζεται από τον χρήστη.
- ParameterName(s) - Προαιρετικό. Το όνομα μιας παραμέτρου συνάρτησης.
- ParameterType(s) – Προαιρετικό. Το όνομα ενός τύπου, είτε ένα όνομα ενσωματωμένου ονόματος τύπου δεδομένων, ένα όνομα προέλευσης δεδομένων ή έναν τύπο που ορίζεται από μια συνάρτηση Τύπος.
- ReturnType – Απαιτείται. Ο τύπος της τιμής που επιστρέφεται από τη συνάρτηση. Χρησιμοποιήστε Άκυρο εάν η συνάρτηση δεν επιστρέφει τιμή.
- Τύποι - Υποχρεωτικό. Ο τύπος που υπολογίζει την τιμή της συνάρτησης με βάση τις παραμέτρους.
Όπως συμβαίνει με όλες τις Power Fx φόρμουλες, η εκτέλεση δεν τελειώνει όταν παρουσιαστεί σφάλμα. Μετά την κλήση της συνάρτησης Σφάλμα, η συνάρτηση Αν αποτρέπει τις αλλαγές στις Αποταμιεύσεις και τις Δαπάνες. Η συνάρτηση IfError μπορεί επίσης να χρησιμοποιηθεί για την αποτροπή περαιτέρω εκτέλεσης μετά από σφάλμα. Παρόλο που επιστρέφει Άκυρο, η φόρμουλα μπορεί να επιστρέψει σφάλμα εάν υπάρχει πρόβλημα.
Τύποι καθορισμένοι από τον χρήστη
Σημαντικό
- Οι Τύποι καθορισμένοι από τον χρήστη είναι μια πειραματική δυνατότητα.
- Οι πειραματικές δυνατότητες δεν προορίζονται για χρήση παραγωγής και ενδέχεται να μην είναι ολοκληρωμένες. Αυτές οι δυνατότητες είναι διαθέσιμες πριν από μια επίσημη κυκλοφορία έτσι ώστε να μπορείτε να έχετε πρόσβαση από νωρίς και να κάνετε σχόλια. Περισσότερες πληροφορίες: Κατανοήστε τις πειραματικές, αποσυρμένες δυνατότητες και δυνατότητες προεπισκόπησης σε εφαρμογές καμβά
- Η συμπεριφορά που περιγράφεται σε αυτό το άρθρο είναι διαθέσιμη μόνο όταν η πειραματική δυνατότητα Τύποι καθορισμένοι από τον χρήστη στις Ρυθμίσεις > Προσεχείς δυνατότητες > Πειραματικές είναι ενεργοποιημένες (είναι απενεργοποιημένες από προεπιλογή).
- Τα σχόλιά σας είναι πολύτιμα για εμάς. Πείτε μας τη γνώμη σας στο φόρουμ κοινότητας πειραματικών λειτουργιών του Power Apps.
Οι ονομασμένες φόρμουλες μπορούν να χρησιμοποιηθούν με τη συνάρτηση Τύπος για τη δημιουργία τύπων καθορισμένων από τον χρήστη. Χρησιμοποιήστε :=
αντί =
για να ορίσετε έναν τύπο καθορισμένο από το χρήστη, για παράδειγμα Book := Type( { Title: Text, Author: Text } )
. Ανατρέξτε στη συνάρτηση Τύπος για περισσότερες πληροφορίες και παραδείγματα.
Ιδιότητα OnError
Χρησιμοποιήστε OnError για να αναλάβετε δράση όταν ένα σφάλμα συμβαίνει οπουδήποτε στην εφαρμογή. Παρέχει μια καθολική ευκαιρία για να εντοπίσετε ένα διαφημιστικό πλαίσιο σφάλματος πριν να εμφανίζεται στον τελικό χρήστη. Μπορεί επίσης να χρησιμοποιηθεί για την καταγραφή ενός σφάλματος με τη συνάρτηση Trace ή για εγγραφή σε βάση δεδομένων ή υπηρεσία Web.
Σε εφαρμογές καμβά, το αποτέλεσμα κάθε αξιολόγησης τύπου ελέγχεται για κάποιο σφάλμα. Εάν πρόκειται για σφάλμα, το OnError θα αξιολογηθεί με τις ίδιες μεταβλητές πεδίου FirstError και AllErrors που θα είχαν εμφανιστεί εάν ολόκληρος ο τύπος είχε χρησιμοποιηθεί σε μια συνάρτηση IfError.
Εάν το OnError είναι κενό, εμφανίζεται ένα προεπιλεγμένο διαφημιστικό πλαίσιο σφάλματος με το όνομα FirstError.Message του σφάλματος. Ο ορισμός ενός τύπου OnError αντικαθιστά αυτήν τη συμπεριφορά, επιτρέποντας στο δημιουργό να χειρίζεται την αναφορά σφαλμάτων κατά το δυνατό. Η προεπιλεγμένη συμπεριφορά μπορεί να ζητηθεί στο OnError με αλλαγή του σφάλματος με τη συνάρτηση Error. Χρησιμοποιήστε την προσέγγιση αλλαγής εάν ορισμένα σφάλματα πρόκειται να φιλτραριστούν ή να υποβληθούν σε χειρισμό με διαφορετικό τρόπο, ενώ άλλα σφάλματα πρόκειται να περάσουν από εκεί.
Το OnError δεν μπορεί να αντικαταστήσει ένα σφάλμα στους υπολογισμούς με τον τρόπο που μπορεί να κάνει το IfError. Στο σημείο που καλείται το OnError, το σφάλμα έχει ήδη συμβεί και έχει ήδη υποβληθεί σε επεξεργασία μέσω υπολογισμών τύπου IfError. Το OnError ελέγχει μόνο την αναφορά σφαλμάτων.
Οι τύποι OnError αξιολογούνται ταυτόχρονα και είναι πιθανό η αξιολόγηση τους να επικαλύπτεται με την επεξεργασία άλλων σφαλμάτων. Για παράδειγμα, εάν ορίσετε μια καθολική μεταβλητή στην κορυφή ενός OnError και τη διαβάσετε αργότερα στον ίδιο τύπο, η τιμή μπορεί να έχει αλλάξει. Χρησιμοποιήστε τη συνάρτηση With για να δημιουργήσετε μια τιμή με όνομα που είναι τοπική στον τύπο.
Παρόλο που κάθε σφάλμα υπόκειται σε επεξργασία ξεχωριστά από το OnError, το προεπιλεγμένο διαφημιστικό πλαίσιο σφάλματος ενδεχομένως να μην εμφανίζεται για κάθε σφάλμα ξεχωριστά. Για να αποφύγετε την εμφάνιση υπερβολικά πολλών διαφημιστικών πλαισίων σφαλμάτων ταυτόχρονα, το ίδιο σφάλμα δεν θα εμφανιστεί ξανά εάν έχει εμφανιστεί πρόσφατα.
Παράδειγμα
Λάβετε υπόψη σας ένα στοιχείο ελέγχου Label και ένα στοιχείο ελέγχου Slider που είναι συνδεδεμένα μεταξύ τους μέσω του τύπου:
Label1.Text = 1/Slider1.Value
Το slider έχει ως προεπιλογή τον αριθμό 50. Εάν το slider μετακινηθεί στο 0, το Label1 δεν θα εμφανίζει καμία τιμή και θα εμφανίζεται ένα διαφημιστικό πλαίσιο σφάλματος:
Δείτε αναλυτικά τι συνέβη:
- Ο χρήστης μετακίνησε τη διαφάνεια προς τα αριστερά και η ιδιότητα Slide1.Value άλλαξε σε 0.
- Το Label1.Text επαναξιολογήθηκε αυτόματα. Σημειώθηκε διαίρεση με το μηδέν, δημιουργώντας ένα σφάλμα.
- Δεν υπάρχει IfError σε αυτόν τον τύπο. Το σφάλμα διαίρεσης με το μηδέν επιστρέφεται από την αξιολόγηση τύπου.
- Το Label1.Text δεν εμφανίζει κανένα μήνυμα για αυτό το σφάλμα, επομένως, εμφανίζει μια κενή κατάσταση.
- Το OnError καλείται. Εφόσον δεν υπάρχει δείκτης χειρισμού, εμφανίζεται το διαφημιστικό πλαίσιο τυπικού σφάλματος με τις πληροφορίες σφάλματος.
Εάν απαιτείται, θα μπορούσαμε επίσης να τροποποιήσουμε τον τύπο σε Label1.Text = IfError( 1/Slider1.Value, 0 )
. Αν χρησιμοποιήσετε το IfError αυτό θα είχε ως αποτέλεσμα να μην υπάρχει σφάλμα ή διαφημιστικό πλαίσιο σφάλματος. Δεν μπορούμε να αλλάξουμε την τιμή ενός σφάλματος από OnError καθώς σε εκείνο το σημείο έχει ήδη συμβεί το σφάλμα, πρόκειται μόνο για θέμα πώς θα γίνει η αναφορά του.
Εάν προσθέσουμε ένα δείκτη χειρισμού OnError, δεν θα έχει καμία επίδραση πριν από το βήμα 5, αλλά μπορεί να επηρεάσει τον τρόπο με τον οποίο αναφέρθηκε το σφάλμα:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" )
Με το OnError από την πλευρά του χρήστη της εφαρμογής, δεν θα υπάρχει σφάλμα. Όμως, το σφάλμα θα προστεθεί στο ίχνος της εποπτείας, πλήρες με την προέλευση των πληροφοριών σφάλματος από το FirstError:
Αν θα θέλαμε επίσης να εμφανίζεται το ίδιο προεπιλεγμένο διαφημιστικό πλαίσιο σφάλματος εκτός από το ίχνος, μπορούμε να ξαναδώσουμε το σφάλμα με τη συνάρτηση Error μετά την κλήση Trace ακριβώς όπως θα γινόταν εάν δεν υπήρχε το Trace:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )
Ιδιότητα OnStart
Σημείωμα
Η χρήση της ιδιότητας OnStart μπορεί να προκαλέσει προβλήματα απόδοσης κατά τη φόρτωση μιας εφαρμογής. Είμαστε στη διαδικασία δημιουργίας εναλλακτικών για τους δύο κορυφαίους λόγους για τη χρήση δεδομένων προσωρινής αποθήκευσης ιδιοτήτων - και τη ρύθμιση καθολικών μεταβλητών. Έχουμε ήδη δημιουργήσει μια εναλλακτική για τον ορισμό της πρώτης οθόνης που θα εμφανιστεί με την Navigate. Ανάλογα με το περιβάλλον σας, αυτή η ιδιότητα μπορεί να απενεργοποιηθεί από προεπιλογή. Εάν δεν το βλέπετε και πρέπει να το χρησιμοποιήσετε, ελέγξτε τις ρυθμίσεις για προχωρημένους της εφαρμογής για να κάνετε εναλλαγή ώστε να την ενεργοποιήσετε. Η ιδιότητα OnVisible μιας οθόνης μπορεί επίσης να χρησιμοποιηθεί. Από προεπιλογή, όταν είναι ενεργοποιημένος ο κανόνας OnStart χωρίς αποκλεισμό , επιτρέπει στη λειτουργία OnStart να εκτελείται ταυτόχρονα με άλλους κανόνες εφαρμογής. Επομένως, εάν οι μεταβλητές που αναφέρονται σε άλλους κανόνες εφαρμογής προετοιμάζονται εντός της συνάρτησης OnStart, ενδέχεται να μην έχουν προετοιμαστεί πλήρως ακόμα. Επιπλέον, υπάρχει πιθανότητα μια οθόνη να μπορεί να αποδοθεί και να γίνει αλληλεπιδραστική πριν από την ολοκλήρωση της εκτέλεσης των συναρτήσεων Screen.OnVisible ή App.OnStart, ειδικά εάν χρειάζονται πολύ χρόνο για να ολοκληρωθούν.
Η ιδιότητα OnStart εκτελείται όταν ο χρήστης εκκινεί την εφαρμογή. Αυτή η ιδιότητα χρησιμοποιείται συχνά για την εκτέλεση των ακόλουθων εργασιών:
- Ανάκτηση και προσωρινή αποθήκευση δεδομένων σε συλλογές χρησιμοποιώντας τη συνάρτηση Collect.
- Ρύθμιση καθολικών μεταβλητών χρησιμοποιώντας τη συνάρτηση Set.
Αυτός ο τύπος αξιολογείται πριν εμφανιστεί η πρώτη οθόνη. Δεν έχει φορτωθεί καμία οθόνη, επομένως δεν μπορείτε να ορίσετε μεταβλητές περιβάλλοντος με τη συνάρτηση UpdateContext. Ωστόσο, μπορείτε να μεταβιβάσετε μεταβλητές περιβάλλοντος με τη συνάρτηση Navigate.
Αφού αλλάξετε την ιδιότητα OnStart, δοκιμάστε την με τον δείκτη του ποντικιού πάνω από το αντικείμενο Εφαρμογή στο παράθυρο Προβολή δέντρου, επιλέγοντας τα αποσιωπητικά (...) και, στη συνέχεια, επιλέγοντας Εκτέλεση OnStart. Σε αντίθεση με την πρώτη φορά που φορτώνεται η εφαρμογή, θα οριστούν ήδη οι υπάρχουσες συλλογές και μεταβλητές. Για να ξεκινήσετε με κενές συλλογές, χρησιμοποιήστε συνάρτηση ClearCollect αντί για τη συνάρτηση Collect.
Σημείωμα
- Η χρήση της συνάρτησης Navigate στην ιδιότητα OnStart έχει αποσυρθεί. Οι υπάρχουσες εφαρμογές θα συνεχίσουν να λειτουργούν. Για περιορισμένο χρονικό διάστημα, θα μπορείτε ακόμα να την ενεργοποιήσετε στις ρυθμίσεις εφαρμογής (διαθέσιμη στην περιοχή Έχει αποσυρθεί). Ωστόσο, η χρήση της επιλογής Navigate με αυτόν τον τρόπο μπορεί να οδηγήσει σε καθυστερήσεις φόρτωσης εφαρμογής καθώς αναγκάζει το σύστημα να ολοκληρώσει την αξιολόγηση του OnStart πριν από την εμφάνιση της πρώτης οθόνης. Χρησιμοποιήστε την ιδιότητα StartScreen αντ' αυτού, ώστε να υπολογίσετε την πρώτη οθόνη που εμφανίζεται.
- Η εναλλαγή που έχει αποσυρθεί θα απενεργοποιηθεί για εφαρμογές που δημιουργήθηκαν πριν από τον Μάρτιο του 2021, όπου προσθέσατε την Navigate στο OnStart μεταξύ του Μαρτίου 2021 και σήμερα. Όταν επεξεργάζεστε αυτές τις εφαρμογές στο Power Apps Studio, ενδέχεται να δείτε ένα σφάλμα. Ενεργοποιήστε την εναλλαγή που έχει αποσυρθεί για να καταργήσετε αυτό το σφάλμα.
Ιδιότητα StartScreen
Η ιδιότητα StartScreen καθορίζει ποια οθόνη θα εμφανίζεται πρώτα. Αξιολογείται μία φορά όταν φορτώνεται η εφαρμογή και επιστρέφει το αντικείμενο οθόνης προς εμφάνιση. Από προεπιλογή, αυτή η ιδιότητα θα είναι κενή και θα εμφανίζεται πρώτα η πρώτη οθόνη στην προβολή Δέντρου Studio.
Το StartScreen είναι μια ιδιότητα ροής δεδομένων που δεν μπορεί να περιέχει λειτουργίες συμπεριφοράς. Είναι διαθέσιμες όλες οι λειτουργίες ροής δεδομένων, συγκεκριμένα χρησιμοποιήστε αυτές τις λειτουργίες και τα σήματα για να καθορίσετε ποια οθόνη θα εμφανίζεται πρώτα:
- Συνάρτηση Param για την ανάγνωση παραμέτρων που χρησιμοποιούνται για την έναρξη της εφαρμογής.
- Συνάρτηση User για την ανάγνωση πληροφοριών σχετικά με τον τρέχοντα χρήστη.
- LookUp, Filter, CountRows, Max, και άλλες συναρτήσεις που κάνουν ανάγνωση από μια προέλευση δεδομένων.
- Τυχόν κλήσεις API μέσω σύνδεσης, αλλά να είστε προσεκτικοί ώστε να επιστρέψει γρήγορα.
- Σήματα, όπως Σύνδεση, Compass και Εφαρμογή.
Σημείωμα
Οι καθολικές μεταβλητές και οι συλλογές, συμπεριλαμβανομένων εκείνων που δημιουργήθηκαν στο OnStart, δεν είναι διαθέσιμες στο StartScreen. Οι ονομασμένοι τύποι φόρμουλας είναι διαθέσιμοι και συχνά αποτελούν καλύτερη εναλλακτική λύση για την επαναχρησιμοποίηση τύπων σε ολόκληρη την εφαρμογή.
Εάν η οθόνη StartScreen επιστρέφει κάποιο σφάλμα, η πρώτη οθόνη στην προβολή Δέντρου Studio θα εμφανίζεται σαν να μην έχει οριστεί το StartScreen. Χρησιμοποιήστε τη λειτουργία IfError για να εντοπίσετε τυχόν σφάλματα και να ανακατευθυνθείτε στην κατάλληλη οθόνη σφαλμάτων.
Αφού αλλάξετε το StartScreen στο Studio, δοκιμάστε το με τον δείκτη του ποντικιού πάνω από το αντικείμενο Εφαρμογή στο παράθυρο Προβολή δέντρου, επιλέγοντας τα αποσιωπητικά (...), και επιλέγοντας μετά Μετάβαση στο StartScreen. Η οθόνη θα αλλάξει σαν να έχει γίνει φόρτωση της εφαρμογής.
Παραδείγματα
Screen9
Υποδεικνύει ότι το Screen9
πρέπει να εμφανίζεται πρώτα κάθε φορά που ξεκινά η εφαρμογή.
If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )
Ελέγχει αν η "λειτουργία διαχείρισης" Param έχει οριστεί από το χρήστη και τη χρησιμοποιεί για να αποφασίσει αν θα εμφανίζεται πρώτα το HomeScreen ή το AdminScreen.
If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )
Ελέγχει αν ένας συμμετέχων σε μια σύσκεψη είναι μέλος του προσωπικού και τους κατευθύνει στη σωστή οθόνη κατά την εκκίνηση.
IfError( If( CustomConnector.APICall() = "Forest",
ForestScreen,
OceanScreen
),
ErrorScreen
)
Κατευθύνει την εφαρμογή με βάση μια κλήση μέσω API είτε στο ForestScreen
είτε στο OceanScreen
. Εάν το API αποτύχει για οποιονδήποτε λόγο, τότε χρησιμοποιείται το ErrorScreen
.
Ιδιότητα StudioVersion
Χρησιμοποιήστε την ιδιότητα StudioVersion για να εμφανίσετε ή να καταγράψετε την έκδοση του Power Apps Studio που χρησιμοποιήθηκε για τη δημοσίευση μιας εφαρμογής. Αυτό μπορεί να είναι χρήσιμο κατά τον εντοπισμό σφαλμάτων και για να βεβαιωθείτε ότι η εφαρμογή σας έχει επαναδημοσιευθεί με μια πρόσφατη έκδοση του Power Apps Studio.
ο StudioVersion επιστρέφεται ως κείμενο. Η μορφή του κειμένου μπορεί να αλλάξει με την πάροδο του χρόνου και θα πρέπει να αντιμετωπίζεται συνολικά. Αποφύγετε την εξαγωγή μεμονωμένων μερίδων.