के माध्यम से साझा करें


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

ConfirmExit

ConfirmExit एक बूलियन गुण है, जो सत्य होने पर, ऐप बंद होने से पहले एक पुष्टिकरण संवाद बॉक्स खोलता है। डिफ़ॉल्ट रूप से, यह गुण गलत होता है और कोई संवाद बॉक्स प्रकट नहीं होता है.

जब उपयोगकर्ता के पास ऐप में सहेजे न गए परिवर्तन हो सकते हैं, तो ऐप से बाहर निकलने से पहले एक पुष्टिकरण संवाद बॉक्स दिखाने के लिए इस गुण का उपयोग करें। ऐसे सूत्र का उपयोग करें जो चर और नियंत्रण गुणों की जाँच करता है (उदाहरण के लिए, प्रपत्र नियंत्रण संपादित करें का सहेजा न गया गुण).

पुष्टिकरण संवाद बॉक्स किसी भी स्थिति में प्रकट होता है जहाँ डेटा खो सकता है, जैसे:

  • निकास फ़ंक्शन चलाएँ।
  • अगर ऐप्लिकेशन किसी ब्राउज़र में चलता है, तो:
    • ब्राउज़र या ब्राउज़र टैब बंद करें जहां ऐप चलता है।
    • ब्राउज़र के बैक बटन का चयन करें।
    • स्वयं केLaunchTarget के साथ लॉन्च फ़ंक्शन चलाएँ।
  • यदि ऐप Power Apps Mobile (iOS या Android) में चलता है:
    • Power Apps Mobile में किसी भिन्न अनुप्रयोग पर स्विच करने के लिए स्वाइप करें.
    • Android डिवाइस पर वापस जाएं बटन चुनें.
    • एक और कैनवास ऐप लॉन्च करने के लिए लॉन्च फ़ंक्शन चलाएं।

पुष्टिकरण संवाद बॉक्स का सटीक स्वरूप Power Apps के सभी डिवाइसेस और संस्करणों में भिन्न हो सकता है.

पुष्टिकरण संवाद बॉक्स Power Apps Studio में दिखाई नहीं देता है.

ConfirmExitMessage

डिफ़ॉल्ट रूप से, पुष्टिकरण संवाद बॉक्स एक सामान्य संदेश दिखाता है, जैसे "आपके पास बिना सहेजे गए परिवर्तन हो सकते हैं." उपयोगकर्ता की भाषा में.

उपयोग ConfirmExitMessageपुष्टिकरण संवाद बॉक्स में एक कस्टम संदेश प्रदान करने के लिए. यदि यह गुण खाली है, तो डिफ़ॉल्ट मान का उपयोग किया जाता है. कस्टम संदेशों को पुष्टिकरण संवाद बॉक्स में फिट करने के लिए आवश्यकतानुसार छोटा कर दिया जाता है, इसलिए संदेश को अधिकतम कुछ पंक्तियों में रखें।

किसी ब्राउज़र में, पुष्टिकरण संवाद बॉक्स ब्राउज़र से एक सामान्य संदेश दिखा सकता है.

नोट

ऐप ऑब्जेक्ट में दो और गुण हैं, OnMessage और , BackEnabledजो प्रयोगात्मक हैं। इन गुणों को अंततः ऐप ऑब्जेक्ट से हटा दिया जाता है। अपने उत्पादन परिवेश में इन गुणों का उपयोग न करें.

