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


Εργασία με μη τυπολογημένα και δυναμικά αντικείμενα

Όταν χρησιμοποιείτε ενέργειες στο Power Apps, είναι δυνατό να συναντήσετε μη τυπολογημένες τιμές επιστροφής ή τιμές εισόδου για ορισμένες ενέργειες. Πριν, το Power Apps θα παρέβλεπε τα πεδία με μη τυπολογημένων ή δυναμικών στοιχείων εισόδου και δεν θα ήταν ορατά στις παραστάσεις PowerFX αλλά τώρα μπορείτε να εργαστείτε απευθείας με αυτά τα πεδία. Πριν, όταν ένας τύπος επιστροφής ήταν μη τυπολογημένος, το Power Apps θα επέστρεφε μια δυαδική τιμή. Τώρα, επιστρέφει ένα μη τυπολογημένο αντικείμενο αντί για αυτό.

Σημείωση

Ας υποθέσουμε ότι οι παραστάσεις σας Power Fx βασίζονται σε μια δυαδική τιμή επιστροφής από αυτές τις συναρτήσεις. Σε αυτή την περίπτωση, θα πρέπει να ξαναγράψτε τον τύπο και ρητά να πληκτρολογήσετε το μη τυπολογημένο αντικείμενο σε δυαδική τιμή. Ορισμένες συναρτήσεις, όπως το "IfError", δεν υποστηρίζουν ακόμα πλήρως μη τυπολογημένα αντικείμενα. Εάν η παράσταση περιέχει μια τέτοια συνάρτηση, ανατρέξτε στη σημείωση στο τέλος αυτού του άρθρου για λύσεις.

Η διέλευση μη τυπολογημένων αντικειμένων ως παραμέτρων

Σε ορισμένες ενέργειες απαιτείται μη τυπολογημένο αντικείμενο ως τιμή παραμέτρου. Εάν έχετε μια καρτέλα Power Fx , μπορείτε να τη μετατρέψετε σε μη τυπολογημένο αντικείμενο, καθιστώντας το κατάλληλο για τη μετάβαση στην ενέργεια.

Στο παρακάτω παράδειγμα, η ενέργεια συγχώνευσης που είναι διαθέσιμη σε έναν πίνακα Dataverse Λογαριασμός απαιτεί πολλά μη τυπολογημένα ορίσματα. Για την προετοιμασία, θα ορίσουμε τρεις μεταβλητές στις τιμές TargetObject, SubordinateObject και UpdateContextObject. Θα ξεκινήσουμε αντιστοιχίζοντας τη συμβολοσειρά κειμένου Microsoft.Dynamics.CRM.account σε μια μεταβλητή, η οποία θα χρησιμοποιηθεί ξανά σε όλο το παράδειγμα.

Set (OdataType, “Microsoft.Dynamics.CRM.account”);

Στη συνέχεια, το TargetObject ανατίθεται σε μια καρτέλα Power Fx με τις ιδιότητες ονόματος, accountid και @odata.type. Ομοίως, αναθέτουμε καρτέλες Power Fx στα αντικείμενα Subordinate και UpdateContext επίσης.

Set (TargetObject, {name: "Test 2", accountid: "145dc2ba-85a2-ed11-aado-0022482d76a5", '@odata.type': OdataType});
Set (SubordinateObject, {name: FirstRecord.’Account name’, accountid: FirstRecord.Account, ‘@odata.type’ : OdataType });
Set (UpdateContextObject, {telephone1: FirstRecord.’Main Phone’, address1_city: FirstRecord.’Address 1 : City’, ‘@odata.type’ : OdataType }); 

Στη συνέχεια, θα δημιουργήσουμε τρεις ακόμα μεταβλητές για την αποθήκευση των μη τυπολογημένων καρτελών μετά τη μετατροπή: TargetUntypedObject, SubordinateUntypedObject και UpdateContextUntypedObject. Για να εκτελέσουμε τη μετατροπή, θα χρησιμοποιήσουμε τη συνάρτηση ParseJSON(JSON()) στις αρχικές μεταβλητές. Αυτή η ενέργεια θα μετασχηματίσει τις καρτέλες Power Fx σε μη τυπολογημένα αντικείμενα.

