عوامل التشغيل والمعرفات في Power Apps

ينطبق على: تطبيقات اللوحة التطبيقات المستندة إلى النموذج

تعتمد بعض عوامل التشغيل هذه على لغة المؤلف. لمزيد من المعلومات حول دعم اللغة في تطبيقات اللوحة، راجع التطبيقات العمومية.

رمز نوع مثال الوصف
'...' معرف 'اسم الحساب' يتم تضمين المعرفات التي تحتوي على أحرف خاصة، بما في ذلك المسافات، في علامات اقتباس مفردة.
"..." السلسلة النصية "Hello, World" يتم تضمين السلاسل النصية في علامات اقتباس مزدوجة
$"..." استيفاء السلسلة $"عزيزنا {FirstName}," صيغ مضمنة داخل سلسلة نصية
. محدد خاصية Slider1.Value
اللون. أحمر
Acceleration.X
يستخرج خاصية من جدولأو عنصر تحكم أو إشارة أو تعداد. بالنسبة للتوافق مع الإصدارات السابقة، قد يتم أيضًا استخدام !.
.
[مستقل باللغة]
فاصل عشري 1.23 الفاصل بين الرقم الصحيح وكسور رقم. يعتمد الحرف على اللغة.
( ) أقواس Filter(T, A < 10)

(1 + 2) * 3
يفرض ترتيب الأسبقية، ويجمع التعبيرات الفرعية في تعبير أكبر
+ العوامل الحسابية 1 + 2 إضافة
-   2 - 1 الطرح والعلامة
*   2 * 3 الضرب
/   2 / 3 القسمة (راجع الوظيفة Mod)
^   2 ^ 3 العلامة الأسية، معادل لوظيفة Power
%   20% النسبة المئوية (ما يعادل "* 1/100")
= عوامل المقارنة السعر = 100 يساوي
>   السعر > 100 أكبر من
>=   السعر >= 100 أكبر من أو يساوي
<   السعر < 100 أقل من
<=   السعر <= 100 أقل من أو يساوي
<>   السعر <> 100 لا يساوي
& عامل تشغيل تسلسل السلسلة "hello" & " " & "world" جعل السلاسل المتعددة تظهر بشكل متواصل
&& or And العوامل المنطقية Price < 100 && Slider1.Value = 20
أو السعر < 100 And Slider1.Value = 20
عطف منطقي، معادل للوظيفة And
|| أو أو   السعر < 100 || Slider1.Value = 20 or Price < 100 أو Slider1.Value = 20 انفصال منطقي، معادل للوظيفة Or
! أو ليس   !(السعر < 100) أو ليس (السعر < 100) نفي منطقي، معادل للوظيفة Not
exactin عوامل تشغيل العضوية Gallery1.Selected exactin SavedItems الانتماء إلى مجموعة أو جدول
exactin   "Windows" exactin “لعرض النوافذ في نظام التشغيل Windows...” اختبار السلسلة الفرعية (حساس لحالة الأحرف)
في   Gallery1.Selected in SavedItems الانتماء إلى مجموعة أو جدول
في   "ال‏‎" في لوحة المفاتيح والشاشة..." اختبار السلسلة الفرعية (غير حساس لحالة الأحرف)
@ عامل تشغيل إزالة الغموض MyTable[@fieldname] إزالة غموض الحقل
@   [@MyVariable] إزالة غموض عمومي
,
[معتمد على اللغة]
فاصل القائمة If( X < 10، "منخفض"،"جيد" )
{ X: 12, Y: 32 }
[ 1, 2, 3 ]
يفصل:
  • وسائط في استدعاءات الوظائف
  • الحقول في سجل
  • السجلات في جدول
يعتمد هذا الحرف على اللغة.
;
[مستقل باللغة]
تسلسل الصيغ Collect(T, A); Navigate(S1, "") افصل استدعاءات للوظائف في خصائص السلوك. يعتمد عامل تشغيل التسلسل على اللغة.
باعتباره عامل التشغيل As AllCustomers كعميل يتجاوز ThisItem و ThisRecord في المعارض ووظائف نطاق السجل. As مفيد لتوفير اسم ومحدد أفضل، ولا سيما في السيناريوهات المتداخلة.
ذاتي عامل التشغيل ذاتي Self.Fill الوصول إلى خصائص عنصر التحكم الحالي
الأصل عامل التشغيل الأصل Parent.Fill الوصول إلى خصائص حاوية عناصر التحكم
ThisItem عامل تشغيل ThisItem ThisItem.FirstName الوصول إلى حقول Gallery أو عنصر تحكم form
ThisRecord عامل تشغيل ThisRecord ThisRecord.FirstName الوصول إلى السجل الكامل والحقول الفردية للسجل ضمن ForAll، و Sum، و With ووظائف نطاق السجل الأخرى. يمكن تجاوزه باستخدام عامل التشغيل As .

