إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: تطبيقات اللوحة
احصل على معلومات حول التطبيق قيد التشغيل حاليا وتحكم في سلوك التطبيق.
الوصف
مثل عنصر التحكم، يحتوي كائن التطبيق على خصائص تحدد الشاشة التي تظهر وتطالبك بحفظ التغييرات حتى لا يتم فقدانها. يحتوي كل تطبيق على كائن تطبيق.
كتابة صيغ لبعض خصائص كائن التطبيق . في أعلى الجزء عرض الشجرة، حدد كائن تطبيق كما هو الحال مع أي عنصر تحكم أو شاشة أخرى. لعرض إحدى خصائص العنصر أو تحريرها، حددها في القائمة المنسدلة إلى يسار شريط الصيغة.
خاصيه ActiveScreen
تحدد الخاصية ActiveScreen الشاشة المعروضة حاليا.
تعمل هذه الخاصية على إرجاع كائن شاشة. استخدمه للإشارة إلى خصائص الشاشة الحالية، مثل الاسم الذي يحتوي على الصيغة App.ActiveScreen.Name. يمكنك أيضا مقارنة هذه الخاصية بكائن شاشة آخر، مثل صيغة المقارنة App.ActiveScreen = Screen2 للتحقق مما إذا كانت Screen2 هي الشاشة الحالية.
استخدم الدالة Back أو Navigate لتبديل الشاشة المعروضة.
خاصية BackEnabled
تغير خاصية BackEnabled كيفية استجابة التطبيق لإيماءة عودة الجهاز (اسحب أو استخدم زر رجوع الأجهزة على أجهزة Android، أو اسحب من اليسار على أجهزة iOS) عند التشغيل في Power Apps للأجهزة المحمولة. عند التمكين، تعود إيماءة عودة الجهاز إلى الشاشة التي تم عرضها مؤخرا، وهي مشابهة لصيغة الخلف . عند التعطيل، تأخذ إيماءة عودة الجهاز المستخدم إلى قائمة التطبيقات.
خصائص ConfirmExit
لا يريد أي شخص فقدان التغييرات غير المحفوظة. استخدم الخاصيتين ConfirmExit و ConfirmExitMessage لتحذير المستخدم قبل إغلاق تطبيقك.
ملاحظة
- لا يعمل ConfirmExit في التطبيقات المضمنة في، على سبيل المثال، Power BI وSharePoint.
- ConfirmExit غير مدعوم في الصفحات المخصصة.
- الآن، يمكن لهذه الخصائص الرجوع إلى عناصر التحكم على الشاشة الأولى فقط إذا تم تمكين ميزة معاينة التحميل المتأخر (وهي افتراضيا للتطبيقات الجديدة). إذا قمت بالإشارة إلى شاشات أخرى، فلا يظهر Power Apps Studio خطأ، ولكن التطبيق المنشور لا يفتح في Power Apps Mobile أو مستعرض. نحن نعمل على رفع هذا القيد. في هذه الأثناء، قم بإيقاف تشغيل التحميل المتأخر في الإعدادات>الميزات القادمة (ضمن معاينة).
ConfirmExit
ConfirmExit هي خاصية منطقية، عندما تكون صحيحة، تفتح مربع حوار تأكيد قبل إغلاق التطبيق. وبشكل افتراضي، تكون هذه الخاصية خاطئة، ولا يظهر مربع حوار.
عندما يكون لدى المستخدم تغييرات غير محفوظة في التطبيق، استخدم هذه الخاصية لإظهار مربع حوار تأكيد قبل الخروج من التطبيق. استخدم صيغة تتحقق من المتغيرات وخصائص عنصر التحكم (على سبيل المثال، الخاصية غير محفوظة لعنصر تحكم النموذج تحرير ).
يظهر مربع حوار التأكيد في أي حالة يمكن فيها فقدان البيانات، مثل:
- تشغيل الدالة Exit .
- إذا كان التطبيق يعمل في مستعرض:
- أغلق المستعرض أو علامة تبويب المستعرض حيث يتم تشغيل التطبيق.
- حدد زر الخلف للمستعرض.
- قم بتشغيل وظيفة Launch باستخدام LaunchTarget of Self.
- إذا كان التطبيق يعمل في Power Apps Mobile (iOS أو Android):
- اسحب للتبديل إلى تطبيق آخر في Power Apps Mobile.
- حدد زر الخلف على جهاز Android.
- قم بتشغيل وظيفة Launch لتشغيل تطبيق لوحة آخر.
يمكن أن يختلف الشكل الدقيق لمربع حوار التأكيد عبر الأجهزة وإصدارات Power Apps.
لا يظهر مربع حوار التأكيد في Power Apps Studio.
ConfirmExitMessage
وبشكل افتراضي، يظهر مربع حوار التأكيد رسالة عامة، مثل "You may have unsaved changes" (قد يكون لديك تغييرات غير محفوظة). بلغة المستخدم
استخدم ConfirmExitMessage لتوفير رسالة مخصصة في مربع حوار التأكيد. إذا كانت هذه الخاصية فارغة، فإنه سيتم استخدام القيمة الافتراضية. يتم اقتطاع الرسائل المخصصة حسب الحاجة لاحتواءها ضمن مربع حوار التأكيد، لذا احتفظ بالرسالة إلى بضعة أسطر على الأكثر.
في المستعرض، يمكن أن يعرض مربع حوار التأكيد رسالة عامة من المستعرض.
ملاحظة
يحتوي كائن التطبيق على خاصيتين إضافيتين، OnMessage و BackEnabled، وهما تجريبيتان. تتم إزالة هذه الخصائص من كائن التطبيق في النهاية. لا تستخدم هذه الخصائص في بيئة الإنتاج الخاصة بك.
مثال
تعيين الخاصية ConfirmExit الخاصة بكائن التطبيق لهذا التعبير:
AccountForm.Unsaved Or ContactForm.Unsavedيظهر مربع الحوار ما إذا كان المستخدم يغير البيانات في أي من النموذجين ثم يحاول إغلاق التطبيق دون حفظ هذه التغييرات.على سبيل المثال، يقوم المستخدم بتغيير البيانات في أي من النموذجين ثم يحاول إغلاق التطبيق دون حفظ هذه التغييرات.
[!div clas1. تعيين الخاصية ConfirmExitMessage الخاصة بكائن التطبيق لهذه الصيغة:
If( AccountsForm.Unsaved, "Accounts form has unsaved changes.", "Contacts form has unsaved changes." )يظهر مربع الحوار ما إذا كان المستخدم يغير البيانات في نموذج الحساب ثم يحاول إغلاق التطبيق دون حفظ هذه التغييرات.
إعداد سلسلة الاتصال ل Application Insights
لتصدير سجلات التطبيقات التي أنشأها النظام إلى Application Insights، قم بإعداد سلسلة الاتصال لتطبيق اللوحة.
- افتح تطبيقك لتحريره في Power Apps Studio.
- حدد كائن التطبيقمن طريقه عرض الشجرة علي شريط التنقل الأيمن.
- أدخل سلسلة الاتصال في جزء الخصائص.
إذا لم يتم إرسال البيانات إلى Application Insights، فاتصل بمسؤول Power Platform وتحقق مما إذا كان App Insights معطلا على مستوى المستأجر.
خاصية الصيغ
استخدم الصيغ المسماة، في خاصية الصيغ، لتحديد صيغة يمكن إعادة استخدامها عبر التطبيق الخاص بك.
في 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
على الرغم من أن هذه الطريقة أفضل، إلا أنها تعتمد أيضًا على تشغيل OnStart قبل تحديد قيمة BGColor. قد يتم أيضًا التحكم في BGColor في بعض أركان التطبيق التي لا يعرفها المصمم، وهو تغيير قام به شخص آخر، وقد يكون من الصعب تعقب ذلك.
توفر الصيغ المسماة بديلاً. تمامًا كما نكتب خاصية التحكم = التعبير، يمكننا بدلاً من ذلك كتابة الاسم = التعبير ثم إعادة استخدام الاسم خلال تطبيقنا أو استبدال التعبير. يتم تعريفات هذه الصيغ في خاصية الصيغ:
App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
تتضمن مزايا استخدام الصيغ المسماة ما يلي:
- تتوفر قيمة الصيغة دائمًا. لا توجد تبعية توقيت، لا توجد خاصية OnStart يجب تشغيلها أولاً قبل تعيين القيمة، ولا يوجد وقت تكون فيه قيمة الصيغة غير صحيحة. يمكن أن تشير الصيغ المسماة إلى بعضها البعض بأي ترتيب، طالما أنها لا تنشئ مرجعًا دائريًا. ويمكن حسابها بالتوازي.
- تتوفر قيمة الصيغة محدثةً دائمًا. يمكن للصيغة إجراء عملية حسابية تعتمد على خصائص عنصر التحكم أو سجلات قاعدة البيانات، وعندما تتغير، يتم تحديث قيمة الصيغة تلقائيًا. لا تحتاج إلى تحديث القيمة يدويًا كما تفعل مع المتغير. وتتم إعادة حساب الصيغ فقط عند الحاجة.
- تعريف الصيغة غير قابل للتغيير. التعريف في الصيغ هو المصدر الوحيد للحقيقة ولا يمكن تغيير القيمة في مكان آخر في التطبيق. مع المتغيرات، من الممكن أن يقوم بعض التعليمات البرمجية بتغيير قيمة بشكل غير متوقع، ولكن هذا الموقف الصعب الذي يمكن تصحيحه غير ممكن مع الصيغ المسماة.
- يمكن تأجيل عملية حساب الصيغة. نظرًا لأنها قيمة غير قابلة للتغيير، يمكن دائمًا حسابها عند الحاجة، مما يعني أنه لا يلزم حسابها حتى يتم الاحتياج إليها. لا يلزم حساب قيم الصيغ التي لم يتم استخدامها حتى يتم عرض screen2 من التطبيق حتى تظهر screen2. يمكن أن يؤدي تأجيل هذا العمل إلى تحسين وقت تحميل التطبيق. الصيغ المسماة توضيحية وتوفر فرصًا للنظام لتحسين كيفية ووقت حسابها.
- الصيغ المسماة هي مفهوم Excel. يستخدم Power Fx مفاهيم Excel حيثما أمكن ذلك لأن كثيرًا من الناس يعرفون 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" )، أو تصفية أنواع أخرى باستخدام دالة واحدة محددة من قبل المستخدم.
فيما يلي بناء الجملة:
FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) : ReturnType = Formula;
- FunctionName – مطلوب. اسم الدالة المحددة من قِبل المستخدم.
- ParameterName(s) – اختياري. اسم معلمة الدالة.
- ParameterType(s) – اختياري. اسم النوع، سواء كان اسم نوع البيانات المدمج، أو اسم مصدر البيانات، أو النوع المحدد باستخدام الدالة Type.
- 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 إلى متغير Spent. نوع الإرجاع لهذه الدالة هو Void لأنه لا يرجع قيمة.
بناء جملة دالة سلوك محددة من قبل المستخدم هو:
FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) : ReturnType = { Formula1 [ ; الصيغة2 ... ] };
- FunctionName – مطلوب. اسم الدالة المحددة من قِبل المستخدم.
- ParameterName(s) – اختياري. اسم معلمة الدالة.
- ParameterType(s) – اختياري. اسم النوع، سواء كان اسم نوع البيانات المدمج، أو اسم مصدر البيانات، أو النوع المحدد باستخدام الدالة Type.
- ReturnType – مطلوب. نوع قيمة الإرجاع من الدالة. استخدم Void إذا لم ترجع الدالة قيمة.
- الصيغة(الصيغ) – مطلوبة. الصيغة التي تحسب قيمة الدالة بناءً على المعلمات.
كما هو الحال مع جميع معادلات Power Fx، لا ينتهي التنفيذ عند مواجهة خطأ. بعد استدعاء الدالة Error، تمنع الدالة If حدوث التغييرات على Savings وSpent. يمكن استخدام الدالة IfError أيضًا لمنع المزيد من التنفيذ بعد حدوث خطأ. على الرغم من أنها ترجع Void، إلا أنه لا يزال بإمكان الصيغة إرجاع خطأ إذا كانت هناك مشكلة.
الأنواع المحددة من قِبل المستخدم
مهم
- الأنواع المحددة من قبل المستخدم هي ميزة تجريبية.
- الميزات التجريبية ليست مخصصة للاستخدام في الإنتاج وقد لا تكون كاملة. تتوفر هذه الميزات قبل الإصدار الرسمي حتى تتمكن من الحصول على وصول مبكر وتقديم التعليقات. مزيد من المعلومات: فهم الميزات التجريبية والإصدار الأولي والميزات المستبعدة في تطبيقات اللوحة
- السلوك الذي تصفه هذه المقالة متاح فقط عندما يتم تشغيل ميزة الدالات المحددة بواسطة المستخدم التجريبية في الإعدادات > الميزات القادمة > تجريبية (يتم إيقاف تشغيلها بشكل افتراضي).
- إن ملاحظاتك قيّمة للغاية بالنسبة لنا. أعلمنا برأيك في منتدى مجتمع الميزات التجريبية في Power Apps.
يمكن استخدام الصيغ المسماة مع دالة Type لإنشاء أنواع محددة من قِبل المستخدم. استخدم := بدلاً من = لتحديد نوع محدد من قبل المستخدم، على سبيل المثال Book := Type( { Title: Text, Author: Text } ). راجع دالة Type للاطلاع على مزيد من المعلومات والأمثلة.
خاصية OnError
استخدم OnError لاتخاذ إجراء عند حدوث خطأ في أي مكان في التطبيق. وهو يوفر فرصة عمومية لتستخدم شعار خطأ قبل عرضه على المستخدم النهائي. كما يمكن استخدامها لتسجيل خطأ في الدالة Trace أو اكتب قاعدة بيانات أو خدمة ويب.
في تطبيقات اللوحة، يتم التحقق من نتيجة كل تقييم صيغة بحثًا عن خطأ. إذا كان هناك خطأ، فإنه يتم تقييم OnError بمتغيرات النطاق FirstError و AllErrors نفسها التي كانت ستبقى موجودة إذا تم التعامل مع الصيغة بالكامل في الدالة IfError.
إذا كان OnError فارغا، يظهر شعار الخطأ الافتراضي FirstError.Message للخطأ. يؤدي تعريف صيغة OnError إلى تجاوز هذا السلوك، بحيث يمكن للصانع معالجة الإبلاغ عن الأخطاء حسب الحاجة. يمكنك طلب السلوك الافتراضي في OnError عن طريق إعادة تجميع الخطأ باستخدام الدالة Error. استخدم نهج إعادة التحويل إذا كنت تريد التصفية أو معالجة بعض الأخطاء بشكل مختلف، ولكن اسمح للآخرين بالمرور.
يتعذر على OnError استبدال خطأ في العمليات الحسابية بالطريقة التي تستطيع الدالة IfError القيام بها. إذا تم استدعاء OnError فهذا يعني أن الخطأ قد حدث بالفعل وتمت معالجته بالفعل من خلال عمليات حساب الصيغة، مثل عناصر التحكم IfError؛ OnError في إعداد تقارير الأخطاء فقط.
يتم تقييم صيغ OnError بشكل متزامن ومن المحتمل أن يتداخل تقييمها مع معالجة الأخطاء الأخرى. على سبيل المثال، إذا قمت بتعيين متغير عمومي في أعلى OnError وقراءته لاحقا في نفس الصيغة، فمن المحتمل أن تكون القيمة قد تغيرت. استخدم الدالة With لإنشاء قيمة مسماة محلية للصيغة.
على الرغم من معالجة كل خطأ بشكل فردي بواسطة OnError، فقد لا يظهر شعار الخطأ الافتراضي لكل خطأ على حدة. لتجنب عرض عدد كبير جدًا من لافتات الأخطاء في نفس الوقت، لن يتم عرض نفس لافتة الخطأ مرة أخرى إذا تم عرضها مؤخرًا.
مثال
فكر في عنصر التحكم Label وعنصر التحكم Slider الموجودان معًا في الصيغة:
Label1.Text = 1/Slider1.Value
يتم تعيين شريط التمرير الافتراضي إلى 50. إذا انتقل شريط التمرير إلى 0، فلن تعرض Label1 قيمة ويتم عرض شعار الخطأ:
فلننظر إلى ما حدث بالتفصيل:
- قام المستخدم بنقل الشرائح إلى اليمين، ثم تم تغيير الخاصية Slide1.Value إلى 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 هذا، لا يرى مستخدم التطبيق أي خطأ. ولكن تتم إضافة الخطأ إلى تتبع Monitor، بما في ذلك مصدر معلومات الخطأ من FirstError:
إذا كنت تريد أيضا إظهار شعار الخطأ الافتراضي جنبا إلى جنب مع التتبع، فقم بإعادة إضافة الخطأ باستخدام دالة الخطأ بعد استدعاء التتبع ، كما لو لم يكن التتبع موجودا:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )
خاصية OnStart
ملاحظة
يمكن أن يؤدي استخدام الخاصية OnStart إلى حدوث مشاكل في الأداء عند تحميل تطبيق. نقوم بإنشاء بدائل لسببين أولين لاستخدام هذه الخاصية - التخزين المؤقت للبيانات وإعداد المتغيرات العمومية. هناك بالفعل بديل لتعريف الشاشة الأولى التي تظهر مع التنقل. اعتمادا على السياق الخاص بك، يمكن تعطيل هذه الخاصية بشكل افتراضي. إذا لم تره وتحتاج إلى استخدامه، فتحقق من الإعدادات المتقدمة للتطبيق للحصول على مفتاح لتمكينه. يمكنك أيضا استخدام الخاصية OnVisible لشاشة. بشكل افتراضي، عند تمكين قاعدة OnStart التي لا يتم حظرها، فإنها تتيح تشغيل الدالة OnStart في نفس الوقت مثل قواعد التطبيق الأخرى. لذلك، إذا تمت تهيئة المتغيرات المشار إليها في قواعد التطبيق الأخرى ضمن الدالة OnStart ، فقد لا تتم تهيئتها بالكامل بعد. أيضا، يمكن أن تعرض الشاشة وتصبح تفاعلية قبل انتهاء تشغيل الدالتين Screen.OnVisible أو App.OnStart ، خاصة إذا كانت تستغرق وقتا طويلا للانتهاء.
يتم تشغيل الخاصية OnStart عندما يقوم المستخدم ببدء تشغيل التطبيق. غالبا ما تستخدم هذه الخاصية في:
- استرداد البيانات وتخزينها مؤقتا في المجموعات باستخدام الدالة Collect .
- قم بإعداد المتغيرات العمومية باستخدام الوظيفة Set.
يتم تشغيل هذه الصيغة قبل ظهور الشاشة الأولى. لا يتم تحميل شاشة، يمكنك تعيين متغيرات السياق باستخدام الوظيفة UpdateContext. ولكن يمكنك تمرير متغيرات السياق باستخدام الدالة Navigate .
بعد تغيير الخاصية OnStart ، اختبرها عن طريق تمرير الماوس فوق كائن التطبيق في جزء عرض الشجرة ، وتحديد علامة الحذف (...)، ثم تحديد Run OnStart. على عكس وقت تحميل التطبيق لأول مرة، يتم بالفعل تعيين المجموعات والمتغيرات الموجودة. للبدء باستخدام مجموعات فارغة، استخدم الوظيفة ClearCollect بدلاً من الوظيفة Collect.
ملاحظة
- تم إيقاف استخدام الدالة Navigate في الخاصية OnStart . لا تزال التطبيقات الموجودة تعمل. لفترة محدودة، يمكنك تمكينه في إعدادات التطبيق (ضمن متوقف). ولكن يمكن أن يؤدي استخدام التنقل بهذه الطريقة إلى تأخير تحميل التطبيق لأنه يجبر النظام على الانتهاء من تشغيل OnStart قبل عرض الشاشة الأولى. استخدم خاصية StartScreen بدلا من ذلك لتعيين الشاشة الأولى المعروضة.
- تم إيقاف تشغيل مفتاح التبديل المتوقف للتطبيقات التي تم إنشاؤها قبل مارس 2021 حيث أضفت الانتقال إلى OnStart بين مارس 2021 والآن. عند تحرير هذه التطبيقات في Power Apps Studio، يمكنك رؤية خطأ. قم بتشغيل المفتاح المتقاعد لمسح هذا الخطأ.
خاصية StartScreen
تقوم خاصية StartScreen بتعيين الشاشة التي تظهر أولا. يتم تقييمه مرة واحدة عند تحميل التطبيق وإرجاع كائن الشاشة لإظهاره. بشكل افتراضي، هذه الخاصية فارغة، وتظهر الشاشة الأولى في طريقة عرض شجرة Studio أولا.
StartScreen هي خاصية تدفق بيانات لا يمكن أن تحتوي على وظائف سلوك. تتوفر جميع وظائف تدفق البيانات. استخدم هذه الدالات والإشارات لتحديد الشاشة التي سيتم عرضها أولا:
- وظيفة Param لقراءة المعلمات المستخدمة لبدء التطبيق.
- وظيفة User لقراءة معلومات عن المستخدم الحالي.
- LookUp، وFilter، وCountRows، وMax، والوظائف الأخرى التي تقرأ من مصدر البيانات.
- تستدعي واجهة برمجة التطبيقات من خلال موصل. تأكد من إرجاع المكالمة بسرعة.
- إشارت مثل الاتصال، والبوصلة، والتطبيق.
ملاحظة
لا تتوفر المتغيرات والمجموعات العمومية، بما في ذلك تلك التي تم إنشاؤها في OnStart، في شاشة البدء. تتوفر صيغ مسماة وغالبًا ما تكون بديلاً أفضل لإعادة استخدام الصيغة عبر التطبيق.
إذا أرجعت شاشة البدء خطأ، تظهر الشاشة الأولى في طريقة عرض شجرة Studio كما لو لم يتم تعيين شاشة البدء . استخدم الدالة IfError لالتقاط أي أخطاء وإعادة التوجيه إلى شاشة خطأ.
بعد تغيير StartScreen في Studio، اختبرها عن طريق تمرير الماوس فوق كائن التطبيق في جزء عرض الشجرة ، وتحديد علامة الحذف (...)، ثم تحديد Navigate to StartScreen. تتغير الشاشة كما لو أن التطبيق تم تحميله للتو.
الأمثلة
Screen9
Screen9 يظهر أولا عند بدء تشغيل التطبيق.
If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )
التحقق مما إذا تم تعيين "وضع المسؤول" ل Param واستخدامه لتحديد ما إذا كانت الشاشة الرئيسية أو شاشة المسؤول تظهر أولا.
If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )
التحقق من أن أحد الحضور عضو في فريق العمل وتوجيهه إلى الشاشة الصحيحة عند بدء التشغيل.
IfError( If( CustomConnector.APICall() = "Forest",
ForestScreen,
OceanScreen
),
ErrorScreen
)
يوجه التطبيق بناءً على استدعاء API لـ ForestScreen أو OceanScreen. إذا فشلت واجهة برمجة التطبيقات، يستخدم ErrorScreen التطبيق بدلا من ذلك.
خاصية StudioVersion
استخدم الخاصية StudioVersion لإظهار إصدار Power Apps Studio المستخدم لنشر تطبيق أو تسجيله. تساعد هذه الخاصية عند تصحيح الأخطاء والتحقق من إعادة نشر تطبيقك باستخدام إصدار حديث من Power Apps Studio.
يقوم StudioVersion بإرجاع النص. يمكن أن يتغير تنسيق هذا النص بمرور الوقت، لذا تعامل معه ككل ولا تستخرج أجزاء فردية.