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

‏‫ملاحظة

Microsoft Power Fx هو الاسم الجديد للغة الصيغة لتطبيقات اللوحة. هذه المقالات عبارة عن عمل قيد التقدم حيث نقوم باستخراج اللغة من تطبيقات اللوحة ودمجها مع منتجات Microsoft Power Platform الأخرى وجعلها متوفرة كمصدر مفتوح. ابدأ بـ نظرة عامة على Microsoft Power Fx لمقدمة عن اللغة.

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

رمز كتابة بناء الجملة الوصف
. محدد خاصية شريط التمرير 1.القيمة
Color.Red
استخراج خاصية من عنصر تحكم جدول أو تعداد. بالنسبة للتوافق مع الإصدارات السابقة، يمكن أيضًا استخدام !.
.
تعتمد على اللغة
فاصل عشري 1.23 الفاصل بين الرقم الصحيح وكسور رقم. يعتمد الحرف على اللغة.
( ) أقواس مرشح (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 لا يساوي
& عامل تشغيل تسلسل السلسلة "مرحبا" و " " & "العالم" جعل السلاسل المتعددة تظهر بشكل متواصل
&&أو و العوامل المنطقية السعر < 100 && المنزلق 1.القيمة = 20
أو السعر < 100 And Slider1.Value = 20
عطف منطقي، معادل للوظيفة And
|| أو أو   السعر < 100 || شريط التمرير 1.القيمة = 20 أو السعر < 100 أو المنزلق 1.القيمة = 20 انفصال منطقي، معادل للوظيفة Or
! أو ليس   ! (السعر < 100) أو لا (السعر < 100) نفي منطقي، معادل للوظيفة Not
إكساكتين مشغلي العضوية معرض1.مختارات محددة تم حفظهاالعناصر الانتماء إلى مجموعة أو جدول
إكساكتين   "Windows" بالضبط "لعرض النوافذ في نظام التشغيل Windows ..." اختبار السلسلة الفرعية (حساس لحالة الأحرف)
في   معرض1.محدد في العناصر المحفوظة الانتماء إلى مجموعة أو جدول
في   "ال" في "لوحة المفاتيح والشاشة ..." اختبار السلسلة الفرعية (غير حساس لحالة الأحرف)
@ عامل توضيح ماي تابل[@fieldname] إزالة غموض الحقل
@   [@MyVariable] إزالة غموض عمومي
,
[مستقل باللغة]
فاصل القائمة إذا(x < 10، "منخفض"، "جيد")
{ س: 12، ص: 32 }
[ 1, 2, 3 ]
يفصل:
  • وسائط في استدعاءات الوظائف
  • الحقول في سجل
  • السجلات في جدول
يعتمد هذا الحرف على اللغة.
;
[مستقل باللغة]
تسلسل الصيغ جمع (تي ، أ) ؛ التنقل (S1 ، "") افصل استدعاءات للوظائف في خصائص السلوك. يعتمد عامل تشغيل التسلسل على اللغة.
مثل كمشغل الكلالعملاء كعملاء يتجاوز ThisItem و ThisRecord في المعارض ووظائف نطاق السجل. كما هو مفيد لتوفير اسم أفضل ومحدد وهو مهم بشكل خاص في السيناريوهات المتداخلة.
ذات المشغل الذاتي ملء الذات الوصول إلى خصائص عنصر التحكم الحالي
أصل مشغل أصل الوالد.املأ الوصول إلى خصائص حاوية عناصر التحكم
هذاالبند عامل تشغيل ThisItem ThisItem.First Name الوصول إلى حقول معرض أو عنصر تحكم نموذج
هذا السجل عامل تشغيل ThisItem ThisRecord.الاسم الأول الوصول إلى السجل الكامل والحقول الفردية للسجل ضمن ForAll، و Sum، و With ووظائف نطاق السجل الأخرى. يمكن تجاوزه باستخدام عامل التشغيل As .

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

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

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

  2. قم بتعيين الخاصية Items في المعرض لهذه الصيغة:
    تصفية (المخزون ، "E" في اسم المنتج)

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

  3. قم بتغيير الخاصية Items في المعرض لهذه الصيغة:
    تصفية (المخزون ، "E" بالضبط اسم المنتج)

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

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

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

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

عامل تشغيل ThisItem

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

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.

كما يمكن استخدامها أيضا مع وظائف نطاق السجل لاستبدال الاسم الافتراضي 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 مرتين ، أولا لتجميع الأعمدة ثم الصفوف ، مع طرح حرف (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. ويطلق على عنصر التحكم المضيف لعناصر التحكم بداخله اسم الأصل. كما هو الحال في عامل التشغيل ذاتي، يوفر عنصر تحكم الأصل مرجعًا سهلاً لعنصر تحكم الحاوية.

على سبيل المثال، يشير 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 ويمكن تعريبه إلى لغات مختلفة. وفقًا للمثال أعلاه، قد يكون اسم العرض حقل مخصص مع وجود مسافة بين الكلمات.

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

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

كيان الحسابات مع إضافة حقل مخصص، مما يعرض اسم عرض

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

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

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

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

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

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

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

‏‫ملاحظة‬

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

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

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

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

تتم إضافة سلاسل إزالة غموض الاسم في حالات أخرى حيث تحدث تعارضات في الأسماء، مثل أسماء الكيانات ومجموعات الخيارات والعناصر الأخرى لـ Dataverse.

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

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

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

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