‏‫ملاحظة‬

يمكن أيضًا استخدام عامل التشغيل @ للتحقق من نوع كائن السجل في مقابل مصدر بيانات. على سبيل المثال، Collect(coll,Account@{'Account Number: 1111')

عوامل التشغيل في وexactin

استخدم عوامل التشغيل في و exactin للعثور علي سلسلة في مصدر البيانات، مثل مجموعة أو جدول تم استيراده. يحدد عامل التشغيل في المطابقات بغض النظر عن الحالة ويحدد عامل التشغيل exactin المطابقات فقط في حالة كتابة الأحرف الكبيرة بالطريقة نفسها. إليك مثال:

  1. قم بإنشاء مجموعة تسمى مخزون أو إنشائها، وقم بإظهارها في معرض، كما يوضح الإجراء الأول في إظهار الصور والنصوص في معرض

  2. قم بتعيين الخاصية Items في المعرض لهذه الصيغة:
    Filter(Inventory, "E" in ProductName)

    يعرض المعرض كافة المنتجات باستثناء Callisto لأن اسم ذلك المنتج هو النوع الوحيد الذي لا يحتوي على الحرف الذي حددته.

  3. قم بتغيير الخاصية Items في المعرض لهذه الصيغة:
    Filter(Inventory, "E" exactin ProductName)

    يظهر المعرض فقط أوروبا لأن اسمه يحتوي فقط على الحرف الذي حددته في الحالة التي قمت بتحديدها.

عوامل التشغيل ThisItem، وThisRecord، وAs

تطبق بعض عناصر التحكم والوظائف الصيغ على السجلات الفردية للجدول. للإشارة إلى السجل الفردي في صيغة ما، استخدم أحد الخيارات التالية:

عامل ينطبق على ‏‏الوصف
ThisItem عنصر تحكم المعرض
عنصر تحكم تحرير نموذج
عنصر تحكم عرض نموذج
الاسم الافتراضي للسجل الحالي في Gallery أو عنصر تحكم النموذج.
ThisRecord ForAll وFilter وWith وSum وغيرها من وظائف نطاق السجل الأخرى الاسم الافتراضي للسجل الحالي في ForAll ووظائف نطاق السجل الأخرى.
كـاسم عنصر تحكم المعرض
ForAll وFilter وWith وSum وغيرها من وظائف نطاق السجل.
تحديد اسم للسجل الحالي، واستبدال ThisItem أو ThisRecordالافتراضي. يمكنك استخدام As لجعل الصيغ أسهل في الفهم وحل الغموض عند التداخل.

عامل تشغيل ThisItem

على سبيل المثال، في عنصر تحكم Gallery التالي، يتم تعيين خاصية Items إلى مصددر بيانات الموظفين (مثل جدول الموظفين المضمن في نموذج Northwind Traders):

Employees

الموظفون المعروضون في معرض.

العنصر الأول في المعرض هو قالب يتم نسخه متماثلًا لكل موظف. في النموذج ، تستخدم صيغة الصورة ThisItem للإشارة إلى العنصر الحالي:

ThisItem.Picture

الصيغة الخاصة بصورة أحد الموظفين.

وبالمثل، تستخدم صيغة الاسم أيضًا ThisItem:

ThisItem.'First Name' & " " & ThisItem.'Last Name'

صيغة الاسم الأول والأخير للموظف.

عامل تشغيل ThisRecord

يُستخدم ThisRecord في الوظائف التي تحتوي علي نطاق سجل. علي سبيل المثال، يمكننا استخدام وظيفة Filter مع خاصية Items المعرض الخاصة بنا لعرض الأسماء الأولى فقط التي تكون مع M:

Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )

تصفية الموظفين استنادًا إلى الاسم، باستخدام ThisRecord.

ThisRecord اختياري ويتم تضمينه باستخدام الحقول مباشرة، علي سبيل المثال، في هذه الحالة، قد نكون قد كتبنا:

Filter( Employees, StartsWith( 'First Name', "M" ) )

على الرغم من أنه اختياري، فإن استخدام ThisRecord يمكن أن يسهل فهم الصيغ وقد يكون مطلوبًا في المواقف الغامضة حيث قد يكون اسم الحقل أيضًا اسم علاقة. ThisRecord اختياري بينما ThisItem مطلوب دائمًا.

