שתף באמצעות


הפונקציה With

חל על: יישומי בד ציור זרימות שולחן עבודה יישומים מונחי-דגמים Power Pages Power Platform CLI

חישוב ערכים וביצוע פעולות עבור רשומה בודדת, כולל רשומות מוטבעות של ערכים בעלי שם.

תיאור

הפונקציה With מעריכה נוסחה עבור רשומה בודדת. הנוסחה יכולה לחשב ערך ו/או לבצע פעולות, כגון שינוי נתונים או עבודה עם חיבור. השתמש בפונקציה ForAll כדי להעריך נוסחה עבור כל הרשומות בטבלת רשומות.

שדות הרשומה המעובדים כעת זמינים בתוך הנוסחה. השתמש באופרטור ThisRecord או פשוט צור הפניה לשדות בשמם, כפי שאתה עושה לגבי כל ערך אחר. ניתן גם להשתמש באופרטור As כדי לבחור שם עבור הרשומה שמעובדת. באופן זה, הנוסחה קלה יותר להבנה, וניתן להפוך רשומות מקוננות לנגישות. לקבלת מידע נוסף, עיין בדוגמאות להלן ובעבודה עם טווח רשומה.

השתמש ב- With כדי לשפר את הקריאות של נוסחאות מורכבות על-ידי חלוקתן לנוסחאות משנה קטנות יותר בעלות שם. ערכים בעלי שם אלה פועלים כמשתנים מקומיים פשוטים המוגבלים לטווח של With. אותו תחביר רשומות מוטבע שנמצא בשימוש עם הפונקציה UpdateContext יכול להיות בשימוש גם בפונקציה With. השימוש בפונקציה With עדיף על משתני הקשר או משתנים גלובליים מאחר שהיא עומדת ברשות עצמה וקלה להבנה, וניתן להשתמש בה בכל הקשר נוסחה הצהרתית.

השתמש באפשרות With כדי לגשת לשדות הרשומה המוחזרים על-ידי פונקציות כגון Patch או Match. הפונקציה With מחזיקה את הערך מפונקציות אלה מספיק זמן כדי להשתמש בו בחישובים או פעולות נוספים.

אם הארגומנט Record של With הוא שגיאה, שגיאה זו תוחזר על-ידי הפונקציה, והנוסחה לא תוערך.

תחביר

With( Record, Formula )‎

  • Record – נדרש. הרשומה שיש לפעול לגביה. עבור ערכי שמות, השתמש בתחביר המוטבע { name1: value1, name2: value2, ... }
  • Formula – נדרש. הנוסחה שיש להעריך אותה עבור Record. הנוסחה יכולה להפנות לכל אחד מהשדות של Record כטווח רשומה.

דוגמאות

ערכים פשוטים בעלי שם

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

דוגמה זו משתמשת ברשומה של ערכים בעלי שם כדי לחשב את הנפח של גליל. With משמשת ללכידת כל ערכי הקלט יחד, דבר שמקל עליך להפריד אותם מהחישוב עצמו.

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, המחוונים מחולקים או מוכפלים כדי ליצור ביעילות מרווח מותאם אישית. במקרה של שיעור הריבית, המאפיין Max‎ של RateSlider מוגדר כ- 48, מחולק ב- 8 למרווח נקודות באחוזים של 1/8 ומחולק ב- 100 כדי לבצע המרה מאחוזים למספר עשרוני, לכיסוי הטווח 0.125% עד 6%. במקרה של סכום ההלוואה, המאפיין Max‎ של AmountSlider מוגדר כ- 60 ומוכפל ב- 10,000, לכיסוי הטווח 10,000 עד 600,000.

הפונקציה 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‎ שלו ל"תשלום חודשי חוזר:".

מפתח ראשי שמוחזר מ- Patch

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
              )
      )
)

דוגמה זו מוסיפה רשומה לטבלה Order ב- 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 כדי להמיר למספר לפני ביצוע פעולות מתמטיות.

מיפוי רשומה ברכיב

ראה מיפוי רשומה.