Συνάρτηση With

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

Υπολογίζει τιμές και εκτελεί ενέργειες για μία μόνο εγγραφή, συμπεριλαμβανομένων των ενσωματωμένων εγγραφών με επώνυμες τιμές.

Περιγραφή

Η συνάρτηση With αξιολογεί έναν τύπο για μία μεμονωμένη καρτέλα. Ο τύπος μπορεί να υπολογίζει μια τιμή ή/και να εκτελεί ενέργειες, όπως η τροποποίηση δεδομένων ή η εργασία με μια σύνδεση. Χρησιμοποιήστε τη συνάρτηση ForAll για να αξιολογήσετε έναν τύπο για όλες τις καρτέλες σε έναν πίνακα καρτελών.

Στον τύπο είναι διαθέσιμα πεδία της καρτέλας που βρίσκεται υπό επεξεργασία τη δεδομένη στιγμή. Χρησιμοποιήστε τον τελεστή ThisRecord ή απλά πεδία αναφοράς με βάση το όνομα, όπως θα κάνατε με οποιαδήποτε άλλη τιμή. Ο τελεστής As μπορεί επίσης να χρησιμοποιηθεί για το όνομα της καρτέλας που υπόκειται σε επεξεργασία και η οποία μπορεί να σας βοηθήσει να κάνετε τον τύπο σας πιο κατανοητό και να κάνετε προσβάσιμες τις ένθετες καρτέλες. Για περισσότερες πληροφορίες, δείτε τα παρακάτω παραδείγματα και την ενότητα εργασία με πεδίο καρτελών.

Χρησιμοποιήστε το With για να βελτιώσετε την αναγνωσιμότητα σύνθετων τύπων, διαιρώντας το σε μικρότερους δευτερεύοντες τύπους με όνομα. Αυτές οι τιμές με όνομα ενεργούν όπως οι απλές τοπικές μεταβλητές που περιορίζονται στο πεδίο του With. Η ίδια ενσωματωμένη σύνταξη καρτελών που χρησιμοποιείται με τη συνάρτηση UpdateContext μπορεί να χρησιμοποιηθεί μαζί με το With. Η χρήση του With προτιμάται από το περιβάλλον ή τις καθολικές μεταβλητές καθώς είναι αυτόνομο, εύκολο να κατανοηθεί και μπορεί να χρησιμοποιηθεί σε οποιοδήποτε περιβάλλον δηλωτικού τύπου.

Χρησιμοποιήστε το With για να αποκτήσετε πρόσβαση στα πεδία της καρτέλας που επιστρέφονται από συναρτήσεις όπως Patch ή Match. Το With διατηρεί την τιμή από αυτές τις συναρτήσεις αρκετά ώστε να χρησιμοποιηθεί σε περαιτέρω υπολογισμούς ή ενέργειες.

Αν το όρισμα Record στο With είναι σφάλμα, αυτό το σφάλμα θα επιστραφεί από τη συνάρτηση και ο τύπος δεν θα αξιολογηθεί.

Σύνταξη

With( Record, Formula )

  • Record – Υποχρεωτικό. Η καρτέλα που πρέπει να υποστεί επεξεργασία. Για τιμές ονομάτων, χρησιμοποιήστε την ενσωματωμένη σύνταξη { name1: value1, name2: value2, ... }
  • Formula - Υποχρεωτικό. Ο τύπος για αξιολόγηση για την Καρτέλα. Ο τύπος μπορεί να αναφέρει οποιοδήποτε από τα πεδία της καρτέλας απευθείας ως πεδίο καρτέλας.

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

Απλές τιμές με όνομα

With( { radius: 10,
        height: 15 },
    Pi() * (radius*radius) * height
)
// Result: 4712.38898038 (as shown in a label control)

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

Ένθεση με

Υπολογιστής ενδιαφέροντος με χρήση της συνάρτησης With.

With( { AnnualRate: RateSlider/8/100,        // slider moves in 1/8th increments and convert to decimal
        Amount: AmountSlider*10000,          // slider moves by 10,000 increment
        Years: YearsSlider,                  // slider moves in single year increments, no adjustment required
        AnnualPayments: 12 },                // number of payments per year
      With( { r: AnnualRate/AnnualPayments,  // interest rate
              P: Amount,                     // loan amount
              n: Years*AnnualPayments },     // number of payments
            r*P / (1 - (1+r)^-n)             // standard interest calculation
      )
)

Αυτό το παράδειγμα ενθέτει τις συναρτήσεις With για τη δημιουργία ενός υπολογισμού δύο βαθμίδων για μηνιαίες δόσεις στεγαστικών δανείων. Εφόσον δεν υπάρχει διένεξη, όλες οι εξωτερικές τιμές With με όνομα είναι διαθέσιμες στο εσωτερικό With.