استخدم ThisRecord للإشارة إلى السجل بأكمله مع Patch و Collect ووظائف نطاق السجل الأخرى. على سبيل المثال، تعيّن الصيغة التالية حالة جميع الموظفين غير النشطين إلى حالة نشطة:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees,
              Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )

عامل التشغيل As

استخدم عامل التشغيل As لتسمية سجل في معرض أو وظيفة نطاق السجل، لتجاوز القيمة الافتراضية ThisItem أو ThisRecord. يمكن أن تؤدي تسمية السجل إلى تسهيل فهم الصيغ وقد تكون مطلوبة في المواقف المتداخلة للوصول إلى السجلات في نطاقات أخرى.

على سبيل المثال، يمكنك تعديل خاصية Items في معرضنا لاستخدام As لتحديد أننا نعمل مع موظف:

Employees As Employee

معرض الموظفين، باستخدام عامل التشغيل As.

يتم ضبط الصيغ الخاصة بالصورة والاسم لاستخدام هذا الاسم للسجل الحالي:

Employee.Picture

صوره لأحد الموظفين باستخدام اسم الموظف المعين باستخدام عامل التشغيل As.

Employee.'First Name' & " " & Employee.'Last Name'

الاسم الأول والأخير للموظف باستخدام اسم الموظف المعين باستخدام عامل التشغيل As.

يمكن استخدام As أيضًا مع وظائف نطاق السجل لاستبدال الاسم الافتراضي ThisRecord. يمكننا تطبيق هذا على المثال السابق لتوضيح السجل الذي نعمل باستخدامه:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees As Employee,
              Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )

عند دمج صالات العرض ووظائف نطاق التسجيل ، يشير ThisItem و ThisRecord دائمًا إلى النطاق الداخلي الأكبر، مما يترك السجلات في النطاقات الخارجية غير متاحة. استخدم As لجعل كافة نطاقات السجل متاحة من خلال منح كل اسم فريد.

علي سبيل المثال، تنتج هذه الصيغة نموذج chessboard كسلسلة نصية بواسطة تداخل دالتي ForAll :

Concat(
    ForAll( Sequence(8) As Rank,
        Concat(
            ForAll( Sequence(8) As File,
                    If( Mod(Rank.Value + File.Value, 2) = 1, " X ", " . " )
            ),
            Value
        ) & Char(10)
    ),
    Value
)

يعرض تعيين خاصية Text عنصر التحكم Label لهذه الصيغة:

يظهر نص Chessboard في عنصر تحكم التسمية.

لنستكشف تفصيلًا ما يحدث هنا:

  • نبدأ بتكرار جدول غير مسمى من 8 سجلات مرقمة من وظيفة Sequence . هذه الحلقة مخصصة لكل صف من صفوف اللوحة، والتي يشار إليها عادةً باسم رتبة ولذا فإننا نطلق عليها هذا الاسم.
  • لكل صف، نكرر جدولًا آخر غير مسمى مكون من 8 أعمدة، ونعطي الاسم الشائع لـملف.
  • إذا كانت قيمة Rank.Value + File.Value رقم فردي، سيحصل المربع علي X ، وبخلاف النقطة. يشير هذا الجزء من الصيغة إلى كل من حلقات ForAll ، التي أصبحت ممكنة باستخدام عامل التشغيل As .
  • يتم استخدام Concat مرتين، أولاً لتجميع الأعمدة ثم الصفوف، باستخدام Char(10) لإنشاء سطر جديد.

يمكن استخدام مثال مشابه مع عناصر تحكم Gallery متداخلة بدلاً من وظائف ForAll . لنبدأ بالمعرض الرأسي لـ الرتبة. سيحتوي عنصر تحكم gallery هذا على صيغة Items من:

Sequence(8) as Rank

رسم توضيحي للمعرض الخارجي الذي يوفر تكرار الرتبة.

ضمن هذا المعرض، سنضع معرضًا أفقيًا للملف، والذي سيتم تكراره لكل رتبة، باستخدام خاصية Items .

Sequence(8) as File

رسم توضيحي للمعرض الداخلي الذي يوفر تكرار الملف.

وأخيرًا، في هذا المعرض، سنضيف عنصر تحكم Label الذي سيتم نسخه لكل ملف وكل رتبة. سنحدد حجمه لملء المساحة بالكامل واستخدام خاصية Fill لتزويد اللون بهذه الصيغة:

If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )

عنصر تحكم التسمية داخل معرضين يوفران الألوان البديلة لـ chessboard.

عوامل التشغيل الذاتية والأصل

