دالة ForAll

مكتمل

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

تقوم دالة ForAll بتقييم صيغة لجميع سجلات الجدول. يمكن للصيغة حساب قيمة و/ أو تنفيذ إجراءات، مثل تعديل البيانات أو العمل باستخدام اتصال.

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

على سبيل المثال، يمكنك استخدام ForAll(CustomerOrders, Office365.SendEmail(Email, "Thank you", " You are a great customer " & FirstName)) لإرسال بريد إلكتروني منفصل إلى جميع عناوين البريد الإلكتروني فِي جدول CustomerOrders. سيكون موضوع البريد الإلكتروني "شكراً لك" وسيكون النص الأساسي "أنت عميل رائع" متبوعاً بالقيمة المخزنة فِي حقل FirstName.

يختلف هذا المثال عن مثال Concat بطريقتين وظيفتين. أولاً، سيرسل هذا بريداً إلكترونياً واحداً لكل سجل فِي جدول CustomerOrders. لذلك، إذا كان هناك 50 سجلاً، فسيتم إرسال 50 رسالة بريد إلكتروني مختلفة. في مثال Concat، تم إرسال بريد إلكتروني واحد فقط مع جميع عناوين البريد الإلكتروني الخمسين الموجودين فِي خانة مرسل إلى: سطر. ثانياً، يشير هذا البريد الإلكتروني أيضاً إلى حقل FirstName من جدول CustomerOrders. عند استخدام وظيفة ForAll، تكون جميع الحقول الخاصة بكل سجل متاحة للاستخدام.

أشياء يجب معرفتها عند استخدام ForAll

مع ForAll، هناك قدر هائل من القوة، ولكن هناك أيضاً العديد من الأشياء التي يجب معرفتها عندما تبدأ فِي بناء صيغتك.

  • يمكن أن تتضمن الصيغة دالات تتخذ إجراءً، مثل تعديل سجلات مصدر البيانات باستخدام الدالتين Patch وCollect.

  • لا يمكنك تعديل الجدول الذي هو موضوع دالة ForAll. ويتضمن ذلك استخدام Patch أو Collect فِي الجدول.

  • يمكن أن تستدعي الصيغة طرقاً على الاتصالات.

  • يمكنك تنفيذ إجراءات متعددة لكل سجل باستخدام؛ المشغل أو العامل.

  • عند كتابة الصيغة، ضع فِي اعتبارك أنه يمكن معالجة السجلات بأي ترتيب ومتوازي، إن أمكن. يمكنك معالجة أول سجل فِي الجدول بعد آخر سجل. تأكد من تجنب طلب التبعيات. لهذا السبب، لا يمكنك استخدام دالات Setو UpdateContextو Clearو ClearCollect داخل دالة ForAll لأنه يمكن استخدامها بسهولة للاحتفاظ بالمتغيرات التي قد تكون عرضة لهذا التأثير. يمكنك استخدام Collect، لكن الترتيب الذي تتم إضافة السجلات به غير محدد.

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

تحتوي دالة ForAll على قواعد أكثر بكثير من معظم دالات Power Apps. أيضاً، نظراً لأنه لا يمكنك استخدام وظائف مثل Set وUpdateContext فِي بعض الأحيان، يجب أن تجد طريقة أخرى للتعامل مع الصيغة الخاصة بك. غالباً ما كان سبب رغبتك فِي استخدام Set مع ForAll هو تعقب عدد السجلات التي تم تعديلها أو للحصول على معلومات حول هذه السجلات. قد تجد أن استخدام Patch لتحديث مجموعة حيث تقوم بتتبع نفس البيانات يمنحك نفس النتيجة.

لمزيد من المعلومات حول الاستخدام والقواعد الخاصة بدالة ForAll، راجع دالة ForAll فِي Power Apps.