उदाहरण

  1. इस व्यंजक के लिए अनुप्रयोग ऑब्जेक्ट ConfirmExit गुण सेट करें:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    संवाद बॉक्स दिखाता है कि उपयोगकर्ता किसी भी प्रपत्र में डेटा परिवर्तित करता है और फिर उन परिवर्तनों को सहेजे बिना अनुप्रयोग को बंद करने का प्रयास करता है.e उपयोगकर्ता किसी भी प्रपत्र में डेटा परिवर्तित करता है और फिर उन परिवर्तनों को सहेजे बिना अनुप्रयोग को बंद करने का प्रयास करता है.

    [!div clas1. इस सूत्र में अनुप्रयोग ऑब्जेक्ट का ConfirmExitMessage गुण सेट करें:

    If( AccountsForm.Unsaved,
        "Accounts form has unsaved changes.",
        "Contacts form has unsaved changes."
    )
    

    संवाद बॉक्स दिखाता है कि उपयोगकर्ता खाता प्रपत्र में डेटा परिवर्तित करता है और फिर उन परिवर्तनों को सहेजे बिना अनुप्रयोग को बंद करने का प्रयास करता है.

    प्रपत्र-विशिष्ट पुष्टिकरण संवाद बॉक्स.

अनुप्रयोग इनसाइट्स के लिए कनेक्शन स्ट्रिंग सेट करें

सिस्टम जनरेट किए गए एप्लिकेशन लॉग को एप्लिकेशन इनसाइट्स में निर्यात करने के लिए, अपने कैनवास ऐप के लिए कनेक्शन स्ट्रिंग सेट करें।

  1. संपादन के लिए अपना ऐप खोलें। Power Apps Studio
  2. बाएँ नेविगेशन ट्री दृश्य में ऐप ऑब्जेक्ट का चयन करें.
  3. गुण फलक में कनेक्शन स्ट्रिंग दर्ज करें.

यदि डेटा एप्लिकेशन इनसाइट्स को नहीं भेजा जाता है, तो अपने 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 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 लौटाता है, फिर भी यदि कोई समस्या है तो सूत्र त्रुटि लौटा सकता है।

उपयोगकर्ता परिभाषित प्रकार

महत्त्वपूर्ण

नामित सूत्रों का उपयोग उपयोगकर्ता परिभाषित प्रकार बनाने के लिए 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

लेबल और स्लाइडर नियंत्रण सूत्र Label1.Text = 1/Slider1.Value के माध्यम से बंधे हैं.

स्लाइडर 50 पर डिफॉल्ट करता है. यदि स्लाइडर को 0 पर ले जाया जाता है, Label1 कोई मान नहीं दिखाएगा, और एक त्रुटि बैनर दिखाया जाएगा:

स्लाइडर नियंत्रण 0 पर चला गया, जिसके परिणामस्वरूप शून्य से विभाजन त्रुटि, तथा त्रुटि बैनर उत्पन्न हुआ।

आइए देखें कि क्या हुआ विस्तार से:

  1. उपयोगकर्ता स्लाइड को बाईं ओर ले गया और Slide1.Value गुण 0 में बदल गया.
  2. लेबल1.टेक्स्ट का स्वचालित रूप से पुनर्मूल्यांकन किया गया। शून्य से विभाजन हुआ, एक त्रुटि उत्पन्न हुई.
  3. इस सूत्र में कोई IfError नहीं है. सूत्र मूल्यांकन द्वारा शून्य त्रुटि द्वारा विभाजन लौटाया जाता है.
  4. Label1.Text इस त्रुटि के लिए कुछ भी नहीं दिखा सकता है, इसलिए यह एक रिक्त स्थिति दिखाता है।
  5. OnError लागू किया जाता है. चूंकि कोई हैंडलर नहीं है, मानक त्रुटि बैनर त्रुटि जानकारी के साथ प्रदर्शित होता है.

यदि आवश्यक हो, तो आप सूत्र Label1.Text = IfError( 1/Slider1.Value, 0 )को बदल भी सकते हैं। IfError का उपयोग करने का मतलब है कि कोई त्रुटि या त्रुटि बैनर नहीं है। आप OnError से किसी त्रुटि का मान नहीं बदल सकते क्योंकि त्रुटि पहले ही हो चुकी है—OnError केवल यह नियंत्रित करता है कि इसकी रिपोर्ट कैसे की जाए.

यदि आप कोई OnError हैंडलर जोड़ते हैं, तो यह चरण 5 से पहले के चरणों को प्रभावित नहीं करता है, लेकिन यह त्रुटि रिपोर्ट किए जाने का तरीका बदलता है:

Trace( $"Error {FirstError.Message} in {FirstError.Source}" )

App.OnError सूत्र ट्रेस उत्पन्न करने के लिए सेट किया गया है.

इस OnError हैंडलर के साथ, ऐप उपयोगकर्ता को कोई त्रुटि दिखाई नहीं देती है। लेकिन त्रुटि मॉनिटर के ट्रेस में जोड़ी जाती है, जिसमें FirstError से त्रुटि जानकारी का स्रोत भी शामिल है:

स्लाइडर नियंत्रण 0 पर चला गया, जिसके परिणामस्वरूप शून्य से विभाजन त्रुटि हुई, लेकिन कोई त्रुटि बैनर नहीं आया।

यदि आप ट्रेस के साथ डिफ़ॉल्ट त्रुटि बैनर भी दिखाना चाहते हैं, तो ट्रेस कॉल के बाद त्रुटि फ़ंक्शन के साथ त्रुटि को फिर से फेंक दें, जैसे कि ट्रेस वहां नहीं था:

Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )

OnStart संपत्ति

नोट

ऑनस्टार्ट प्रॉपर्टी का उपयोग करने से ऐप लोड करते समय प्रदर्शन समस्याएं हो सकती हैं। हम इस प्रॉपर्टी का उपयोग करने के शीर्ष दो कारणों के लिए विकल्प बना रहे हैं—डेटा कैशिंग करना और वैश्विक चर सेट करना। नेविगेट के साथ दिखाने के लिए पहली स्क्रीन को परिभाषित करने के लिए पहले से ही एक विकल्प है। आपके संदर्भ के आधार पर, इस गुण को डिफ़ॉल्ट रूप से अक्षम किया जा सकता है। यदि आप इसे नहीं देखते हैं और इसका उपयोग करने की आवश्यकता है, तो इसे सक्षम करने के लिए स्विच के लिए ऐप की उन्नत सेटिंग्स देखें। आप स्क्रीन की ऑनविज़िबल प्रॉपर्टी का भी उपयोग कर सकते हैं। डिफ़ॉल्ट रूप से, जब ऑनस्टार्ट को अवरुद्ध करने वाला नियम सक्षम नहीं होता है, तो यह ऑनस्टार्ट फ़ंक्शन को अन्य ऐप नियमों के साथ ही चलने देता है। इसलिए, यदि अन्य ऐप नियमों में संदर्भित चर ऑनस्टार्ट फ़ंक्शन के भीतर इनिशियलाइज़ किए जाते हैं, तो हो सकता है कि वे अभी तक पूरी तरह से आरंभ न हों। इसके अलावा, Screen.OnVisible या App.OnStart फ़ंक्शन के चलने से पहले एक स्क्रीन रेंडर और इंटरैक्टिव बन सकती है, खासकर यदि उन्हें समाप्त होने में लंबा समय लगता है।

जब उपयोगकर्ता अनुप्रयोग शुरू करता है तो OnStart गुण चलता है. इस संपत्ति का उपयोग अक्सर इसके लिए किया जाता है:

  • एकत्रित करें फ़ंक्शन का उपयोग करके संग्रह में डेटा पुनर्प्राप्त करें और कैश करें.
  • Set function का उपयोग करके वैश्विक चर सेट करें.

यह सूत्र पहली स्क्रीन के प्रकट होने से पहले चलता है। कोई स्क्रीन लोड नहीं है, इसलिए आप UpdateContext फ़ंक्शन के साथ संदर्भ चर सेट नहीं कर सकते. लेकिन आप नेविगेट फ़ंक्शन के साथ संदर्भ चर पास कर सकते हैं।