Set (TargetUntypedObject, ParseJSON(JSON(TargetObject)));
Set (SubordinateUntypedObject, ParseJSON(JSON(SubordinateObject)));
Set (UpdateContextUntypedObject, ParseJSON(JSON(UpdateContextObject)));

Τέλος, καλούμε την ενέργεια συγχώνευσης με τη μεταγραφή των απαραίτητων παραμέτρων, συμπεριλαμβανομένων των μη τυπολογημένων και των τυπολογημένων:

Environment.Merge({Target: TargetUntypedObject, Subordinate: SubordinateUntypedObject, UpdateContent: UpdateContextUntypedObject, PerformParentingChecks: false  });

Χρήση μη τυπολογημένου αντικειμένου που επιστρέφεται μέσω μιας ενέργειας

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

Στο παρακάτω παράδειγμα, η συνάρτηση httpRequest επιστρέφει ένα μη τυπολογημένο αντικείμενο που προηγουμένως διανεμήθηκε ως δυαδική τιμή.

Set (response, Office365Groups.HttpRequest("/v1.0/me", "GET", ""));

Μία από τις ιδιότητες στην απάντηση είναι displayName. Μπορείτε να αποκτήσετε πρόσβαση και να διανείμετε με μια παράσταση Power Fx όπως η παρακάτω:

Text(response.displayName)

Διανείμετε στο αντικείμενο Κείμενο για χρήση σε στοιχείο ελέγχου ετικέτας Power Apps.

Εργασία με πεδία Dynamics

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

Εξετάστε την ενέργεια "GetMessageDetails" στο Microsoft Teams που έχει μια παράμετρο σώματος δυναμικών στοιχείων εισόδου. Προηγουμένως, η παράμετρος αυτή δεν ήταν δυνατό να προβληθεί ή να καθοριστεί. Με την πρόσφατη ενημέρωση, μπορείτε να ορίσετε μια μεταβλητή που ονομάζεται "σώμα" με την κατάλληλη δομή καρτέλας Power Fx.

Set ( body, ParseJSON(JSON( {recipient: { groupID: “7f733b36-7c7f-4f4c-9699-0a7b7a2b3897”, channelID: “19: 085d522328fb4a439220641006f7f25@thread.tacv2”}}));

Στη συνέχεια, μπορούμε να ονομάσουμε την ενέργεια GetMessageDetails και να αναθέσουμε την απόκριση στη μεταβλητή teamsResponse.

Set (teamsResponse, MicrosoftTeams.GetMessageDetails ( 1661365068558, “channel”, body ));

Μετατροπή τύπων που επιστρέφουν μη τυπολογημένα αντικείμενα που προηγουμένως επέστρεφαν δυαδική τιμή.

Το Power Fx παίρνει έναν περιορισμένο αριθμό μη τυπολογημένων αντικειμένων, ώστε η ρητή μετατροπή να είναι απαραίτητη για τον τύπο σας. Συγκεκριμένα, εάν ο τύπος σας εξαρτάται από μια δυαδική απόκριση, θα πρέπει να τον μετατρέψετε. Εάν χρειάζεται απλώς να γνωρίζετε εάν υπάρχει σφάλμα, μπορείτε να χρησιμοποιήσετε τη συνάρτηση IsError:

If(
  IsError(Office365Outlook.CalendarDeleteItemV2("Calendar", 1)),
  Notify("An Outlook appointment could not be found or could not be deleted")
)

Για να αποκτήσετε πρόσβαση σε πληροφορίες σφάλματος που είναι αποκλειστικά διαθέσιμες μέσω του IfError, πρέπει να μετασχηματίσετε το μη τυπολογημένο αντικείμενο σε έγκυρο τύπο χρησιμοποιώντας μια συνάρτηση μετατροπής, όπως Boolean, Text ή Value. Αυτές οι συναρτήσεις θα παραγάγουν σφάλμα, εάν τους δοθεί μία. Το ακόλουθο παράδειγμα παρουσιάζει αυτό:

With({result: Office365Outlook.CalendarDeleteItemV2("Calendar", 1)},
If( IsError(result),
  IfError(
    Boolean(result),  // any conversion function would do, such as Text, Value, …
    Notify("An Outlook appointment could not be found or could not be deleted: " & FirstError.Message)
) ) )