Power Apps में अनुप्रयोग ऑब्जेक्ट
इस पर लागू होता है: कैनवास ऐप्स
मॉडल-संचालित ऐप्स
इस समय चल रहे अनुप्रयोग के बारे में जानकारी देता है और अनुप्रयोग के व्यवहार पर नियंत्रण रखता है.
वर्णन
एक नियंत्रण की तरह, अनुप्रयोग ऑब्जेक्ट वे गुण देता है जो पहचानते हैं कि कौन सी स्क्रीन दिखाई दे रही है और उपयोगकर्ता को परिवर्तनों को सहेजने के लिए संकेत देती है, ताकि वे खो न जाएं. हर अनुप्रयोग में अनुप्रयोग ऑब्जेक्ट होता है.
आप अनुप्रयोग ऑब्जेक्ट के कुछ गुणों के लिए सूत्र लिख सकते हैं. ट्री दृश्य फलक के सबसे ऊपर, अनुप्रयोग ऑब्जेक्ट चुनें, जैसा कि आप किसी भी अन्य नियंत्रण या स्क्रीन के लिए करते हैं. सूत्र पट्टी के बाईं ओर ड्रॉप-डाउन सूची में चयन करके किसी ऑब्जेक्ट के गुणों को देखें और संपादित करें.
ActiveScreen गुण
ActiveScreen गुण दिखने वाली स्क्रीन की पहचान करती है.
यह गुण एक स्क्रीन ऑब्जेक्ट लौटाता है. इसका उपयोग वर्तमान में प्रदर्शित स्क्रीन के गुणों को संदर्भित करने के लिए करें, जैसे कि सूत्र App.ActiveScreen.Name के साथ नाम। आप इस गुण की तुलना किसी अन्य स्क्रीन ऑब्जेक्ट से भी कर सकते हैं, जैसे तुलना सूत्र App.ActiveScreen = Screen2 के साथ यह जाँचने के लिए कि क्या Screen2 वर्तमान में प्रदर्शित स्क्रीन है.
उस स्क्रीन को बदलने के लिए Back या Navigate फ़ंक्शन का उपयोग करें.
BackEnabled संपत्ति
BackEnabled प्रॉपर्टी यह बदलती है कि मोबाइल में चलते समय ऐप डिवाइस बैक जेस्चर (डिवाइस पर स्वाइप करें या हार्डवेयर बैक बटन का उपयोग करें, डिवाइस पर बाईं ओर से स्वाइप करें) पर कैसे प्रतिक्रिया करता है। Android iOS Power Apps सक्षम होने पर, डिवाइस बैक जेस्चर उस स्क्रीन पर वापस जाता है जो सबसे हाल ही में प्रदर्शित की गई थी, जो बैक सूत्र के समान है। अक्षम होने पर, डिवाइस बैक जेस्चर उपयोगकर्ता को ऐप सूची पर वापस ले जाता है।
ConfirmExit गुण
कोई भी सहेजे नहीं गए परिवर्तनों को खोना चाहता है। अपने अनुप्रयोग को बंद करने से पहले उपयोगकर्ता को चेतावनी देने के लिए ConfirmExit और ConfirmExitMessage गुणों का उपयोग करें.
नोट
- ConfirmExit उन ऐप्स में काम नहीं करता है जो, उदाहरण के लिए, Power BI और SharePoint में एम्बेड किए गए हैं.
- अब, ये गुण केवल पहली स्क्रीन पर नियंत्रणों को संदर्भित कर सकते हैं यदि विलंबित लोड पूर्वावलोकन सुविधा सक्षम है (जो कि नए ऐप्स के लिए डिफ़ॉल्ट रूप से है)। यदि संदर्भ बनाए गए हैं, तो Power Apps Studio त्रुटि नहीं दिखाता है, लेकिन परिणामस्वरूप प्रकाशित अनुप्रयोग Power Apps मोबाइल या ब्राउज़र में नहीं खुलता है. हम इस सीमा को उठाने के लिए सक्रिय रूप से काम कर रहे हैं. इस बीच, आप विलंबित लोड को सेटिंग्स>आगामी सुविधाओं (पूर्वावलोकन के अंतर्गत) में बंद कर सकते हैं.
ConfirmExit
ConfirmExit एक बूलियन प्रॉपर्टी है, जो true होने पर, ऐप बंद होने से पहले एक पुष्टिकरण संवाद बॉक्स खोलता है। डिफ़ॉल्ट रूप से, यह गुण गलत होता है और कोई संवाद बॉक्स प्रकट नहीं होता है.
ऐसी परिस्थितियों में जहां उपयोगकर्ता के पास ऐप में सहेजे न गए परिवर्तन हो सकते हैं, ऐप से बाहर निकलने से पहले पुष्टिकरण संवाद बॉक्स दिखाने के लिए इस गुण का उपयोग करें। एक सूत्र का उपयोग करें जो चर और नियंत्रण गुणों की जांच कर सकता है (उदाहरण के लिए, न सहेजा गयाकी संपत्ति प्रपत्र संपादित करेंनियंत्रण)।
पुष्टिकरण संवाद बॉक्स किसी भी स्थिति में प्रकट होता है जहां डेटा खो सकता है, जैसा कि इन उदाहरणों में है:
- Exit फ़ंक्शन चलाना.
- यदि अनुप्रयोग किसी ब्राउज़र में चल रहा है:
- उस ब्राउज़र या ब्राउज़र टैब को बंद करना जिसमें अनुप्रयोग चल रहा है.
- ब्राउज़र के बैक बटन का चयन करना.
- स्वयं के LaunchTarget के साथ Launch फंक्शन चलाना.
- यदि ऐप मोबाइल (या मोबाइल) में चल रहा है: Power Apps iOS Android
- Power Apps मोबाइल में किसी अन्य अनुप्रयोग पर स्विच करने के लिए स्वाइप करना.
- Android डिवाइस पर बैक बटन का चयन करना.
- एक और कैनवास अनुप्रयोग लॉन्च करने के लिए Launch फ़ंक्शन चलाना.
पुष्टिकरण संवाद बॉक्स का सटीक आकार डिवाइस और Power Apps के संस्करणों में भिन्न हो सकता है.
Power Apps Studio में पुष्टिकरण संवाद बॉक्स दिखाई नहीं देता है.
ConfirmExitMessage
डिफ़ॉल्ट रूप से, पुष्टिकरण संवाद बॉक्स एक सामान्य संदेश दिखाता है, जैसे "आपके पास बिना सहेजे गए परिवर्तन हो सकते हैं." उपयोगकर्ता की भाषा में.
उपयोग ConfirmExitMessageपुष्टिकरण संवाद बॉक्स में एक कस्टम संदेश प्रदान करने के लिए. यदि यह गुण खाली है, तो डिफ़ॉल्ट मान का उपयोग किया जाता है. कस्टम संदेश को पुष्टिकरण संवाद बॉक्स के भीतर फिट होने के लिए छोटा कर दिया जाता है, इसलिए संदेश को कम पंक्तियों तक सीमित रखें.
एक ब्राउज़र में, पुष्टिकरण संवाद बॉक्स ब्राउज़र से एक सामान्य संदेश के साथ दिखाई दे सकता है.
नोट
ऐप ऑब्जेक्ट में दो और गुण हैं OnMessage
और BackEnabled
जो प्रयोगात्मक हैं. इन गुणों को अंततः ऐप ऑब्जेक्ट से हटा दिया जाएगा. हम अनुशंसा करते हैं कि आप इन गुणों का उपयोग अपने संचालन परिवेश में न करें.
उदाहरण
एक अनुप्रयोग बनाएं जिसमें दो प्रपत्र नियंत्रण हों, 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
- बाएँ नेविगेशन ट्री दृश्य में ऐप ऑब्जेक्ट का चयन करें.
- गुण फलक में इंस्ट्रूमेंटेशन कुंजी दर्ज करें.
यदि ऐप इनसाइट्स को डेटा नहीं भेजा जाता है, तो अपने Power Platform व्यवस्थापक से संपर्क करें और सत्यापित करें कि क्या ऐप इनसाइट्स टेनेंट स्तर पर अक्षम है।
सूत्र संपत्ति
आपके पूरे ऐप में पुन: उपयोग किए जा सकने वाले सूत्र को परिभाषित करने के लिए सूत्र गुण में नामित सूत्रों का उपयोग करें.
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
जबकि यह तरीका बेहतर है, यह BGColor के मान स्थापित होने से पहले चलने वाले OnStart पर भी निर्भर करता है. BGColor में भी ऐप के किसी कोने में हेरफेर किया जा सकता है, जिसके बारे में निर्माता को पता नहीं होता, या यह बदलाव किसी और द्वारा किया गया होता है, और इसका पता लगाना कठिन हो सकता है।
नामांकित सूत्र एक विकल्प प्रदान करते हैं. जैसे हम आमतौर पर नियंत्रण-संपत्ति = अभिव्यक्ति लिखते हैं, वैसे ही हम इसके बजाय नाम = अभिव्यक्ति लिख सकते हैं और फिर अभिव्यक्ति को बदलने के लिए अपने पूरे ऐप में नाम का पुन: उपयोग कर सकते हैं. इन सूत्रों की परिभाषाएँ सूत्र गुण में की गई हैं:
App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
नामित फ़ार्मुलों का उपयोग करने के लाभों में शामिल हैं:
- सूत्र का मान हमेशा उपलब्ध होता है. कोई समय निर्भरता नहीं है, कोई OnStart नहीं है जो मान सेट होने से पहले चलना चाहिए, ऐसा कोई समय नहीं जिसमें सूत्र का मान गलत हो. नामांकित सूत्र एक दूसरे को किसी भी क्रम में संदर्भित कर सकते हैं, जब तक कि वे एक परिपत्र संदर्भ नहीं बनाते हैं. उनकी गणना समानांतर में की जा सकती है.
- सूत्र मान हमेशा अद्यतित रहता है. सूत्र एक गणना कर सकता है जो नियंत्रण गुणों या डेटाबेस रिकॉर्ड पर निर्भर है, और जैसे ही वे बदलते हैं, सूत्र का मान स्वचालित रूप से अपडेट हो जाता है. जैसा कि आप एक चर के साथ करते हैं, आपको मान को मैन्युअल रूप से अपडेट करने की आवश्यकता नहीं है. और सूत्र केवल जरूरत पड़ने पर ही पुनर्गणना करते हैं.
- सूत्र की परिभाषा अपरिवर्तनीय है. फ़ॉर्मूला में दी गई परिभाषा सच्चाई का एकमात्र स्रोत है और मान को ऐप में कहीं और नहीं बदला जा सकता है. चरों के साथ, यह संभव है कि कुछ कोड अप्रत्याशित रूप से मान बदल दे, लेकिन नामित सूत्रों के साथ डीबग करने में यह कठिन स्थिति संभव नहीं है।
- सूत्र की गणना को टाला जा सकता है. क्योंकि इसका मूल्य अपरिवर्तनीय है, इसलिए आवश्यकता पड़ने पर इसकी गणना हमेशा की जा सकती है, जिसका अर्थ है कि जब तक इसकी आवश्यकता न हो, इसकी गणना करने की आवश्यकता नहीं है। किसी ऐप्लिकेशन के screen2 के प्रदर्शित होने तक उपयोग नहीं किए जाने वाले फ़ॉर्मूला मानों की गणना तब तक नहीं की जानी चाहिए जब तक कि screen2 दिखाई न दे. इस कार्य को स्थगित करने से ऐप लोड समय में सुधार हो सकता है. नामित सूत्र घोषणात्मक हैं और सिस्टम को यह अनुकूलित करने के अवसर प्रदान करते हैं कि उनकी गणना कैसे और कब की जाती है.
- नामांकित सूत्र एक Excel अवधारणा है. Power Fx 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" )
को कॉल कर सकते हैं या अन्य शैलियों पर फ़िल्टर कर सकते हैं।
इसका वाक्यविन्यास इस प्रकार है:
फ़ंक्शननाम( [ पैरामीटरनाम1: पैरामीटरटाइप1 [, पैरामीटरनाम2: पैरामीटरटाइप2 ... ] ] ) : रिटर्नटाइप = फ़ॉर्मूला;
- FunctionName – आवश्यक. उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन का नाम.
- पैरामीटरनाम – वैकल्पिक. फ़ंक्शन पैरामीटर का नाम.
- पैरामीटर प्रकार – वैकल्पिक. किसी प्रकार का नाम, या तो एक अंतर्निहित डेटा प्रकार नाम, एक डेटा स्रोत नाम, या Type फ़ंक्शन के साथ परिभाषित एक प्रकार।
- ReturnType – आवश्यक. फ़ंक्शन से लौटाए गए मान का प्रकार.
- सूत्र – आवश्यक. वह सूत्र जो पैरामीटर के आधार पर फ़ंक्शन के मान की गणना करता है।
प्रत्येक पैरामीटर और उपयोगकर्ता परिभाषित फ़ंक्शन से आउटपुट टाइप किया जाना चाहिए। इस उदाहरण में, SelectedGenre: Text
हमारे फ़ंक्शन के लिए पहला पैरामीटर टेक्स्ट प्रकार का परिभाषित करता है और SelectedGenre
उस पैरामीटर का नाम है जिसका उपयोग बॉडी में फ़िल्टर ऑपरेशन के लिए किया जाता है। समर्थित प्रकार नामों के लिए डेटा प्रकार देखें.
टाइप फ़ंक्शन का उपयोग हमारी लाइब्रेरी के लिए एक समग्र प्रकार बनाने के लिए किया जाता है, ताकि हम अपने फ़ंक्शन से पुस्तकों की एक तालिका लौटा सकें।
हमने LibraryType
को रिकॉर्ड प्रकार की बहुवचन तालिका के रूप में परिभाषित किया है। यदि हम किसी एकल पुस्तक को किसी फ़ंक्शन में पास करना चाहते हैं, तो हम RecordOf function के साथ इस तालिका के लिए रिकॉर्ड का प्रकार निकाल सकते हैं:
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 जोड़ें। इस फ़ंक्शन का रिटर्न प्रकार Void है क्योंकि यह कोई मान नहीं लौटाता है।
व्यवहार उपयोगकर्ता परिभाषित फ़ंक्शन का सिंटैक्स है:
FunctionName( [ ParameterName1: ParameterType1 [, ParameterName2: ParameterType2 ... ] ) : रिटर्नटाइप = { फॉर्मूला1 [ ; फॉर्मूला2 . .. ] };
- FunctionName – आवश्यक. उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन का नाम.
- पैरामीटरनाम – वैकल्पिक. फ़ंक्शन पैरामीटर का नाम.
- पैरामीटर प्रकार – वैकल्पिक. किसी प्रकार का नाम, या तो एक अंतर्निहित डेटा प्रकार नाम, एक डेटा स्रोत नाम, या प्रकार फ़ंक्शन के साथ परिभाषित एक प्रकार।
- ReturnType – आवश्यक. फ़ंक्शन से लौटाए गए मान का प्रकार. यदि फ़ंक्शन कोई मान नहीं लौटाता है तो Void का उपयोग करें.
- सूत्र – आवश्यक. वह सूत्र जो पैरामीटर के आधार पर फ़ंक्शन के मान की गणना करता है।
सभी सूत्रों की तरह, त्रुटि आने पर निष्पादन समाप्त नहीं होता है। Power Fx त्रुटि फ़ंक्शन को कॉल किए जाने के बाद, यदि फ़ंक्शन बचत और खर्च में होने वाले परिवर्तनों को रोकता है। IfError फ़ंक्शन का उपयोग किसी त्रुटि के बाद आगे के निष्पादन को रोकने के लिए भी किया जा सकता है। भले ही यह Void लौटाता है, फिर भी यदि कोई समस्या है तो सूत्र त्रुटि लौटा सकता है।
उपयोगकर्ता परिभाषित प्रकार
महत्त्वपूर्ण
- उपयोगकर्ता परिभाषित प्रकार एक प्रयोगात्मक सुविधा है।
- प्रायोगिक सुविधाएं उत्पादन में उपयोग के लिए नहीं होतीं और हो सकता है कि वे पूर्ण न हों। ये सुविधाएँ आधिकारिक रिलीज़ से पहले उपलब्ध होती हैं ताकि आप शीघ्र पहुँच प्राप्त कर सकें और प्रतिक्रिया दे सकें। अधिक जानकारी: कैनवास ऐप में प्रयोगात्मक, पूर्वावलोकन और रिटायर्ड फ़ीचर्स समझें
- यह आलेख जिस व्यवहार का वर्णन करता है वह केवल तभी उपलब्ध होता है जब उपयोगकर्ता-परिभाषित प्रकारसेटिंग्स > आगामी सुविधाएँ > प्रायोगिक में प्रायोगिक सुविधा चालू होती है (यह डिफ़ॉल्ट रूप से बंद होती है)।
- आपकी प्रतिक्रिया हमारे लिए बहुमूल्य है। Power Apps प्रयोगात्मक सुविधाओं के समुदाय मंच में हमें बताएँ कि आप क्या सोचते हैं।
नामित सूत्रों का उपयोग Type फ़ंक्शन के साथ उपयोगकर्ता परिभाषित प्रकार बनाने के लिए किया जा सकता है। उपयोगकर्ता परिभाषित प्रकार को परिभाषित करने के लिए :=
के बजाय =
का उपयोग करें, उदाहरण के लिए Book := Type( { Title: Text, Author: Text } )
. अधिक जानकारी और उदाहरण के लिए टाइप फ़ंक्शन देखें।
OnError गुण
ऐप में कहीं भी त्रुटि होने पर कार्रवाई करने के लिए OnError का उपयोग करें। यह अंतिम उपयोगकर्ता को प्रदर्शित होने से पहले त्रुटि बैनर को रोकने का वैश्विक अवसर प्रदान करता है। इसका उपयोग ट्रेस फ़ंक्शन के साथ किसी त्रुटि को लॉग करने या किसी डेटाबेस या वेब सेवा पर लिखने के लिए भी किया जा सकता है.
कैनवास ऐप्स में, प्रत्येक सूत्र मूल्यांकन के परिणाम की त्रुटि के लिए जाँच की जाती है। यदि कोई त्रुटि सामने आती है, तो OnError का मूल्यांकन उसी FirstError और AllErrors स्कोप चर के साथ किया जाता है, जिसका उपयोग तब किया जाता, जब संपूर्ण सूत्र को IfError फ़ंक्शन में लपेटा गया होता।
अगर OnError खाली है, तो त्रुटि के FirstError.Message के साथ एक डिफ़ॉल्ट त्रुटि बैनर दिखाया जाता है. किसी OnError फ़ॉर्मूला को परिभाषित करने से यह व्यवहार ओवरराइड हो जाता है जिससे निर्माता को त्रुटि रिपोर्टिंग को संभालने में सक्षम बनाता है जैसा कि वे फिट देखते हैं. त्रुटि फ़ंक्शन के साथ त्रुटि को रीथ्रो करके OnError में डिफ़ॉल्ट व्यवहार का अनुरोध किया जा सकता है. यदि कुछ त्रुटियों को छांटना है या अलग तरीके से निपटना है, जबकि अन्य को छोड़ देना है, तो पुनः फेंकने का तरीका अपनाएं।
OnError गणना में त्रुटि को उस तरह से प्रतिस्थापित नहीं कर सकता है जिस तरह से IfError कर सकता है। यदि OnError लागू किया जाता है, तो त्रुटि पहले ही घटित हो चुकी है और इसे पहले ही सूत्र गणनाओं के माध्यम से संसाधित किया जा चुका है जैसे IfError; OnError केवल त्रुटि रिपोर्टिंग को नियंत्रित करता है।
OnError सूत्रों का मूल्यांकन समवर्ती रूप से किया जाता है और यह संभव है कि उनका मूल्यांकन अन्य त्रुटियों के प्रसंस्करण के साथ ओवरलैप हो सकता है। उदाहरण के लिए, यदि आप किसी OnError के शीर्ष पर एक वैश्विक चर सेट करते हैं और इसे बाद में उसी सूत्र में पढ़ते हैं, तो मान बदल सकता है. सूत्र के लिए स्थानीय नामित मान बनाने के लिए साथ फ़ंक्शन का उपयोग करें.
हालांकि प्रत्येक त्रुटि को OnError द्वारा व्यक्तिगत रूप से संसाधित किया जाता है, डिफ़ॉल्ट त्रुटि बैनर प्रत्येक त्रुटि के लिए व्यक्तिगत रूप से प्रकट नहीं हो सकता है. एक ही समय में बहुत अधिक त्रुटि बैनर प्रदर्शित होने से बचने के लिए, यदि वही त्रुटि बैनर हाल ही में प्रदर्शित किया गया है तो उसे दोबारा प्रदर्शित नहीं किया जाएगा।
उदाहरण
एक लेबल नियंत्रण और स्लाइडर नियंत्रण पर विचार करें जो सूत्र के माध्यम से एक साथ बंधे हैं:
Label1.Text = 1/Slider1.Value
स्लाइडर 50 पर डिफॉल्ट करता है. यदि स्लाइडर को 0 पर ले जाया जाता है, Label1 कोई मान नहीं दिखाएगा, और एक त्रुटि बैनर दिखाया जाएगा:
आइए देखें कि क्या हुआ विस्तार से:
- उपयोगकर्ता स्लाइड को बाईं ओर ले गया और Slide1.Value गुण 0 में बदल गया.
- लेबल1.टेक्स्ट का स्वचालित रूप से पुनर्मूल्यांकन किया गया। शून्य से विभाजन हुआ, एक त्रुटि उत्पन्न हुई.
- इस सूत्र में कोई IfError नहीं है. सूत्र मूल्यांकन द्वारा शून्य त्रुटि द्वारा विभाजन लौटाया जाता है.
- Label1.Text इस त्रुटि के लिए कुछ भी नहीं दिखा सकता है, इसलिए यह एक रिक्त स्थिति दिखाता है।
- OnError लागू किया जाता है. चूंकि कोई हैंडलर नहीं है, मानक त्रुटि बैनर त्रुटि जानकारी के साथ प्रदर्शित होता है.
यदि आवश्यक हो, तो हम सूत्र को Label1.Text = IfError( 1/Slider1.Value, 0 )
में संशोधित भी कर सकते हैं.
IfError का उपयोग करने से कोई त्रुटि या त्रुटि बैनर नहीं आएगा। हम OnError से किसी त्रुटि का मान नहीं बदल सकते क्योंकि उस बिंदु पर त्रुटि पहले ही हो चुकी है, यह केवल एक प्रश्न है कि इसकी रिपोर्ट कैसे की जाएगी.
यदि हम एक OnError हैंडलर जोड़ते हैं, तो चरण 5 से पहले इसका कोई प्रभाव नहीं पड़ता है, लेकिन यह त्रुटि की रिपोर्ट करने के तरीके को प्रभावित कर सकता है:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" )
इस OnError हैंडलर के साथ, ऐप उपयोगकर्ता के दृष्टिकोण से, कोई त्रुटि नहीं होगी। लेकिन त्रुटि मॉनिटर के ट्रेस में जोड़ी जाएगी, त्रुटि जानकारी के स्रोत के साथ FirstError:
यदि हम ट्रेस के अलावा समान डिफ़ॉल्ट त्रुटि बैनर भी प्रदर्शित करना चाहते हैं, तो हम ट्रेस कॉल के बाद त्रुटि फ़ंक्शन के साथ त्रुटि को फिर से फेंक सकते हैं, जैसा कि ट्रेस नहीं होने पर होता था:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )
OnStart संपत्ति
नोट
किसी अनुप्रयोग को लोड करते समय OnStart गुण का उपयोग प्रदर्शन की समस्याओं का कारण बन सकता है. हम संपत्ति का उपयोग करने के शीर्ष दो कारणों के लिए विकल्प बनाने की प्रक्रिया में हैं - डेटा कैश करना और वैश्विक चर सेट अप करना. हमने Navigate के साथ दिखाई जाने वाली पहली स्क्रीन को परिभाषित करने के लिए विकल्प पहले ही बना लिया है. आपके संदर्भ के आधार पर, यह गुण डिफ़ॉल्ट रूप से अक्षम किया जा सकता है. यदि आप इसे नहीं देखते हैं और आपको इसका उपयोग करने की ज़रूरत है, तो इसे सक्षम करने के लिए स्विच करने के लिए अनुप्रयोग की उन्नत सेटिंग्स जांचें. स्क्रीन के OnVisible गुण को भी उपयोग किया जा सकता है. डिफ़ॉल्ट रूप से, जब नॉन-ब्लॉकिंग ऑनस्टार्ट नियम सक्षम होता है, तो यह ऑनस्टार्ट फ़ंक्शन को अन्य ऐप नियमों के साथ-साथ चलने की अनुमति देता है। इसलिए, यदि अन्य ऐप नियमों में संदर्भित चर OnStart फ़ंक्शन के भीतर आरंभ किए गए हैं, तो वे अभी तक पूरी तरह से आरंभ नहीं हो सकते हैं। इसके अतिरिक्त, ऐसी संभावना है कि स्क्रीन Screen.OnVisible या App.OnStart फ़ंक्शन के निष्पादन समाप्त होने से पहले ही रेंडर हो सकती है और इंटरैक्टिव हो सकती है, खासकर यदि उन्हें पूरा होने में लंबा समय लगता है।
जब उपयोगकर्ता अनुप्रयोग शुरू करता है तो OnStart गुण चलता है. इस गुण का उपयोग अक्सर निम्नलिखित कार्यों को करने के लिए किया जाता है:
- Collect फ़ंक्शन का उपयोग करके संग्रह में डेटा पुनर्प्राप्त और कैश करें.
- Set function का उपयोग करके वैश्विक चर सेट करें.
पहली स्क्रीन दिखाई देने से पहले इस सूत्र का मूल्यांकन किया जाता है. कोई स्क्रीन लोड नहीं है, इसलिए आप UpdateContext फ़ंक्शन के साथ संदर्भ चर सेट नहीं कर सकते. हालांकि, आप Navigate फ़ंक्शन के साथ संदर्भ चर पास कर सकते हैं.
आपके द्वारा OnStart गुण को बदलने के बाद, ट्री दृश्य फलक में ऐप ऑब्जेक्ट पर हवर करके, इलिप्सिस (...) को चुनकर और फिर OnStart चलाएं को चुनकर इसका परीक्षण करें. जब अनुप्रयोग पहली बार लोड होता है, तो इसके विपरीत, मौजूदा संग्रह और चर पहले ही सेट हो जाएंगे. खाली संग्रहों के साथ शुरू करने के लिए, ClearCollect फ़ंक्शन के बजाय Collect फ़ंक्शन का उपयोग करें.
नोट
- OnStart गुण में Navigate फ़ंक्शन का उपयोग करना बंद कर दिया गया है. मौजूदा ऐप्स काम करते रहेंगे. सीमित समय के लिए, आप अभी भी इसे ऐप सेटिंग (रिटायर्ड के अंतर्गत उपलब्ध) में सक्षम कर सकते हैं. हालांकि, इस तरह से Navigate का उपयोग करने से ऐप लोड में देरी हो सकती है, क्योंकि यह सिस्टम को पहली स्क्रीन दिखाई देने से पहले OnStart का मूल्यांकन पूरा करने के लिए बाध्य करता है. दिखने वाली पहली स्क्रीन की गणना करने के लिए इसके बजाय StartScreen गुण का उपयोग करें.
- मार्च 2021 से पहले बनाए गए उन ऐप्स के लिए रिटायर्ड स्विच बंद हो जाएगा, जहां आपने मार्च 2021 और अब के बीच Navigate to OnStart जोड़ा था। जब आप Power Apps Studio में ऐसे ऐप्स को संपादित करते हैं, तो आपको एक त्रुटि दिखाई दे सकती है. इस त्रुटि को दूर करने के लिए सेवानिवृत्त स्विच को चालू करें।
StartScreen गुण
StartScreen गुण निर्धारित करती है कि कौन सी स्क्रीन पहले दिखाई जाएगी. ऐप लोड होने पर इसका मूल्यांकन एक बार किया जाता है और स्क्रीन ऑब्जेक्ट को प्रदर्शित करने के लिए देता है. डिफ़ॉल्ट रूप से, यह गुण रिक्त होता है, और स्टूडियो ट्री दृश्य में पहली स्क्रीन पहले दिखाई जाती है.
StartScreen एक डेटा प्रवाह गुण है जिसमें व्यवहार फ़ंक्शन शामिल नहीं हो सकते हैं। सभी डेटा प्रवाह कार्य उपलब्ध हैं, विशेष रूप से इन कार्यों और संकेतों का उपयोग यह निर्धारित करने के लिए करते हैं कि कौन सी स्क्रीन पहले दिखाई जाए:
- Param फ़ंक्शन ऐप को शुरू करने के लिए उपयोग किए जाने वाले पैरामीटर्स को पढ़ने के लिए।
- वर्तमान उपयोगकर्ता के बारे में जानकारी पढ़ने के लिए User फ़ंक्शन।
- LookUp, Filter, CountRows, Max, और अन्य फ़ंक्शन जो डेटा स्रोत से पढ़ते हैं.
- कोई भी API एक कनेक्टर के माध्यम से कॉल करता है, लेकिन सावधान रहें कि यह जल्दी से वापस आ जाए.
- कनेक्शन, कंपास और ऐप जैसे सिग्नल.
नोट
वैश्विक चर और संग्रह, जिनमें OnStart में निर्मित चर शामिल हैं, StartScreen में उपलब्ध नहीं हैं. नामित सूत्र उपलब्ध हैं और प्रायः पूरे ऐप में सूत्रों के पुनः उपयोग के लिए बेहतर विकल्प होते हैं।
अगर StartScreen कोई त्रुटि देता है, तो स्टूडियो वृक्ष दृश्य में पहली स्क्रीन इस तरह दिखाई जाएगी मानो StartScreen सेट नहीं की गई हो. किसी भी त्रुटि को पकड़ने और उचित त्रुटि स्क्रीन पर रीडायरेक्ट करने के लिए IfError फ़ंक्शन उपयोग करें.
स्टूडियो में StartScreen बदलने के बाद, ट्री दृश्य फलक में ऐप ऑब्जेक्ट पर होवर करके, इलिप्सिस (...) चुनकर और फिर StartScreen पर नेविगेट करें चुनकर इसका परीक्षण करें. स्क्रीन इस प्रकार बदल जाएगी मानो ऐप अभी लोड हुआ हो।
उदाहरण
Screen9
बताता है कि जब भी ऐप शुरू होता है तो Screen9
को सबसे पहले दिखाया जाना चाहिए.
If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )
जांचता है कि क्या उपयोगकर्ता द्वारा परम "व्यवस्थापक-मोड" सेट किया गया है और इसका उपयोग यह तय करने के लिए करता है कि 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 प्रॉपर्टी का उपयोग करें। Power Apps Studio यह डिबगिंग के समय उपयोगी हो सकता है और यह सुनिश्चित करने के लिए कि आपका ऐप Power Apps Studio के नवीनतम संस्करण के साथ पुनः प्रकाशित किया गया है।
StudioVersion को पाठ के रूप में लौटाया जाता है. पाठ का प्रारूप समय के साथ बदल सकता है और इसे संपूर्ण रूप में ही पढ़ना चाहिए; अलग-अलग भागों को निकालने से बचें।