Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Ισχύει για: Εφαρμογές καμβά
Λάβετε πληροφορίες σχετικά με την εφαρμογή που εκτελείται τη συγκεκριμένη στιγμή και ελέγξτε τη συμπεριφορά της εφαρμογής.
Description
Όπως σε ένα στοιχείο ελέγχου, το αντικείμενο εφαρμογής έχει ιδιότητες που προσδιορίζουν ποια οθόνη εμφανίζεται και σας ζητούν να αποθηκεύσετε τις αλλαγές, ώστε να μην τις χάσετε. Κάθε εφαρμογή έχει ένα αντικείμενο εφαρμογής.
Συντάξτε τύπους για ορισμένες ιδιότητες του αντικειμένου εφαρμογής . Στο επάνω μέρος του τμήματος παραθύρου προβολής δέντρου, επιλέξτε το αντικείμενο εφαρμογής όπως θα κάνατε με οποιοδήποτε άλλο στοιχείο ελέγχου ή οθόνη. Για να προβάλετε ή να επεξεργαστείτε μία από τις ιδιότητες του αντικειμένου, επιλέξτε το στην αναπτυσσόμενη λίστα στα αριστερά της γραμμής τύπων.
Αυτό το άρθρο καλύπτει τις παρακάτω ιδιότητες αντικειμένου εφαρμογής :
- ActiveScreen – η οθόνη που εμφανίζεται τη συγκεκριμένη στιγμή.
- BackEnabled – ο τρόπος απόκρισης της εφαρμογής στην κίνηση της συσκευής.
- ConfirmExit και ConfirmExitMessage – προειδοποιήστε τον χρήστη πριν κλείσει την εφαρμογή.
- Συμβολοσειρά σύνδεσης – ρυθμίστε την καταγραφή του Application Insights.
- Τύποι – καθορίστε επώνυμους τύπους, συναρτήσεις που ορίζονται από τον χρήστη και τύπους που ορίζονται από τον χρήστη.
- OnError – χειριστείτε σφάλματα καθολικά.
- OnStart – εκτελέστε λογική κατά την εκκίνηση της εφαρμογής.
- StartScreen – Ορίστε την οθόνη που εμφανίζεται πρώτη όταν φορτώνει η εφαρμογή.
- StudioVersion– επιστρέψτε την έκδοση Power Apps Studio που δημοσίευσε την εφαρμογή.
Ιδιότητα ActiveScreen
Η ιδιότητα ActiveScreen αναγνωρίζει την οθόνη που εμφανίζεται τη συγκεκριμένη στιγμή.
Αυτή η ιδιότητα επιστρέφει ένα αντικείμενο οθόνης. Χρησιμοποιήστε το για να αναφέρετε ιδιότητες της τρέχουσας οθόνης, όπως το όνομα με τον τύπο App.ActiveScreen.Name. Μπορείτε επίσης να συγκρίνετε αυτή την ιδιότητα με ένα άλλο αντικείμενο οθόνης, όπως με τον τύπο σύγκρισης App.ActiveScreen = Screen2 για να ελέγξετε εάν η Screen2 είναι η τρέχουσα οθόνη.
Χρησιμοποιήστε τη συνάρτηση Back ή Navigate για να αλλάξετε την οθόνη που εμφανίζεται.
Ιδιότητα BackEnabled
Η ιδιότητα BackEnabled αλλάζει τον τρόπο με τον οποίο η εφαρμογή ανταποκρίνεται στην κίνηση στην πλάτη της συσκευής (σαρώστε ή χρησιμοποιήστε το κουμπί επιστροφής υλικού σε συσκευές Android ή σαρώστε από τα αριστερά σε συσκευές iOS) όταν εκτελείται στο Power Apps mobile. Όταν ενεργοποιηθεί, η κίνηση της συσκευής πίσω επιστρέφει στην οθόνη που εμφανιζόταν πιο πρόσφατα, η οποία είναι παρόμοια με τον τύπο Πίσω . Όταν είναι απενεργοποιημένη, η χειρονομία συσκευής επαναφέρει τον χρήστη στη λίστα εφαρμογών.
Ιδιότητες ConfirmExit
Κανείς δεν θέλει να χάσει τις αλλαγές που δεν έχουν αποθηκευτεί. Χρησιμοποιήστε τις ιδιότητες ConfirmExit και ConfirmExitMessage για να ειδοποιήσετε τον χρήστη πριν κλείσει την εφαρμογή σας.
Σημείωμα
- Επιβεβαιώστε ότι τοExit δεν λειτουργεί σε εφαρμογές που είναι ενσωματωμένες, για παράδειγμα, στο Power BI και το SharePoint.
- Επιβεβαιώστε ότι η δυνατότηταExit δεν υποστηρίζεται σε προσαρμοσμένες σελίδες.
- Τώρα, αυτές οι ιδιότητες μπορούν να αναφέρουν στοιχεία ελέγχου μόνο στην πρώτη οθόνη εάν είναι ενεργοποιημένη η δυνατότητα προεπισκόπησης Καθυστερημένη φόρτωση (η οποία είναι από προεπιλογή για τις νέες εφαρμογές). Εάν αναφέρετε άλλες οθόνες, το Power Apps Studio δεν εμφανίζει σφάλμα, αλλά η δημοσιευμένη εφαρμογή δεν ανοίγει στο Power Apps Mobile ή σε ένα πρόγραμμα περιήγησης. Microsoft εργάζεται για την άρση αυτού του περιορισμού. Εν τω μεταξύ, απενεργοποιήστε την επιλογή Καθυστερημένη φόρτωση στις Ρυθμίσεις Επερχόμενες δυνατότητες> (στην περιοχή Προεπισκόπηση).
ConfirmExit
Επιβεβαιώστε ότι τοExit είναι μια δυαδική ιδιότητα που, όταν είναι true, ανοίγει ένα παράθυρο διαλόγου επιβεβαίωσης πριν κλείσει η εφαρμογή. Από προεπιλογή, αυτή η ιδιότητα είναι false και δεν εμφανίζεται κανένα παράθυρο διαλόγου.
Όταν ο χρήστης μπορεί να έχει μη αποθηκευμένες αλλαγές στην εφαρμογή, χρησιμοποιήστε αυτήν την ιδιότητα για να εμφανίσετε ένα παράθυρο διαλόγου επιβεβαίωσης πριν από την έξοδο από την εφαρμογή. Χρησιμοποιήστε έναν τύπο που ελέγχει μεταβλητές και ιδιότητες στοιχείων ελέγχου (για παράδειγμα, την ιδιότητα Unsaved του στοιχείου ελέγχου Φόρμα επεξεργασίας ).
Το παράθυρο διαλόγου επιβεβαίωσης εμφανίζεται σε οποιαδήποτε κατάσταση όπου μπορεί να χαθούν δεδομένα, όπως:
- Εκτελέστε τη συνάρτηση Exit .
- Εάν η εφαρμογή εκτελείται σε ένα πρόγραμμα περιήγησης:
- Κλείστε το πρόγραμμα περιήγησης ή την καρτέλα του προγράμματος περιήγησης όπου εκτελείται η εφαρμογή.
- Επιλέξτε το κουμπί "Πίσω" του προγράμματος περιήγησης.
- Εκτελέστε τη συνάρτηση Launch με ένα LaunchTarget of Self.
- Εάν η εφαρμογή εκτελείται στο Power Apps Mobile (iOS ή Android):
- Κάντε σάρωση για μετάβαση σε διαφορετική εφαρμογή στο Power Apps Mobile.
- Επιλέξτε το κουμπί "Πίσω" σε μια συσκευή Android.
- Εκτελέστε τη συνάρτηση Launch για να εκκινήσετε μια άλλη εφαρμογή καμβά.
Η ακριβής εμφάνιση του παραθύρου διαλόγου επιβεβαίωσης μπορεί να διαφέρει μεταξύ συσκευών και εκδόσεων του Power Apps.
Το παράθυρο διαλόγου επιβεβαίωσης δεν εμφανίζεται στο Power Apps Studio.
ConfirmExitMessage
Από προεπιλογή, στο παράθυρο διαλόγου επιβεβαίωσης εμφανίζεται ένα γενικό μήνυμα, όπως "Μπορεί να έχετε μη αποθηκευμένες αλλαγές." στη γλώσσα του χρήστη.
Χρησιμοποιήστε το ConfirmExitMessage για να παράσχετε ένα προσαρμοσμένο μήνυμα στο παράθυρο διαλόγου επιβεβαίωσης. Αν η ιδιότητα είναι blank, χρησιμοποιείται η προεπιλεγμένη τιμή. Τα προσαρμοσμένα μηνύματα περικόπτονται όπως απαιτείται για να χωρέσουν στο παράθυρο διαλόγου επιβεβαίωσης, επομένως, διατηρήστε το μήνυμα σε μερικές γραμμές το πολύ.
Σε ένα πρόγραμμα περιήγησης, το παράθυρο διαλόγου επιβεβαίωσης μπορεί να εμφανίσει ένα γενικό μήνυμα από το πρόγραμμα περιήγησης.
Παράδειγμα
Ορίστε την ιδιότητα του αντικειμένου εφαρμογήςConfirmExit σε αυτήν την παράσταση:
AccountForm.Unsaved Or ContactForm.UnsavedΤο παράθυρο διαλόγου εμφανίζεται εάν ο χρήστης αλλάξει δεδομένα σε οποιαδήποτε φόρμα και, στη συνέχεια, προσπαθήσει να κλείσει την εφαρμογή χωρίς να αποθηκεύσει αυτές τις αλλαγές.
Ορίστε την ιδιότητα του αντικειμένου εφαρμογήςConfirmExitMessage σε αυτόν τον τύπο:
If( AccountForm.Unsaved, "Accounts form has unsaved changes.", "Contacts form has unsaved changes." )Το παράθυρο διαλόγου εμφανίζει ένα μήνυμα συγκεκριμένης φόρμας όταν ο χρήστης αλλάζει δεδομένα σε οποιαδήποτε φόρμα και, στη συνέχεια, προσπαθεί να κλείσει την εφαρμογή χωρίς να αποθηκεύσει αυτές τις αλλαγές.
Ιδιότητα συμβολοσειράς σύνδεσης
Χρησιμοποιήστε την ιδιότητα Συμβολοσειρά σύνδεσης για να εξαγάγετε αρχεία καταγραφής εφαρμογών που δημιουργούνται από το σύστημα στο Application Insights.
Για να ορίσετε το συμβολοσειρά σύνδεσης:
- Ανοίξτε την εφαρμογή σας για επεξεργασία στο Power Apps Studio.
- Επιλέξτε Εφαρμογή από την προβολή δέντρου στην αριστερή περιήγηση.
- Εισαγάγετε τη συμβολοσειρά Σύνδεση στο τμήμα παραθύρου ιδιοτήτων.
Εάν δεν σταλούν δεδομένα στο Application Insights, επικοινωνήστε με τον διαχειριστή του Power Platform και ελέγξτε αν το Application Insights είναι απενεργοποιημένο σε επίπεδο μισθωτή.
Ιδιότητα Τύποι
Χρησιμοποιήστε την ιδιότητα Τύποι για να ορίσετε επαναχρησιμοποιήσιμη λογική στην εφαρμογή σας. Η ιδιότητα Formulas υποστηρίζει τρεις κατασκευές:
- Επώνυμοι τύποι – εκχωρήστε ένα όνομα σε έναν τύπο και χρησιμοποιήστε ξανά την τιμή σε ολόκληρη την εφαρμογή.
- Συναρτήσεις που ορίζονται από τον χρήστη – επώνυμοι τύποι που λαμβάνουν παραμέτρους και επιστρέφουν μια τιμή.
- Τύποι που ορίζονται από τον χρήστη – επώνυμοι τύποι που μπορείτε να χρησιμοποιήσετε ξανά σε τύπους και υπογραφές συναρτήσεων.
Ονοματισμένοι τύποι
Χρησιμοποιήστε επώνυμους τύπους στην ιδιότητα Τύποι για να ορίσετε έναν τύπο που μπορείτε να χρησιμοποιήσετε ξανά σε ολόκληρη την εφαρμογή σας.
Στο Power Apps, οι τύποι καθορίζουν την τιμή των ιδιοτήτων του στοιχείου ελέγχου. Για παράδειγμα, για να ορίσετε με συνέπεια το χρώμα φόντου σε μια εφαρμογή, ορίστε την ιδιότητα Fill για κάθε στοιχείο ελέγχου σε έναν κοινό τύπο:
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 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 ... ] ] ) :Τύπος = ;
- FunctionName – Απαιτείται. Το όνομα της συνάρτησης που ορίζεται από τον χρήστη.
- ParameterNames – Προαιρετικό. Το όνομα μιας παραμέτρου συνάρτησης.
- ParameterType(s) – Προαιρετικό. Το όνομα ενός τύπου, είτε ένα ενσωματωμένο όνομα τύπου δεδομένων, ένα όνομα προέλευσης δεδομένων, είτε ένας τύπος που ορίζεται με χρήση της συνάρτησης Type .
- ReturnType – Απαιτείται. Ο τύπος της τιμής που επιστρέφεται από τη συνάρτηση.
- Τύπος - Απαιτείται. Ο τύπος που υπολογίζει την τιμή της συνάρτησης με βάση τις παραμέτρους.
Πρέπει να πληκτρολογήσετε κάθε παράμετρο και το αποτέλεσμα από τη συνάρτηση που ορίζεται από τον χρήστη. Σε αυτό το παράδειγμα, SelectedGenre: Text ορίζει την πρώτη παράμετρο για τη συνάρτηση με τύπο Κείμενο και SelectedGenre είναι το όνομα της παραμέτρου που χρησιμοποιείται στο σώμα για τη λειτουργία Φίλτρο. Ανατρέξτε στην ενότητα Τύποι δεδομένων για τα υποστηριζόμενα ονόματα τύπων. Η συνάρτηση Type χρησιμοποιείται για τη δημιουργία ενός τύπου συγκεντρωτικών αποτελεσμάτων για τη βιβλιοθήκη, ώστε να μπορείτε να επιστρέψετε έναν πίνακα βιβλίων από τη συνάρτηση.
Ορίζετε 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 [ ; Τύπος2 ... ] };
- FunctionName – Απαιτείται. Το όνομα της συνάρτησης που ορίζεται από τον χρήστη.
- ParameterNames – Προαιρετικό. Το όνομα μιας παραμέτρου συνάρτησης.
- ParameterType(s) – Προαιρετικό. Το όνομα ενός τύπου, είτε ένα όνομα ενσωματωμένου ονόματος τύπου δεδομένων, ένα όνομα προέλευσης δεδομένων ή έναν τύπο που ορίζεται από μια συνάρτηση Τύπος.
- ReturnType – Απαιτείται. Ο τύπος της τιμής που επιστρέφεται από τη συνάρτηση. Χρησιμοποιήστε Άκυρο εάν η συνάρτηση δεν επιστρέφει τιμή.
- Τύποι – Απαιτείται. Ο τύπος που υπολογίζει την τιμή της συνάρτησης με βάση τις παραμέτρους.
Όπως συμβαίνει με όλες τις Power Fx φόρμουλες, η εκτέλεση δεν τελειώνει όταν παρουσιαστεί σφάλμα. Μετά την κλήση της συνάρτησης Error, η συνάρτηση If αποτρέπει την εμφάνιση των αλλαγών στην περιοχή "Εξοικονόμηση" και "Δαπάνες". Η συνάρτηση IfError μπορεί επίσης να χρησιμοποιηθεί για την αποτροπή περαιτέρω εκτέλεσης μετά από σφάλμα. Παρόλο που επιστρέφει Άκυρο, η φόρμουλα μπορεί να επιστρέψει σφάλμα εάν υπάρχει πρόβλημα.
Τύποι καθορισμένοι από τον χρήστη
Χρησιμοποιήστε επώνυμους τύπους με τη συνάρτηση Type για να δημιουργήσετε τύπους που ορίζονται από τον χρήστη. Χρησιμοποιήστε := αντί = για να ορίσετε έναν τύπο καθορισμένο από το χρήστη, για παράδειγμα 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. Εάν μετακινήσετε το ρυθμιστικό στο 0, η ετικέτα1 δεν εμφανίζει καμία τιμή και εμφανίζεται ένα πλαίσιο σφάλματος:
Ας δούμε τι συμβαίνει λεπτομερώς:
- Μετακινήστε το ρυθμιστικό προς τα αριστερά και η ιδιότητα Slider1.Value αλλάζει σε 0.
- Το Label1.Text επαναξιολογείται αυτόματα. Προκύπτει διαίρεση με το μηδέν, δημιουργώντας ένα σφάλμα.
- Δεν υπάρχει IfError σε αυτόν τον τύπο. Το σφάλμα διαίρεσης με το μηδέν επιστρέφεται από την αξιολόγηση τύπου.
- Το Label1.Text δεν εμφανίζει κανένα μήνυμα για αυτό το σφάλμα, επομένως, εμφανίζει μια κενή κατάσταση.
- Το OnError καλείται. Εφόσον δεν υπάρχει δείκτης χειρισμού, εμφανίζεται το διαφημιστικό πλαίσιο τυπικού σφάλματος με τις πληροφορίες σφάλματος.
Εάν είναι απαραίτητο, μπορείτε επίσης να αλλάξετε τον τύπο σε Label1.Text = IfError( 1/Slider1.Value, 0 ). Η χρήση της συνάρτησης IfError σημαίνει ότι δεν υπάρχει πλαίσιο σφάλματος ή σφάλματος. Δεν μπορείτε να αλλάξετε την τιμή ενός σφάλματος από την onError , επειδή το σφάλμα έχει ήδη συμβεί - Η ιδιότητα OnError ελέγχει μόνο τον τρόπο αναφοράς.
Εάν προσθέσετε έναν χειρισμό OnError , αυτό δεν επηρεάζει τα βήματα πριν από το βήμα 5, αλλά αλλάζει τον τρόπο αναφοράς του σφάλματος:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" )
Με αυτόν τον χειρισμό OnError , ο χρήστης της εφαρμογής δεν βλέπει κανένα σφάλμα. Ωστόσο, το σφάλμα προστίθεται στην ανίχνευση της Οθόνης, συμπεριλαμβανομένης της προέλευσης των πληροφοριών σφάλματος από την FirstError:
Εάν θέλετε επίσης να εμφανίσετε το προεπιλεγμένο πλαίσιο σφάλματος μαζί με την ανίχνευση, εμφανίστε ξανά το σφάλμα χρησιμοποιώντας τη συνάρτηση Error μετά την κλήση Trace , σαν να μην υπήρχε η ανίχνευση :
Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )
Ιδιότητα OnStart
Σημείωμα
Η χρήση της ιδιότητας OnStart μπορεί να προκαλέσει προβλήματα επιδόσεων κατά τη φόρτωση μιας εφαρμογής. Εξετάστε αυτές τις εναλλακτικές λύσεις πριν από την προσθήκη λογικής στο OnStart:
- Για να αποθηκεύσετε στο cache δεδομένα ή να ρυθμίσετε καθολικές μεταβλητές, χρησιμοποιήστε έναν επώνυμο τύπο στην ιδιότητα Τύποι , όπου είναι δυνατό.
- Για να ορίσετε την πρώτη οθόνη που θα εμφανίζεται, χρησιμοποιήστε την ιδιότητα StartScreen αντί για την navigate.
- Για να εκτελέσετε λογική όταν εμφανίζεται μια συγκεκριμένη οθόνη, χρησιμοποιήστε την ιδιότητα OnVisible της οθόνης.
Ανάλογα με το περιβάλλον σας, η ιδιότητα OnStart μπορεί να είναι απενεργοποιημένη από προεπιλογή. Εάν δεν τη βλέπετε και θέλετε να τη χρησιμοποιήσετε, ελέγξτε τις Ρυθμίσεις για προχωρημένους της εφαρμογής για να κάνετε έναν διακόπτη για να την ενεργοποιήσετε.
Όταν είναι ενεργοποιημένος ο κανόνας OnStart χωρίς αποκλεισμό (προεπιλογή), η ιδιότητα OnStart εκτελείται ταυτόχρονα με άλλους κανόνες εφαρμογής. Ως αποτέλεσμα:
- Οι μεταβλητές που αρχικοποιούνται στο OnStart ενδέχεται να μην αρχικοποιηθούν πλήρως όταν οι άλλοι κανόνες εφαρμογής τις διαβάσουν.
- Μια οθόνη μπορεί να αποδοθεί και να γίνει αλληλεπιδραστική προτού ολοκληρωθεί η εκτέλεση της App.OnStart ή της Screen.OnVisible , ιδιαίτερα εάν αυτές οι συναρτήσεις απαιτούν πολύ χρόνο.
Η ιδιότητα OnStart εκτελείται όταν ο χρήστης εκκινεί την εφαρμογή. Χρησιμοποιήστε αυτήν την ιδιότητα για να:
- Ανακτήστε και αποθηκεύστε στο cache δεδομένα σε συλλογές χρησιμοποιώντας τη συνάρτηση Collect .
- Ρύθμιση καθολικών μεταβλητών χρησιμοποιώντας τη συνάρτηση Set.
Αυτός ο τύπος εκτελείται πριν εμφανιστεί η πρώτη οθόνη. Δεν έχει φορτωθεί καμία οθόνη, επομένως δεν μπορείτε να ορίσετε μεταβλητές περιβάλλοντος με τη συνάρτηση UpdateContext. Ωστόσο, μπορείτε να διαβιβάσετε μεταβλητές περιβάλλοντος με τη συνάρτηση Navigate .
Αφού αλλάξετε την ιδιότητα OnStart , δοκιμάστε την τοποθετώντας τον δείκτη επάνω στο αντικείμενο Εφαρμογή στο τμήμα παραθύρου Προβολή δέντρου , επιλέγοντας τα αποσιωπητικά (...) και, στη συνέχεια, επιλέγοντας Εκτέλεση onStart. Σε αντίθεση με τη φόρτωση της εφαρμογής για πρώτη φορά, οι υπάρχουσες συλλογές και μεταβλητές έχουν ήδη οριστεί. Για να ξεκινήσετε με κενές συλλογές, χρησιμοποιήστε συνάρτηση ClearCollect αντί για τη συνάρτηση Collect.
Σημείωμα
- Η χρήση της συνάρτησης Navigate στην ιδιότητα OnStart έχει αποσυρθεί. Οι υπάρχουσες εφαρμογές εξακολουθούν να λειτουργούν. Για περιορισμένο χρονικό διάστημα, μπορείτε να το ενεργοποιήσετε στις ρυθμίσεις εφαρμογής (στην περιοχή Συνταξιούχος). Ωστόσο, η χρήση της συνάρτησης Navigate με αυτόν τον τρόπο μπορεί να προκαλέσει καθυστερήσεις φόρτωσης της εφαρμογής καθώς επιβάλλει στο σύστημα να ολοκληρώσει την εκτέλεση του OnStart πριν από την εμφάνιση της πρώτης οθόνης. Χρησιμοποιήστε την ιδιότητα StartScreen για να ορίσετε την πρώτη οθόνη που εμφανίζεται.
- Ο διακόπτης που αποσύρθηκε είναι απενεργοποιημένος για εφαρμογές που δημιουργήθηκαν πριν από τον Μάρτιο του 2021, όπου προσθέσατε την επιλογή Navigate σε OnStart μεταξύ Μαρτίου 2021 και τώρα. Όταν επεξεργάζεστε αυτές τις εφαρμογές στο Power Apps Studio, εμφανίζεται ένα σφάλμα. Ενεργοποιήστε την εναλλαγή που έχει αποσυρθεί για να καταργήσετε αυτό το σφάλμα.
Ιδιότητα StartScreen
Η ιδιότητα StartScreen ορίζει ποια οθόνη εμφανίζεται πρώτη. Power Apps αξιολογεί αυτή την ιδιότητα μία φορά όταν φορτώνει η εφαρμογή και επιστρέφει το αντικείμενο οθόνης προς εμφάνιση. Από προεπιλογή, αυτή η ιδιότητα είναι κενή και η πρώτη οθόνη στην προβολή Δέντρο στούντιο εμφανίζεται πρώτη.
Το StartScreen είναι μια ιδιότητα ροής δεδομένων που δεν μπορεί να περιέχει λειτουργίες συμπεριφοράς. Όλες οι συναρτήσεις ροής δεδομένων είναι διαθέσιμες. Χρησιμοποιήστε αυτές τις συναρτήσεις και σήματα για να αποφασίσετε ποια οθόνη θα εμφανίζεται πρώτη:
- Συνάρτηση Param για την ανάγνωση παραμέτρων που χρησιμοποιούνται για την έναρξη της εφαρμογής.
- Συνάρτηση User για την ανάγνωση πληροφοριών σχετικά με τον τρέχοντα χρήστη.
- LookUp, Filter, CountRows, Max, και άλλες συναρτήσεις που κάνουν ανάγνωση από μια προέλευση δεδομένων.
- Το API πραγματοποιεί κλήσεις μέσω σύνδεσης. Βεβαιωθείτε ότι η κλήση επιστρέφει γρήγορα.
- Σήματα, όπως Σύνδεση, Compass και Εφαρμογή.
Σημείωμα
Οι καθολικές μεταβλητές και συλλογές, συμπεριλαμβανομένων εκείνων που δημιουργήθηκαν στο OnStart, δεν είναι διαθέσιμες στην οθόνη StartScreen. Οι ονομασμένοι τύποι φόρμουλας είναι διαθέσιμοι και συχνά αποτελούν καλύτερη εναλλακτική λύση για την επαναχρησιμοποίηση τύπων σε ολόκληρη την εφαρμογή.
Εάν η StartScreen επιστρέψει ένα σφάλμα, η πρώτη οθόνη στην προβολή Δέντρο στούντιο εμφανίζεται σαν να μην έχει οριστεί η οθόνη StartScreen . Χρησιμοποιήστε τη συνάρτηση IfError για να παρακολουθήσετε τυχόν σφάλματα και να ανακατευθύνετε σε μια οθόνη σφάλματος.
Αφού αλλάξετε το StartScreen στο Studio, δοκιμάστε το τοποθετώντας τον δείκτη επάνω στο αντικείμενο Εφαρμογή στο τμήμα παραθύρου Προβολή δέντρου , επιλέγοντας τα αποσιωπητικά (...) και, στη συνέχεια, επιλέγοντας Μετάβαση στην οθόνη StartScreen. Η οθόνη αλλάζει σαν να μόλις φορτώθηκε η εφαρμογή.
Παραδείγματα
Screen9
Screen9 εμφανίζεται πρώτη κάθε φορά που ξεκινά η εφαρμογή.
If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )
Ελέγχει αν έχει οριστεί η "λειτουργία διαχείρισης" Param και τη χρησιμοποιεί για να αποφασίσει αν θα εμφανίζεται πρώτα η αρχική οθόνη ή η οθόνη 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 επιστρέφει κείμενο. Η μορφή αυτού του κειμένου μπορεί να αλλάξει με την πάροδο του χρόνου, επομένως αντιμετωπίστε το ως σύνολο και μην εξαγάγετε μεμονωμένα μέρη.