توجد ثلاث طرق للإشارة إلى عنصر تحكم وخصائصه في إحدى الصيغ:

الطريقة ‏‏الوصف
باسم عنصر التحكم يمكن الإشارة إلى أي عنصر تحكم بواسطة اسم من أي مكان في التطبيق.

على سبيل المثال، يشير Label1.Fill إلى خاصية التعبئة لعنصر التحكم بالاسم Label1.
عامل تشغيل ذاتي‏‎ غالبًا ما تكون الإشارة إلى خاصية أخرى لنفس عنصر التحكم عند كتابة صيغة أمرًا مناسبًا. بدلاً من استخدام مرجع مطلق بواسطة الاسم، من الأسهل والأكثر قابلية للحمل استخدام مرجع نسبي لعامل تشغيل ذاتي واحد. يوفر عامل التشغيل ذاتي سهولة الوصول إلى عنصر التحكم الحالي.

على سبيل المثال، يشير Self.Fillإلى تعبئة لون عنصر التحكم الحالي.
عامل تشغيل أصلي تستضيف بعض عناصر التحكم عناصر تحكم أخرى، مثل عنصر تحكم Screen وعنصر تحكم Gallery. يطلق على عنصر تحكم hosting في عناصر التحكم الأخرى الأصل. كما هو الحال في عامل التشغيل ذاتي، يوفر عنصر تحكم الأصل مرجعًا سهلاً لعنصر تحكم الحاوية.

على سبيل المثال، يشير Parent.Fill إلى خاصية تعبئة عنصر التحكم الذي يمثل الحاوية لعنصر التحكم الحالي.

ذاتي وأضلي عبارة عن عاملي تشغيل وليس خصائص على عناصر التحكم بحد ذاتها. لا تحظى الإشارة إلى Parent.Parent أو Self.Parent أو Parent.Self بالدعم.

أسماء المعرفات

يمكن أن تحتوي أسماء المتغيرات ومصادر البيانات والأعمدة والكائنات الأخرى على أي Unicode.

استخدم عروض أسعار فردية حول اسم يحتوي على مسافة أو حرف خاص آخر.
استخدم عرضي أسعار معًا لتمثيل عرض أسعار واحد في الاسم. لا تتطلب الأسماء التي لا تحتوي على أحرف خاصة علامات اقتباس مفردة.

فيما يلي بعض الأمثلة لأسماء الأعمدة التي قد تواجهها في جدول، وكيفية تمثيلها في صيغة:

اسم العمود في قاعدة بيانات مرجع عمود في صيغة
SimpleName SimpleName
NameWith123Numbers NameWith123Numbers
اسم مع وضع مسافات 'Name with spaces'
الاسم بعرضي أسعار "مزدوجين" 'Name with "double" quotes'
الاسم بعروض أسعار "فردية" 'Name with ''single'' quotes'
الاسم يحتوي على العلامة @ 'Name with an @ at sign'

يتم استخدام عروض الأسعار المزدوجة لتعيين سلاسل نصية.

عرض الأسماء والأسماء المنطقية

تحتوي بعض مصادر البيانات مثل SharePoint و Microsoft Dataverse على اسمين مختلفين للإشارة إلى جدول البيانات أو العمود نفسه.

  • الاسم المنطقي - لا يتغير الاسم الذي يضمن أنه فريد بعد إنشائه، وعادةً لا يسمح للمساحات أو الأحرف الخاصة الأخرى، ولا يتم ترجمته إلى لغات مختلفة. ونتيجة لذلك، يمكن أن يكون الاسم غامضًا. ويتم استخدام هذه الأسماء بواسطة مطورين محترفين. على سبيل المثال، cra3a_customfield. قد يُشار إلى هذا الاسم أيضًا كـ اسم مخطط أو مجرد اسم.

  • اسم العرض - اسم سهل الاستخدام ويقصد به أن يراه المستخدمون النهائيون. قد لا يكون هذا الاسم فريدًا وقد يتغير مع مرور الوقت وقد يحتوي على مسافات وأي حرف Unicode ويمكن تعريبه إلى لغات مختلفة. وفقًا للمثال أعلاه، قد يكون اسم العرض حقل مخصص مع وجود مسافة بين الكلمات.

نظرًا لسهولة فهم أسماء العرض، فإن تطبيقات اللوحة ستقترحها كاختيارات ولا تقترح الأسماء المنطقية. وبالرغم من عدم اقتراح الأسماء المنطقية، إلا أنه لا يزال يمكن استخدامها إذا تمت كتابتها بشكل غير مباشر.

