इसके माध्यम से साझा किया गया


अनटाइप्ड और डायनामिक ऑब्जेक्ट के साथ कार्य करना

क्रियाओं से निपटने के 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 को name, accountid, और Power Fx के गुणों के साथ एक @odata.type रिकॉर्ड असाइन किया जाता है। हम इसी तरह अधीनस्थ और UpdateContext ऑब्जेक्ट्स को भी रिकॉर्ड असाइन Power Fx करते हैं।

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 लिए.

डायनेमिक फ़ील्ड के साथ कार्य करना

एक्शन प्रतिक्रियाएं अब गतिशील आउटपुट कैप्चर करती हैं, और आप इन गुणों तक पहुंचने के लिए ऊपर वर्णित विधि का उपयोग कर सकते हैं। इसके अतिरिक्त, गतिशील इनपुट फ़ील्ड के साथ काम करना भी संभव है।

'GetMessageDetails' क्रिया पर Microsoft Teams विचार करें जिसमें एक गतिशील इनपुट बॉडी पैरामीटर है। पहले, यह पैरामीटर देखा या निर्दिष्ट नहीं किया जा सका. हाल के अपडेट के साथ, आप उपयुक्त Power Fx रिकॉर्ड संरचना के साथ 'बॉडी' नामक एक चर सेट कर सकते हैं।

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

फिर, हम GetMessageDetails क्रिया को कॉल कर सकते हैं और टीमरेस्पॉन्स चर को प्रतिक्रिया असाइन कर सकते हैं।

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 के माध्यम से अनन्य रूप से उपलब्ध त्रुटि जानकारी तक पहुँचने के लिए, आपको अनटाइप किए गए ऑब्जेक्ट को बूलियन, टेक्स्ट या मान जैसे कनवर्ज़न फ़ंक्शन का उपयोग करके एक मान्य प्रकार में रूपांतरित करना होगा. यदि उन्हें एक दिया जाता है तो ये फ़ंक्शन एक त्रुटि उत्पन्न करेंगे। निम्न उदाहरण, यह दिखाता है:

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