كائن تطبيق في Power Apps
ينطبق على: تطبيقات اللوحة التطبيقات المستندة إلى النموذج
يوفر معلومات حول التطبيق الذي يعمل حاليًا والتحكم في سلوك التطبيق.
الوصف
كما هو الحال مع عنصر التحكم، يوفر كائن التطبيق الخصائص التي تحدد الشاشة التي تظهر والتي تطالب المستخدم بحفظ التغييرات بحيث لا يتم فقدها. يحتوي كل تطبيق على كائن تطبيق.
يمكنك كتابة صيغ لبعض خصائص الكائن تطبيق. في أعلى الجزء عرض الشجرة، حدد كائن تطبيق كما هو الحال مع أي عنصر تحكم أو شاشة أخرى. قم بعرض إحدى خصائص الكائن وتحريرها عن طريق تحديدها في القائمة المنسدلة الموجودة على يسار شريط الصيغة.
خاصيه ActiveScreen
تحدد الخاصية ActiveScreen الشاشة التي تظهر.
تعمل هذه الخاصية على إرجاع كائن شاشة. استخدمه كمرجع لخصائص الشاشة المعروضة حاليا، مثل الاسم الذي له صيغة App.ActiveScreen.Name. يمكنك أيضا مقارنة هذه الخاصية بكائن شاشة آخر ، كما هو مع صيغة المقارنة App.Active Compare = Screen2 لاختبار إذا كانت Screen2 هي الشاشة المعروضة حاليا.
استخدم الوظيفة Back أو Navigate لتغيير الشاشة التي تظهر.
خاصية BackEnabled
تعمل الخاصية BackEnabled على تغيير كيفية استجابة التطبيق لإيماءة رجوع الجهاز (قم بالتمرير السريع أو استخدم زر رجوع الجهاز على Android الأجهزة، ثم قم بالتمرير من اليسار إلى iOS الأجهزة) عند التشغيل على Power Apps الجوال. عند التمكين، تنتقل إيماءة الرجوع للجهاز مرة أخرى إلى الشاشة التي تم عرضها مؤخرًا، والتي تشبه صيغة الرجوع . عند التعطيل، تقوم إيماءة الرجوع للجهاز بإرجاع المستخدم إلى قائمة التطبيقات.
خصائص ConfirmExit
لا يريد أي شخص فقدان التغييرات غير المحفوظة. استخدم الخصائص ConfirmExit و ConfirmExitMessage لتحذير المستخدم قبل إغلاق التطبيق الخاص بك.
ملاحظة
- لا يعمل ConfirmExit في التطبيقات المضمنة ، على سبيل المثال ، Power BI و SharePoint.
- في الوقت الحالي، يمكن أن تشير هذه الخصائص إلى عناصر التحكم على الشاشة الأولى فقط إذا تم تمكين ميزة المعاينة التحميل المؤجل (التي تكون بشكل افتراضي للتطبيقات الجديدة). إذا تم إجراء المراجع، لا يظهر Power Apps Studio خطأ، ولكن لا يتم فتح التطبيق المنشور الناتج في Power Apps Mobile أو مستعرض. إننا نعمل على رفع هذا القيد بنشاط. في غضون ذلك، يمكنك إيقاف تشغيل التحميل المتأخر في الإعدادات>الميزات القادة (ضمن الإصدار الأولي).
ConfirmExit
ConfirmExit هي خاصية منطقي تفتح مربع حوار تأكيد قبل إغلاق التطبيق عند تطابقها صحيحا. وبشكل افتراضي، تكون هذه الخاصية خاطئة، ولا يظهر مربع حوار.
في المواقف التي قد يكون لدى المستخدم فيها تغييرات غير االنسيج في التطبيق، استخدم هذه الخاصية لعرض مربع حوار التأكيد قبل الخروج من التطبيق. استخدم صيغة يمكنها التحقق من المتغيرات وخصائص عناصر التحكم (على سبيل المثال، الخاصية Unsaved لعنصر التحكم Edit form).
يظهر مربع حوار التأكيد في أي موقف حيث قد يتم فقدان البيانات، كما في هذه الأمثلة:
- تشغيل الوظيفة Exit.
- إذا كان التطبيق قيد التشغيل في مستعرض:
- إغلاق المستعرض أو علامة تبويب المستعرض الذي يعمل عليه التطبيق.
- تحديد زر للخلف الخاص بالمستعرض.
- تشغيل وظيفة Launch باستخدام LaunchTarget من ذاتي.
- إذا كان التطبيق يعمل في Power Apps Mobile (بنظام التشغيل iOS أو Android):
- قم بالتمرير للتبديل إلى تطبيق مختلف في Power Apps Mobile.
- تحديد الزر للخلف على جهاز يعمل بنظام Android.
- تشغيل وظيفة Launch لبدء تشغيل تطبيق لوحة آخر.
قد يختلف الشكل الدقيق لمربع حوار التأكيد عبر الأجهزة والإصدارات الخاصة بـ Power Apps.
لا يظهر مربع حوار التأكيد في Power Apps Studio.
ConfirmExitMessage
وبشكل افتراضي، يظهر مربع حوار التأكيد رسالة عامة، مثل "You may have unsaved changes" (قد يكون لديك تغييرات غير محفوظة). بلغة المستخدم
استخدم 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.
- حدد كائن التطبيقمن طريقه عرض الشجرة علي شريط التنقل الأيمن.
- أدخل مفتاح الأدوات في جزء الخصائص.
إذا لم يتم إرسال البيانات إلى App 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; في التطبيق نفسه غير مسموح به.
خاصية OnError
استخدم OnError لاتخاذ إجراء بعد اكتشاف أحد الأخطاء. وهو يوفر فرصة عمومية لتستخدم شعار خطأ قبل عرضه على المستخدم النهائي. كما يمكن استخدامها لتسجيل خطأ في الدالة Trace أو اكتب قاعدة بيانات أو خدمة ويب.
يتم التحقق من عدم وجود خطأ في نتيجة كل تقييم للصيغة. إذا كان هناك خطأ، فإنه سيتم تقييم OnError بمتغيرات النطاق FirstError و AllErrors نفسها التي كانت ستبقى موجودة إذا تم التعامل مع الصيغة بالكامل في الدالة IfError.
إذا كان OnErrorفارغًا، فإنه يتم عرض شعار الخطأ الافتراضي باستخدام الرسالة FirstError.Message الخاصة بالخطأ. يؤدي تعريف الصيغة OnError إلى تجاوز هذا السلوك مما يتيح للصانع معالجة إعداد تقارير الأخطاء حسب ما يلائمه. يمكن طلب السلوك الافتراضي في OnError عن طريق إعادة طرح الخطأ باستخدام الدالة Error. وهذا مفيد إذا كان سيتم تصفية بعض الأخطاء أو معالجتها بطريقة مختلفة، بينما يجب تمرير أخطاء أخرى.
لا يمكن ل OnError استبدال خطأ في العمليات الحسابية بالطريقة التي يمكن ل IfError القيام بها. عند نقطة استدعاء OnError، يكون الخطأ قد حدث بالفعل وتمت معالجته بالفعل من خلال عمليات حساب الصيغة. *يتحكم 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 )
. وقد ينتج عن ذلك عدم وجود خطأ أو شعار خطأ. لا يمكننا تغيير قيمة خطأ من OnError حيث أنه عند هذه النقطة حدث خطأ ما بالفعل، ما هو إلا سؤال حول كيفية الإبلاغ.
إذا قمنا بإضافة معالج OnError، لن يكون له تأثير قبل الخطوة 5، ولكن يمكن أن يؤثر ذلك على كيفية الإبلاغ عن الخطأ:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" )
مع أخذ هذا الأمر في الاعتبار، من منظور مستخدم التطبيق، لن يكون هناك أي خطأ. ولكن سيتم إضافة الخطأ لتتبع المراقب، والإكمال مع مصدر معلومات الخطأ من FirstError:
إذا كنا نريد شعار الخطأ الافتراضي نفسه أيضًا المعروض بالإضافة إلى التتبع، فإنه يمكننا إعادة طرح الخطأ باستخدام الدالة Error بعد استدعاء Trace تمامًا كما يحدث إذا لم تكن Trace موجودة:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )
خاصية OnStart
ملاحظة
يمكن أن يتسبب استخدام خاصية OnStart في حدوث مشكلات في الأداء عند تحميل أحد التطبيقات. نحن بصدد إنشاء بدائل للسببين الرئيسيين لاستخدام الخاصية، تخزين البيانات مؤقتًا وإعداد المتغيرات العامة. لقد أنشأنا بالفعل بديلاً لتعريف الشاشة الأولى التي سيتم عرضها باستخدام Navigate. اعتمادًا على السياق الخاص بك، قد يتم تعطيل هذه الخاصية بشكل افتراضي. إذا كنت لا ترى ذلك، وتحتاج إلى استخدامه، فتحقق من الإعدادات المتقدمة للتطبيق لمفتاح لتمكينه. يمكن أيضًا استخدام خاصية OnVisible للشاشة.
يتم تشغيل الخاصية OnStart عندما يقوم المستخدم ببدء تشغيل التطبيق. غالبًا ما تُستخدم هذه الخاصية لأداء المهام التالية:
- استرداد البيانات وتخزينها مؤقتا في المجموعات باستخدام الوظيفة Collect.
- قم بإعداد المتغيرات العمومية باستخدام الوظيفة Set.
يتم تقييم هذه الصيغة قبل ظهور الشاشة الأولى. لا يتم تحميل شاشة، يمكنك تعيين متغيرات السياق باستخدام الوظيفة UpdateContext. ومع ذلك، يمكنك تمرير متغيرات السياق بواسطة وظيفة Navigate.
بعد تغيير خاصية OnStart اختبرها عن طريق تمرير مؤشر الماوس فوق كائن التطبيق في جزء طريقة عرض الشجرة، وتحديد علامة القطع (...)، ثم تحديد تشغيل OnStart. بخلاف الوقت الذي يتم فيه تحميل التطبيق للمرة الأولى، فإنه سيتم تعيين المجموعات والمتغيرات الموجودة بالفعل. للبدء باستخدام مجموعات فارغة، استخدم الوظيفة ClearCollect بدلاً من الوظيفة Collect.
ملاحظة
- تم استبعاد استخدام وظيفة Navigate في خاصية OnStart. ستستمر التطبيقات الحالية في العمل. لفترة محدودة، لا يزال بإمكانك تمكينها في إعدادات التطبيق (متاحة ضمن مستبعدة). ومع ذلك، فإن استخدام التنقل بهذه الطريقة يمكن أن يؤدي إلى تأخير تحميل التطبيق لأنه يجبر النظام على إكمال تقييم OnStart قبل عرض الشاشة الأولى. استخدم خاصية StartScreen بدلاً من ذلك لحساب الشاشة الأولى المعروضة.
- سيتم إيقاف تشغيل مفتاح إيقاف التشغيل للتطبيقات التي تم إنشاؤها قبل مارس 2021 حيث أضفت الانتقال إلى OnStart بين مارس 2021 والآن. عندما تحرر هذه التطبيقات في Power Apps Studio، قد ترى خطأ. قم بتشغيل التبديل المستبعد المذكور أعلاه لمسح هذا الخطأ.
خاصية StartScreen
ملاحظة
لن تظهر خاصية StartScreen في قائمة الخصائص عند تشغيل الخيار المتقاعد شريط الصيغة المحسن. لإيقاف تشغيل شريط الصيغة المحسن، انتقل إلى الإعدادات>الميزات القادمة>مهملة> أوقل تشغيل مفتاح شريط الصيغة المحسن عندما تريد استخدام الخاصية StartScreen.
تحدد خاصية StartScreen الشاشة التي سيتم عرضها أولاً. يتم تقييمها مرة واحدة عند تحميل التطبيق وإرجاع كائن الشاشة ليتم عرضه. بشكل افتراضي، ستكون هذه الخاصية فارغة، وتظهر الشاشة الأولى في طريقة عرض شجرة الاستوديو أولاً.
StartScreen هي خاصية تدفق بيانات لا يمكن أن تحتوي على دالات سلوك. تتوفر جميع وظائف تدفق البيانات، ولاسيما استخدام هذه الوظائف والإشارات لتحديد الشاشة التي يجب عرضها أولاً:
- وظيفة Param لقراءة المعلمات المستخدمة لبدء التطبيق.
- وظيفة المستخدم لقراءة معلومات حول المستخدم الحالي.
- البحث والتصفية و CountRows و Max والوظائف الأخرى التي تقرأ من مصدر البيانات.
- أي استدعاءات API من خلال موصل، ولكن كن حذرًا من أنه يعود بسرعة.
- إشارت مثل الاتصال، والبوصلة، والتطبيق.
ملاحظة
المتغيرات والمجموعات العالمية، بما في ذلك تلك التي تم إنشاؤها في OnStart غير متوفرة في StartScreen. هناك بدائل تصريحية للقيام بذلك في الطريق. لتعليقاتك على هذا التقييد، انتقل إلى منتدى مجتمع Power Apps.
إذا أرجعت 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
. إذا فشلت واجهة برمجة التطبيقات لأي سبب من الأسباب، فسيتم استخدام ErrorScreen
بدلاً من ذلك.
خاصية StudioVersion
استخدم خاصية StudioVersion لعرض أو تسجيل Power Apps Studio إصدار ذلك الإصدار الذي تم استخدامه لنشر تطبيق. ويمكن أن يكون ذلك مفيدا عند تصحيح الأخطاء ولضمان إعادة نشر تطبيقك باستخدام أحدث إصدار Power Apps Studio.
يتم إرجاع StudioVersion كنص. وقد يتغير تنسيق النص بمرور الوقت وينبغي التعامل به ككل؛ تجنب استخراج أجزاء فردية.