على سبيل المثال، تخيل أنك أضفت حقل مخصص إلى جدول في Dataverse. سيتم تعيين اسم منطقي لك من قبل النظام، والذي يمكنك تعديله فقط عند إنشاء الحقل. قد تكون النتيجة مشابهة لما يلي:

جدول حسابات مع حقل مخصص مضاف، يظهر اسم العرض

عند كتابة مرجع إلى حقل الحسابات، فإنه سيتم الاقتراح لاستخدام حقل مخصص لأن هذا هو اسم العرض. يجب علامات اقتباس مفردة لأن هذا الاسم يحتوي على مسافة فيه:

شريط صيغة استوديو يوضح اقتراحات لأسماء حقل الحسابات مع تمييز

وبعد تحديد الاقتراح، يتم عرض "حقل مخصص" في شريط الصيغة ويتم استرداد البيانات:

شريط صيغة استوديو يوضح استخدام اسم العرض

على الرغم من عدم اقتراحه، إلا أنه يمكننا أيضًا استخدام الاسم المنطقي لهذا الحقل. سيؤدي هذا إلى استرداد البيانات نفسها. لا يلزم وجود علامات اقتباس مفردة حيث إن هذا الاسم لا يحتوي على المسافات أو الأحرف الخاصة:

شريط صيغة استوديو يوضح استخدام الاسم المنطقي

خلف المشاهد، يتم الاحتفاظ بالتعيين بين أسماء العرض التي تظهر في الصيغ والأسماء المنطقية الأساسية. ونظرًا لأنه يجب استخدام الأسماء المنطقية للتفاعل مع المصدر البيانات، فإنه يتم استخدام هذا التعيين للتحويل من اسم العرض الحالي إلى الاسم المنطقي تلقائيًا وهذا ما تتم رؤيتهفي حركة مرور الشبكة. يستخدم هذا التعيين أيضًا للتحويل مرة أخرى إلى أسماء منطقية للتبديل إلى أسماء عرض جديدة، على سبيل المثال، إذا تغير اسم العرض أو قام صانع بلغة مختلفة بتحرير التطبيق.

‏‫ملاحظة‬

ولا تتم ترجمة الأسماء المنطقية عند نقل تطبيق بين البيئات. بالنسبة إلى جدول النظام وأسماء الحقول في Dataverse، يجب ألا تكون هذه مشكلة حيث إن الأسماء المنطقية متسقة بين البيئات. ولكن قد تحتوي أية حقول مخصصة، مثل cra3a_customfieldفي هذا المثال أعلاه، على بادئه مختلفة للبيئة (cra3a في هذه الحالة). يفضل أن تكون أسماء العرض متطابقة مع أسماء العرض الموجودة في البيئة الجديدة.

إزالة غموض الاسم

ونظرًا لأن أسماء العرض ليست فريدة، فقد يظهر اسم العرض أكثر من مرة في نفس الجدول. عند حدوث ذلك، ستتم إضافة الاسم المنطقي إلى نهاية اسم العرض في أقواس لواحد أو أكثر من الأسماء المتعارضة. بناءً على المثال أعلاه، إذا كان هناك حقل ثان بنفس اسم العرض الخاص بـ الحقل المخصص وباسم منطقي cra3a_customfieldalt، ستظهر الاقتراحات التالية:

شريط صيغة استوديو يوضح استخدام الاسم المنطقي cr5e3_customfieldalt لتوضيح إصداري

يتم إضافة سلاسل عدم تجويف الاسم في المواقف الأخرى التي تحدث بها تعارضات الاسم، مثل أسماء الجدول والاختيارات وعناصر Dataverse الأخرى.

عامل تشغيل إزالة الغموض

تقوم بعض الوظائف بإنشاء نطاقات سجل للوصول إلى حقول الجدول أثناء معالجة كل سجل، مثل Filter و AddColumns و Sum. تتجاوز أسماء الحقول المضافة مع نطاق السجل الأسماء نفسها من أي مكان آخر في التطبيق. وعند حدوث ذلك، لا يزال يمكنك الوصول إلى القيم من خارج نطاق السجل باستخدام عامل تشغيل إزالة الغموض @:

  • للوصول إلى القيم من نطاقات السجلات المتداخلة، استخدم عامل التشغيل @ مع اسم الجدول الذي يتم تشغيله عند استخدام هذا النمط:
    Table[@FieldName]
  • للوصول إلى القيم العمومية، مثل مصادر البيانات والمجموعات ومتغيرات السياق، استخدم النمط [@ObjectName] (دون تعيين جدول).

لمزيد من المعلومات والأمثلة، راجع نطاقات السجلات.