Επειδή τα στοιχεία ελέγχου του ρυθμιστικού μπορούν να μετακινούνται μόνο σε προσαυξήσεις του 1, τα ρυθμιστικά διαιρούνται ή πολλαπλασιάζονται για να δημιουργηθεί μια αποτελεσματική προσαρμοσμένη προσαύξηση. Στην περίπτωση του επιτοκίου, το RateSlider έχει την ιδιότητα Max ορισμένη σε 48, διαιρεμένη με 8 για ποσοστιαία μονάδα αύξησης 1/8 και διαιρεμένη με 100 για μετατροπή από ποσοστό σε δεκαδικό, καλύπτοντας το εύρος 0,125% έως 6%. Στην περίπτωση του ποσού του δανείου, το AmountSlider έχει την ιδιότητα Max ορισμένη σε 60 και πολλάπλασιασμένη με 10.000, καλύπτοντας το εύρος 10.000 έως 600.000.

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

Ακολουθούν οι αναλυτικές οδηγίες για τη δημιουργία αυτής της εφαρμογής:

  1. Δημιουργία νέας εφαρμογής.
  2. Προσθέστε ένα στοιχείο ελέγχου Slider και ονομάστε το RateSlider. Ορίστε την ιδιότητα Max σε 48.
  3. Προσθέστε ένα στοιχείο ελέγχου Label στα αριστερά του στοιχείου ελέγχου του ρυθμιστικού. Ορίστε την ιδιότητα Text σε "Interest Rate:".
  4. Προσθέστε ένα στοιχείο ελέγχου Label στα δεξιά του στοιχείου ελέγχου του ρυθμιστικού. Ορίστε την ιδιότητα Κείμενο στον τύπο RateSlider/8 & " %".
  5. Προσθέστε ένα άλλο στοιχείο ελέγχου Slider και ονομάστε το AmountSlider. Ορίστε την ιδιότητα Max σε 60.
  6. Προσθέστε ένα στοιχείο ελέγχου Label στα αριστερά του στοιχείου ελέγχου αυτού του ρυθμιστικού. Ορίστε την ιδιότητα Text σε "Loan Amount:".
  7. Προσθέστε ένα στοιχείο ελέγχου Label στα δεξιά του στοιχείου ελέγχου αυτού του ρυθμιστικού. Ορίστε την ιδιότητα Text στον τύπο AmountSlider/8 * 10000.
  8. Προσθέστε ένα άλλο στοιχείο ελέγχου Slider και ονομάστε το YearsSlider. Ορίστε την ιδιότητα Max σε 40.
  9. Προσθέστε ένα στοιχείο ελέγχου Label στα αριστερά του στοιχείου ελέγχου αυτού του ρυθμιστικού. Ορίστε την ιδιότητα Text σε "Number of Years:".
  10. Προσθέστε ένα στοιχείο ελέγχου Label στα δεξιά του στοιχείου ελέγχου αυτού του ρυθμιστικού. Ορίστε την ιδιότητα Text στον τύπο YearsSlider.
  11. Προσθέστε ένα στοιχείο ελέγχου Label και ορίστε την ιδιότητά του Text στον τύπο που εμφανίζεται παραπάνω.
  12. Προσθέστε ένα στοιχείο ελέγχου Label στα αριστερά του στοιχείου ελέγχου της τελευταίας ετικέτας. Ορίστε την ιδιότητα Text σε "Recurring Monthly Payment:".

Το πρωτεύον κλειδί που επιστράφηκε από τo Patch

With( Patch( Orders, Defaults( Orders ), { OrderStatus: "New" } ),
      ForAll( NewOrderDetails,
              Patch( OrderDetails, Defaults( OrderDetails ),
                     { Order: OrderID,          // from With's first argument, primary key of Patch result
                       Quantity: Quantity,      // from ForAll's NewOrderDetails table
                       ProductID: ProductID }   // from ForAll's NewOrderDetails table
              )
      )
)

Αυτό το παράδειγμα προσθέτει μια καρτέλα στον πίνακα παραγγελίας στον SQL Server. Στη συνέχεια, χρησιμοποιεί το επιστρεφόμενο πρωτεύον κλειδί για την παραγγελία, το οποίο επιστρέφεται από τη συνάρτηση Patch στο πεδίο OrderID, για να δημιουργήσει σχετικές καρτέλες στον πίνακα OrderDetails.

Τιμές που έχουν εξαχθεί με μια κανονική παράσταση

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
    Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)

Αυτό το παράδειγμα εξάγει τις ώρες, τα λεπτά και τα δευτερόλεπτα από μια τιμή διάρκειας ISO 8601 και, στη συνέχεια, χρησιμοποιεί αυτές τις δευτερεύουσες αντιστοιχίσεις για τη δημιουργία μιας τιμής ημερομηνίας/ώρας.

Λάβετε υπόψη σας ότι, παρόλο που οι δευτερεύουσες αντιστοιχίσεις περιέχουν αριθμούς, εξακολουθούν να βρίσκονται σε μια συμβολοσειρά κειμένου. Χρησιμοποιήστε τη συνάρτηση Value για μετατροπή σε έναν αριθμό πριν από την εκτέλεση μαθηματικών λειτουργιών.

Αντιστοίχιση καρτέλας σε στοιχείο

Δείτε Αντιστοίχιση τύπων καρτελών.