आप OnStart गुण परिवर्तित करने के बाद, ट्री दृश्य फलक में अनुप्रयोग ऑब्जेक्ट पर होवर करके, दीर्घवृत्त (...) का चयन करके, और उसके बाद चलाएँ OnStart का चयन करके इसका परीक्षण करें। ऐप पहली बार लोड होने के विपरीत, मौजूदा संग्रह और चर पहले से ही सेट हैं। खाली संग्रहों के साथ शुरू करने के लिए, ClearCollect फ़ंक्शन के बजाय Collect फ़ंक्शन का उपयोग करें.

Run OnStart के लिए अनुप्रयोग-आइटम शॉर्टकट मेनू

नोट

  • OnStart प्रॉपर्टी में नेविगेट फ़ंक्शन का उपयोग करना सेवानिवृत्त है। मौजूदा ऐप्स अभी भी काम करते हैं। सीमित समय के लिए, आप इसे ऐप सेटिंग ( सेवानिवृत्त के तहत) में सक्षम कर सकते हैं। लेकिन इस तरह से नेविगेट का उपयोग करने से ऐप लोड में देरी हो सकती है क्योंकि यह सिस्टम को पहली स्क्रीन दिखाने से पहले ऑनस्टार्ट चलाने के लिए मजबूर करता है। प्रदर्शित पहली स्क्रीन सेट करने के लिए इसके बजाय StartScreen गुण का उपयोग करें।
  • रिटायर्ड स्विच मार्च 2021 से पहले बनाए गए ऐप्लिकेशन के लिए बंद है, जहां आपने मार्च 2021 और अब के बीच नेविगेट कोOnStart में जोड़ा था. जब आप Power Apps Studio में इन ऐप्स को संपादित करते हैं, तो आपको एक त्रुटि दिखाई दे सकती है. इस त्रुटि को दूर करने के लिए सेवानिवृत्त स्विच को चालू करें।

StartScreen गुण

StartScreen गुण सेट करता है कि कौन सी स्क्रीन पहले दिखाई देती है। इसका मूल्यांकन एक बार किया जाता है जब ऐप लोड होता है और स्क्रीन ऑब्जेक्ट को दिखाने के लिए लौटाता है। डिफ़ॉल्ट रूप से, यह गुण खाली है, और स्टूडियो ट्री दृश्य में पहली स्क्रीन पहले दिखाई देती है।

StartScreen एक डेटा प्रवाह गुण है जिसमें व्यवहार फ़ंक्शन शामिल नहीं हो सकते हैं। सभी डेटा प्रवाह कार्य उपलब्ध हैं। इन कार्यों और संकेतों का उपयोग करके यह तय करें कि कौन सी स्क्रीन पहले दिखानी है:

नोट

वैश्विक चर और संग्रह, जिनमें OnStart में बनाए गए हैं, StartScreen में उपलब्ध नहीं हैं। नामित सूत्र उपलब्ध हैं और अक्सर पूरे ऐप में सूत्रों के पुनः उपयोग के लिए बेहतर विकल्प होते हैं।

यदि StartScreen कोई त्रुटि देता है, तो स्टूडियो ट्री दृश्य में पहली स्क्रीन ऐसी दिखाई देती है जैसे कि StartScreen सेट नहीं है। किसी भी त्रुटि को पकड़ने और त्रुटि स्क्रीन पर रीडायरेक्ट करने के लिए IfError फ़ंक्शन का उपयोग करें।

स्टूडियो में StartScreen परिवर्तित करने के बाद, ट्री दृश्य फलक में अनुप्रयोग ऑब्जेक्ट पर होवर करके, दीर्घवृत्त (...) का चयन करके, और उसके बाद 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 टेक्स्ट लौटाता है। इस पाठ का प्रारूप समय के साथ बदल सकता है, इसलिए इसे समग्र रूप से मानें और अलग-अलग भागों को न निकालें।