नोट
इस पेज तक पहुँच के लिए प्रमाणन की आवश्यकता होती है. आप साइन इन करने या निर्देशिकाओं को बदलने का प्रयास कर सकते हैं.
इस पेज तक पहुँच के लिए प्रमाणन की आवश्यकता होती है. आप निर्देशिकाओं को बदलने का प्रयास कर सकते हैं.
इस पर लागू होता है: कैनवास ऐप्स
वर्तमान में चल रहे ऐप के बारे में जानकारी प्राप्त करें और ऐप के व्यवहार को नियंत्रित करें।
विवरण
एक नियंत्रण की तरह, ऐप ऑब्जेक्ट में ऐसे गुण होते हैं जो पहचानते हैं कि कौन सी स्क्रीन दिखाई दे रही है और आपको परिवर्तनों को सहेजने के लिए संकेत देते हैं ताकि आप उन्हें न खोएं। हर अनुप्रयोग में अनुप्रयोग ऑब्जेक्ट होता है.
ऐप ऑब्जेक्ट के कुछ गुणों के लिए सूत्र लिखें। ट्री दृश्य फलक के सबसे ऊपर, अनुप्रयोग ऑब्जेक्ट चुनें, जैसा कि आप किसी भी अन्य नियंत्रण या स्क्रीन के लिए करते हैं. ऑब्जेक्ट के गुणों में से किसी एक को देखने या संपादित करने के लिए, सूत्र पट्टी के बाईं ओर ड्रॉप-डाउन सूची में इसका चयन करें.
यह आलेख निम्न अनुप्रयोग ऑब्जेक्ट गुण को शामिल करता है:
- ActiveScreen – वह स्क्रीन जो वर्तमान में प्रदर्शित होती है।
- BackEnabled - ऐप डिवाइस बैक जेस्चर पर कैसे प्रतिक्रिया करता है।
- ConfirmExit और ConfirmExitMessage - ऐप बंद करने से पहले उपयोगकर्ता को चेतावनी दें।
- कनेक्शन स्ट्रिंग - एप्लिकेशन इनसाइट्स लॉगिंग सेट करें।
- सूत्र - नामित सूत्र, उपयोगकर्ता परिभाषित फ़ंक्शन और उपयोगकर्ता परिभाषित प्रकार निर्धारित करें.
- OnError - विश्व स्तर पर त्रुटियों को संभालें।
- OnStart - ऐप शुरू होने पर तर्क चलाएं।
- StartScreen - ऐप लोड होने पर पहले दिखाई गई स्क्रीन को सेट करें।
- StudioVersion - ऐप प्रकाशित करने वाला Power Apps स्टूडियो संस्करण लौटाएं।
ActiveScreen गुण
ActiveScreen गुण वर्तमान में प्रदर्शित स्क्रीन की पहचान करता है।
यह गुण एक स्क्रीन ऑब्जेक्ट लौटाता है. वर्तमान स्क्रीन के गुणों को संदर्भित करने के लिए इसका उपयोग करें, जैसे कि सूत्र App.ActiveScreen.Name के साथ नाम। आप इस गुण की तुलना किसी अन्य स्क्रीन ऑब्जेक्ट से भी कर सकते हैं, जैसे तुलना सूत्र App.ActiveScreen = Screen2 के साथ यह जांचने के लिए कि Screen2 वर्तमान स्क्रीन है या नहीं।
प्रदर्शित स्क्रीन को स्विच करने के लिए बैक या नेविगेट फ़ंक्शन का उपयोग करें।
BackEnabled संपत्ति
BackEnabled गुण यह बदल देता है कि Power Apps मोबाइल में चलने पर ऐप डिवाइस के बैक जेस्चर (Android डिवाइस पर हार्डवेयर बैक बटन को स्वाइप करें या उपयोग करें, या iOS डिवाइस पर बाईं ओर से स्वाइप करें) पर कैसे प्रतिक्रिया करता है. सक्षम होने पर, डिवाइस बैक जेस्चर उस स्क्रीन पर वापस चला जाता है जो हाल ही में दिखाया गया था, जो बैक फॉर्मूला के समान है। अक्षम होने पर, डिवाइस बैक जेस्चर उपयोगकर्ता को ऐप सूची में ले जाता है।
ConfirmExit गुण
कोई भी सहेजे नहीं गए परिवर्तनों को खोना चाहता है। अपना ऐप बंद करने से पहले उपयोगकर्ता को चेतावनी देने के लिए ConfirmExit और ConfirmExitMessage गुणों का उपयोग करें।
नोट
- ConfirmExit एम्बेड किए गए ऐप्स में काम नहीं करता है, उदाहरण के लिए, Power BI और SharePoint.
- ConfirmExit कस्टम पृष्ठों में समर्थित नहीं है.
- अब, ये गुण केवल पहली स्क्रीन पर नियंत्रणों का संदर्भ दे सकते हैं यदि विलंबित लोड पूर्वावलोकन सुविधा सक्षम है (जो कि नए ऐप्स के लिए डिफ़ॉल्ट रूप से है)। यदि आप अन्य स्क्रीन का संदर्भ देते हैं, तो Power Apps Studio कोई त्रुटि नहीं दिखाता है, लेकिन प्रकाशित अनुप्रयोग Power Apps Mobile या ब्राउज़र में नहीं खुलता है. Microsoft इस सीमा को उठाने के लिए काम कर रहा है। इस बीच, सेटिंग्स में > बंद करेंआगामी सुविधाएँ (पूर्वावलोकन के अंतर्गत).
ConfirmExit
ConfirmExit एक बूलियन गुण है, जो सत्य होने पर, ऐप बंद होने से पहले एक पुष्टिकरण संवाद बॉक्स खोलता है। डिफ़ॉल्ट रूप से, यह गुण गलत होता है और कोई संवाद बॉक्स प्रकट नहीं होता है.
जब उपयोगकर्ता के पास ऐप में सहेजे न गए परिवर्तन हो सकते हैं, तो ऐप से बाहर निकलने से पहले एक पुष्टिकरण संवाद बॉक्स दिखाने के लिए इस गुण का उपयोग करें। ऐसे सूत्र का उपयोग करें जो चर और नियंत्रण गुणों की जाँच करता है (उदाहरण के लिए, प्रपत्र नियंत्रण संपादित करें का सहेजा न गया गुण).
पुष्टिकरण संवाद बॉक्स किसी भी स्थिति में प्रकट होता है जहाँ डेटा खो सकता है, जैसे:
- निकास फ़ंक्शन चलाएँ।
- अगर ऐप्लिकेशन किसी ब्राउज़र में चलता है, तो:
- ब्राउज़र या ब्राउज़र टैब बंद करें जहां ऐप चलता है।
- ब्राउज़र के बैक बटन का चयन करें।
- स्वयं केLaunchTarget के साथ लॉन्च फ़ंक्शन चलाएँ।
- यदि ऐप Power Apps Mobile (iOS या Android) में चलता है:
- Power Apps Mobile में किसी भिन्न अनुप्रयोग पर स्विच करने के लिए स्वाइप करें.
- Android डिवाइस पर वापस जाएं बटन चुनें.
- एक और कैनवास ऐप लॉन्च करने के लिए लॉन्च फ़ंक्शन चलाएं।
पुष्टिकरण संवाद बॉक्स का सटीक स्वरूप Power Apps के सभी डिवाइसेस और संस्करणों में भिन्न हो सकता है.
पुष्टिकरण संवाद बॉक्स Power Apps Studio में दिखाई नहीं देता है.
ConfirmExitMessage
डिफ़ॉल्ट रूप से, पुष्टिकरण संवाद बॉक्स एक सामान्य संदेश दिखाता है, जैसे "आपके पास बिना सहेजे गए परिवर्तन हो सकते हैं." उपयोगकर्ता की भाषा में.
उपयोग ConfirmExitMessageपुष्टिकरण संवाद बॉक्स में एक कस्टम संदेश प्रदान करने के लिए. यदि यह गुण खाली है, तो डिफ़ॉल्ट मान का उपयोग किया जाता है. कस्टम संदेशों को पुष्टिकरण संवाद बॉक्स में फिट करने के लिए आवश्यकतानुसार छोटा कर दिया जाता है, इसलिए संदेश को अधिकतम कुछ पंक्तियों में रखें।
किसी ब्राउज़र में, पुष्टिकरण संवाद बॉक्स ब्राउज़र से एक सामान्य संदेश दिखा सकता है.
उदाहरण
इस व्यंजक के लिए अनुप्रयोग ऑब्जेक्ट ConfirmExit गुण सेट करें:
AccountForm.Unsaved Or ContactForm.Unsavedसंवाद बॉक्स तब प्रकट होता है जब उपयोगकर्ता किसी भी प्रपत्र में डेटा परिवर्तित करता है और फिर उन परिवर्तनों को सहेजे बिना अनुप्रयोग को बंद करने का प्रयास करता है.
इस सूत्र में अनुप्रयोग ऑब्जेक्ट का ConfirmExitMessage गुण सेट करें:
If( AccountForm.Unsaved, "Accounts form has unsaved changes.", "Contacts form has unsaved changes." )संवाद बॉक्स एक प्रपत्र-विशिष्ट संदेश दिखाता है जब उपयोगकर्ता किसी भी प्रपत्र में डेटा परिवर्तित करता है और फिर उन परिवर्तनों को सहेजे बिना अनुप्रयोग को बंद करने का प्रयास करता है.
कनेक्शन स्ट्रिंग गुण
अनुप्रयोग इनसाइट्स के लिए सिस्टम-जनरेट किए गए अनुप्रयोग लॉग निर्यात करने के लिए कनेक्शन स्ट्रिंग गुण का उपयोग करें।
connection string सेट करने के लिए:
- संपादन के लिए अपना ऐप खोलें। 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' );
यदि उपयोगकर्ता शीर्षक के लिए सूत्र को अद्यतन करने की आवश्यकता है, तो आप इसे इस एक स्थान पर आसानी से अपडेट कर सकते हैं। यदि ऐप में 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" )या फ़िल्टर कर सकते हैं।
इसका वाक्यविन्यास इस प्रकार है:
फ़ंक्शननाम( [ पैरामीटरनाम1: पैरामीटरटाइप1 [, पैरामीटरनाम2: पैरामीटरटाइप2 ... ] ] ) : रिटर्नटाइप = फ़ॉर्मूला;
- FunctionName – आवश्यक. उपयोगकर्ता-निर्धारित फ़ंक्शन का नाम.
- पैरामीटरनाम – वैकल्पिक. फ़ंक्शन पैरामीटर का नाम.
- पैरामीटर प्रकार – वैकल्पिक. किसी प्रकार का नाम, या तो एक अंतर्निहित डेटा प्रकार नाम, एक डेटा स्रोत नाम, या प्रकार फ़ंक्शन का उपयोग करके परिभाषित एक प्रकार।
- ReturnType – आवश्यक. फ़ंक्शन से लौटाए गए मान का प्रकार.
- सूत्र – आवश्यक. वह सूत्र जो पैरामीटर के आधार पर फ़ंक्शन के मान की गणना करता है।
आपको प्रत्येक पैरामीटर और आउटपुट को उपयोगकर्ता-निर्धारित फ़ंक्शन से टाइप करना होगा। इस उदाहरण में, SelectedGenre: Text फ़ंक्शन के लिए पहला पैरामीटर निर्धारित करता है जो पाठ प्रकार का होता है और SelectedGenre फ़िल्टर कार्रवाई के लिए मुख्य भाग में उपयोग किया जाता है जो पैरामीटर का नाम है। समर्थित प्रकार नामों के लिए डेटा प्रकार देखें.
टाइप फ़ंक्शन का उपयोग लाइब्रेरी के लिए एक समग्र प्रकार बनाने के लिए किया जाता है, ताकि आप फ़ंक्शन से पुस्तकों की एक तालिका वापस कर सकें।
आप रिकॉर्ड प्रकार की बहुवचन तालिका के रूप में परिभाषित करते 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 जोड़ें। इस फ़ंक्शन का रिटर्न प्रकार Void है क्योंकि यह कोई मान नहीं लौटाता है।
व्यवहार उपयोगकर्ता परिभाषित फ़ंक्शन का सिंटैक्स है:
FunctionName( [ ParameterName1: ParameterType1 [, ParameterName2: ParameterType2 ... ] ] ) : रिटर्नटाइप = { फॉर्मूला1 [ ; फॉर्मूला2 ... ] };
- FunctionName – आवश्यक. उपयोगकर्ता-निर्धारित फ़ंक्शन का नाम.
- पैरामीटरनाम – वैकल्पिक. फ़ंक्शन पैरामीटर का नाम.
- पैरामीटर प्रकार – वैकल्पिक. किसी प्रकार का नाम, या तो एक अंतर्निहित डेटा प्रकार नाम, एक डेटा स्रोत नाम, या प्रकार फ़ंक्शन के साथ परिभाषित एक प्रकार।
- ReturnType – आवश्यक. फ़ंक्शन से लौटाए गए मान का प्रकार. यदि फ़ंक्शन कोई मान नहीं लौटाता है तो Void का उपयोग करें.
- सूत्र – आवश्यक. वह सूत्र जो पैरामीटर के आधार पर फ़ंक्शन के मान की गणना करता है।
सभी सूत्रों की तरह, त्रुटि आने पर निष्पादन समाप्त नहीं होता है। Power Fx त्रुटि फ़ंक्शन को कॉल करने के बाद, यदि फ़ंक्शनबचत औरखर्च किए गए परिवर्तनों को होने से रोकता है। IfError फ़ंक्शन का उपयोग किसी त्रुटि के बाद आगे के निष्पादन को रोकने के लिए भी किया जा सकता है। भले ही यह Void लौटाता है, फिर भी यदि कोई समस्या है तो सूत्र त्रुटि लौटा सकता है।
उपयोगकर्ता परिभाषित प्रकार
उपयोगकर्ता निर्धारित प्रकार बनाने के लिए प्रकार फ़ंक्शन के साथ नामित सूत्रों का उपयोग करें. उपयोगकर्ता परिभाषित प्रकार को परिभाषित करने के लिए := के बजाय = का उपयोग करें, उदाहरण के लिए 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 कोई मान नहीं दिखाता है, और एक त्रुटि बैनर दिखाई देता है:
आइए देखें कि क्या होता है विस्तार से:
- आप स्लाइडर को बाईं ओर ले जाएं और स्लाइडर 1.मान गुण 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 से त्रुटि जानकारी का स्रोत भी शामिल है:
यदि आप ट्रेस के साथ डिफ़ॉल्ट त्रुटि बैनर भी दिखाना चाहते हैं, तो ट्रेस कॉल के बाद त्रुटि फ़ंक्शन का उपयोग करके त्रुटि को फिर से फेंक दें, जैसे कि ट्रेस वहां नहीं था:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )
OnStart संपत्ति
नोट
ऑनस्टार्ट प्रॉपर्टी का उपयोग करने से ऐप लोड करते समय प्रदर्शन समस्याएं हो सकती हैं। OnStart में तर्क जोड़ने से पहले इन विकल्पों पर विचार करें:
- डेटा कैश करने या वैश्विक चर सेट करने के लिए, जहाँ संभव हो, सूत्र गुण में एक नामित सूत्र का उपयोग करें.
- दिखाने के लिए पहली स्क्रीन सेट करने के लिए, नेविगेट के बजाय StartScreen गुण का उपयोग करें।
- किसी विशिष्ट स्क्रीन को दिखाए जाने पर तर्क चलाने के लिए, स्क्रीन के OnVisible गुण का उपयोग करें।
आपके संदर्भ के आधार पर, OnStart गुण डिफ़ॉल्ट रूप से अक्षम हो सकता है। यदि आप इसे नहीं देखते हैं और इसका उपयोग करने की आवश्यकता है, तो इसे सक्षम करने के लिए स्विच के लिए ऐप की उन्नत सेटिंग्स देखें।
जब ऑनस्टार्ट को अवरुद्ध न करने का नियम (डिफ़ॉल्ट) सक्षम किया जाता है, तो ऑनस्टार्ट अन्य ऐप नियमों के समान समय चलता है। परिणामस्वरूप:
- हो सकता है कि OnStart में आरंभ किए गए वेरिएबल पूरी तरह से आरंभ न हों, जब अन्य ऐप नियम उन्हें पढ़ते हैं।
- App.OnStart या Screen.OnVisible के चलने से पहले एक स्क्रीन रेंडर और इंटरैक्टिव बन सकती है, खासकर अगर उन कार्यों में लंबा समय लगता है।
जब उपयोगकर्ता अनुप्रयोग शुरू करता है तो OnStart गुण चलता है. इस गुण का उपयोग निम्न के लिए करें:
- एकत्रित करें फ़ंक्शन का उपयोग करके संग्रह में डेटा पुनर्प्राप्त करें और कैश करें.
- Set function का उपयोग करके वैश्विक चर सेट करें.
यह सूत्र पहली स्क्रीन के प्रकट होने से पहले चलता है। कोई स्क्रीन लोड नहीं है, इसलिए आप UpdateContext फ़ंक्शन के साथ संदर्भ चर सेट नहीं कर सकते. लेकिन आप नेविगेट फ़ंक्शन के साथ संदर्भ चर पास कर सकते हैं।
आप OnStart गुण परिवर्तित करने के बाद, ट्री दृश्य फलक में अनुप्रयोग ऑब्जेक्ट पर होवर करके, दीर्घवृत्त (...) का चयन करके, और उसके बाद चलाएँ OnStart का चयन करके इसका परीक्षण करें। ऐप पहली बार लोड होने के विपरीत, मौजूदा संग्रह और चर पहले से ही सेट हैं। खाली संग्रहों के साथ शुरू करने के लिए, ClearCollect फ़ंक्शन के बजाय Collect फ़ंक्शन का उपयोग करें.
नोट
- OnStart प्रॉपर्टी में नेविगेट फ़ंक्शन का उपयोग करना सेवानिवृत्त है। मौजूदा ऐप्स अभी भी काम करते हैं। सीमित समय के लिए, आप इसे ऐप सेटिंग ( सेवानिवृत्त के तहत) में सक्षम कर सकते हैं। लेकिन इस तरह से नेविगेट का उपयोग करने से ऐप लोड में देरी हो सकती है क्योंकि यह सिस्टम को पहली स्क्रीन दिखाने से पहले ऑनस्टार्ट चलाने के लिए मजबूर करता है। प्रदर्शित पहली स्क्रीन सेट करने के लिए इसके बजाय StartScreen गुण का उपयोग करें।
- रिटायर्ड स्विच मार्च 2021 से पहले बनाए गए ऐप्लिकेशन के लिए बंद है, जहां आपने मार्च 2021 और अब के बीच नेविगेट कोOnStart में जोड़ा था. जब आप इन ऐप्स को Power Apps Studio में संपादित करते हैं, तो आपको एक त्रुटि दिखाई देती है. इस त्रुटि को दूर करने के लिए सेवानिवृत्त स्विच को चालू करें।
StartScreen गुण
StartScreen गुण सेट करता है कि कौन सी स्क्रीन पहले दिखाई देती है। Power Apps इस गुण का मूल्यांकन एक बार तब करता है जब अनुप्रयोग लोड होता है और दिखाने के लिए स्क्रीन ऑब्जेक्ट लौटाता है. डिफ़ॉल्ट रूप से, यह गुण खाली है, और स्टूडियो ट्री दृश्य में पहली स्क्रीन पहले दिखाई देती है।
StartScreen एक डेटा प्रवाह गुण है जिसमें व्यवहार फ़ंक्शन शामिल नहीं हो सकते हैं। सभी डेटा प्रवाह कार्य उपलब्ध हैं। इन कार्यों और संकेतों का उपयोग करके यह तय करें कि कौन सी स्क्रीन पहले दिखानी है:
- Param फ़ंक्शन ऐप को शुरू करने के लिए उपयोग किए जाने वाले पैरामीटर्स को पढ़ने के लिए।
- वर्तमान उपयोगकर्ता के बारे में जानकारी पढ़ने के लिए User फ़ंक्शन।
- LookUp, Filter, CountRows, Max, और अन्य फ़ंक्शन जो डेटा स्रोत से पढ़ते हैं।
- एपीआई एक कनेक्टर के माध्यम से कॉल करता है। सुनिश्चित करें कि कॉल जल्दी से वापस आती है।
- कनेक्शन, कंपास और ऐप जैसे सिग्नल.
नोट
वैश्विक चर और संग्रह, जिनमें OnStart में बनाए गए हैं, StartScreen में उपलब्ध नहीं हैं। नामित सूत्र उपलब्ध हैं और अक्सर पूरे ऐप में सूत्रों के पुनः उपयोग के लिए बेहतर विकल्प होते हैं।
यदि StartScreen कोई त्रुटि देता है, तो स्टूडियो ट्री दृश्य में पहली स्क्रीन ऐसी दिखाई देती है जैसे कि StartScreen सेट नहीं है। किसी भी त्रुटि को पकड़ने और त्रुटि स्क्रीन पर रीडायरेक्ट करने के लिए IfError फ़ंक्शन का उपयोग करें।
स्टूडियो में StartScreen परिवर्तित करने के बाद, ट्री दृश्य फलक में अनुप्रयोग ऑब्जेक्ट पर होवर करके, दीर्घवृत्त (...) का चयन करके, और उसके बाद StartScreen करने के लिए नेविगेट का चयन करके इसका परीक्षण करें। स्क्रीन ऐसे बदलती है जैसे कि ऐप अभी लोड हुआ हो।
उदाहरण
Screen9
Screen9 जब भी ऐप शुरू होता है तो सबसे पहले दिखाता है।
If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )
जांचता है कि परम "व्यवस्थापक-मोड" सेट है या नहीं और इसका उपयोग यह तय करने के लिए करता है कि होमस्क्रीन या एडमिनस्क्रीन पहले दिखाई देता है या नहीं।
If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )
जांचता है कि क्या कोई सहभागी एक स्टाफ सदस्य है और उन्हें स्टार्टअप पर सही स्क्रीन पर निर्देशित करता है।
IfError( If( CustomConnector.APICall() = "Forest",
ForestScreen,
OceanScreen
),
ErrorScreen
)
API कॉल के आधार पर ऐप को ForestScreen या OceanScreen पर भेजता है. यदि एपीआई विफल हो जाता है, तो ऐप इसके बजाय उपयोग करता है ErrorScreen ।
स्टूडियो संस्करण संपत्ति
किसी ऐप को प्रकाशित करने के लिए उपयोग किए जाने वाले Power Apps Studio के संस्करण को दिखाने या लॉग करने के लिए StudioVersion गुण का उपयोग करें. यह गुण तब मदद करता है जब आप डीबगिंग कर रहे होते हैं और जाँच कर रहे होते हैं कि आपका ऐप Power Apps Studio के हाल के संस्करण के साथ पुनर्प्रकाशित किया गया है.
StudioVersion टेक्स्ट लौटाता है। इस पाठ का प्रारूप समय के साथ बदल सकता है, इसलिए इसे समग्र रूप से मानें और अलग-अलग भागों को न निकालें।