السيناريو - تكرار صف

مكتمل

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

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

في الفيديو التالي، سنتنقل خلال تنفيذ زر شريط الأوامر لتكرار صف.

ملاحظة

يمكنك زيادة دقة الفيديو عن طريق تحديد النقاط الثلاث والجودة واختيار معدل بت أعلى.

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

If(CountRows(Self.Selected.AllItems)>0,true,false)

لاحظ استخدام Self.Selected.AllItems بدلاً من Self.Selected.Item، والذي لن تستخدمه إلا عندما يكون هناك صف واحد نشطاً. Self.Selected.AllItems هو جدول السجلات التي تم تحديدها حالياً.

يختلف منطق Power Fx لنسخ الصفوف أيضاً لأنه يحتاج إلى استخدام الدالة ForAll لنسخ جميع الصفوف فِي الجدول.

ForAll(Self.Selected.AllItems,
  Patch(Projects,Defaults(Projects),
    {
      Name:Concatenate("Cloned ", ThisRecord.Name),
      Description:ThisRecord.Description,
      Budget:ThisRecord.Budget*1.10,
      'Start Date':DateAdd(Today(),1,Days),
      'End Date':DateAdd(Today(),30,Days)
    }
  )
)

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

Notify("Copied " & CountRows(Self.Selected.AllItems) & " rows")

تأكد من عدم إضافته داخل ForAll لتجنب ظهور رسالة لكل صف تم نسخه.

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

يؤدي استخدام شريط الأوامر للسماح للمستخدمين بنسخ الصفوف إلى تسهيل إجراء النسخ بكفاءة على المستخدمين. باستخدام منطق Power Fx، يمكنك تنفيذ المنطق لتحديد متى يُسمح لهم بعمل نسخة وما هي البيانات المراد نسخها.