الدالة With

ينطبق على: تطبيقات قماش تدفقات سطح المكتب التطبيقات التي يحركها النموذج Power Platform CLI

حساب القيم وتنفيذ إجراءات لـ سجل، بما في ذلك السجلات الموضعية لقيم مسماة.

‏‏الوصف

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

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

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

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

إذا كانت وسيطة السجل لوظيفة With هي خطأ ، سيتم إرجاع هذا الخطأ بواسطة الوظيفة وسيتم تقييم الصيغة.

بناء الجملة

With( السجل، الصيغة )

  • السجل – مطلوب. السجل الذي سيتم التصرف فيه. بالنسبة لقيم الأسماء، استخدم بناء الجملة المضمن { name1: value1, name2: value2, ... }
  • الصيغة‏‎ - مطلوبة. الصيغة المراد تقييمها للسجل. يمكن للصيغة أن تشير إلى أي حقل من حقول السجل مباشرةً كنطاق سجل.

الأمثلة

قيم مسماة بسيطة

With( { radius: 10,
        height: 15 },
    Pi() * (radius*radius) * height
)
// Result: 4712.38898038 (as shown in a label control)

يستخدم هذا المثال سجل القيم المسماة لحساب حجم الأسطوانة. يتم استخدام وظيفة With لالتقاط جميع قيم الإدخال معًا ، مما يسهل فصلها عن الحساب نفسه.

تتداخل مع

حاسبة الفائدة باستخدام وظيفة With.

With( { AnnualRate: RateSlider/8/100,        // slider moves in 1/8th increments and convert to decimal
        Amount: AmountSlider*10000,          // slider moves by 10,000 increment
        Years: YearsSlider,                  // slider moves in single year increments, no adjustment required
        AnnualPayments: 12 },                // number of payments per year
      With( { r: AnnualRate/AnnualPayments,  // interest rate
              P: Amount,                     // loan amount
              n: Years*AnnualPayments },     // number of payments
            r*P / (1 - (1+r)^-n)             // standard interest calculation
      )
)

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

نظرًا لأن عناصر تحكم شريط التمرير يمكن أن تتحرك فقط بزيادات قدرها 1 ، يتم تقسيم أشرطة التمرير أو ضربها لإنشاء زيادة مخصصة بشكل فعال. في حاله معدل الفائدة، قامت RateSlider بتعيين خاصية Max إلى 48، مقسوما علي 8 بالنسبة لزيادة النقطة المئوية ل 1/8 ومقسومه علي 100 التحويل من النسبة المئوية إلى العشرية ، والذي يغطي النطاق الذي 0.125% إلى 6%. في حالة مبلغ القرض، قام AmountSlider بتعيين خاصية Max إلى 60 وتم ضربه في 10000، مما يغطي النطاق من 10000 إلى 600000.

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

اليك الإرشادات التفصيلية لإنشاء هذا التطبيق:

  1. أنشئ تطبيقًا جديدًا.
  2. أضف عنصر تحكم Slider وقم بتسميته RateSlider. قم بتعيين خاصية Max إلى 48.
  3. أضف عنصر تحكم Label إلى يسار عنصر تحكم شريط التمرير. قم بتعيين خاصية Text إلى "معدل الفائدة:".
  4. أضف عنصر تحكم Label إلى يمين عنصر تحكم شريط التمرير. قم بتعيين خاصية Text إلى الصيغة RateSlider/8 & " %".
  5. أضف عنصر تحكم Slider وقم بتسميته باسم AmountSlider. قم بتعيين خاصية Max إلى 60.
  6. أضف عنصر تحكم Label إلى يسار عنصر تحكم شريط التمرير هذا. قم بتعيين خاصية Text إلى "مبلغ القرض:".
  7. أضف عنصر تحكم Label إلى يمين عنصر تحكم شريط التمرير هذا. قم بتعيين خاصية Text إلى الصيغة AmountSlider/8 * 10000.
  8. أضف عنصر تحكم Slider وقم بتسميته باسم YearsSlider. قم بتعيين خاصية Max إلى 40.
  9. أضف عنصر تحكم Label إلى يسار عنصر تحكم شريط التمرير هذا. قم بتعيين خاصية Text إلى "عدد السنوات:".
  10. أضف عنصر تحكم Label إلى يمين عنصر تحكم شريط التمرير هذا. قم بتعيين خاصية Text إلى الصيغة YearsSlider.
  11. أضف عنصر تحكم Label، وقم بتعيين خاصية Text الخاصة به إلى الصيغة المبينة أعلاه:
  12. أضف عنصر تحكم Label إلى يمين عنصر تحكم التسمية الأخير. قم بتعيين خاصية Text إلى "تكرار الدفعة الشهرية:".

المفتاح الأساسي الذي تم إرجاعه من التصحيح

With( Patch( Orders, Defaults( Orders ), { OrderStatus: "New" } ),
      ForAll( NewOrderDetails,
              Patch( OrderDetails, Defaults( OrderDetails ),
                     { Order: OrderID,          // from With's first argument, primary key of Patch result
                       Quantity: Quantity,      // from ForAll's NewOrderDetails table
                       ProductID: ProductID }   // from ForAll's NewOrderDetails table
              )
      )
)

يضيف هذا المثال سجلا إلى جدول الطلب في SQL Server. ثم يستخدم المفتاح الأساسي الذي تم إرجاعه للأمر، والذي تم إرجاعه بواسطة بوظيفة Patch في حقلOrderID لإنشاء السجلات ذات الصلة في جدول OrderDetails.

استخراج القيم بتعبير عادي

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
    Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)

يستخرج هذا المثال الساعات والدقائق والثواني من قيمة مدة ISO 8601 ثم يستخدم هذه التطابقات الفرعية لإنشاء قيمة التاريخ / الوقت.

لاحظ أنه على الرغم من أن المطابقات الفرعية تحتوي على أرقام إلا أنها لا تزال في سلسلة نصية. استخدم وظيفة Value للتحويل إلى رقم قبل إجراء العمليات الحسابية.

تعيين سجل في مكون

راجع تعيين سجل.