funktion With

Gäller för: Arbetsyteappar Copilot Studio Desktop-flöden Modelldrivna appar Power Platform CLI Dataverse-funktioner Power Pages

Beräknar värden och utför åtgärder för en enskild post, inklusive infogade poster med namngivna värden.

Beskrivning

With-funktionen utvärderar en formel för en enskild post. Formeln kan beräkna ett värde och/eller utföra åtgärder, som att t.ex. modifiera data eller arbeta med en anslutning. Använd funktionen ForAll för att utvärdera en formel för alla poster i en tabell med poster.

Fälten för den post som bearbetas för närvarande är tillgängliga i formeln. Använd ThisRecord-operatorn eller referera bara till fälten med namn på samma sätt som med andra värden. As-operatorn kan också användas för att namnge posten som bearbetas, vilket kan göra att formeln blir lättare att förstå och göra kapslade poster tillgängliga. Mer information finns i exemplen nedan och i arbeta med postomfattning.

Använd With för att förbättra läsbarheten för komplexa formler genom att dela upp den i mindre namngivna underformler. Dessa namngivna värden fungerar som enkla lokala variabler som är begränsade till omfånget för With. Samma infogade postsyntax som används med funktionen UpdateContext kan användas med With. Att använda With är att föredra framför kontext- eller globala variabler eftersom det är fristående, lätt att förstå och kan användas i valfri deklarativ formelkontext.

Använd With för att komma åt fälten i posten som returneras av funktioner som Patch eller Match. With innehåller värdet från dessa funktioner tillräckligt länge för att användas i ytterligare beräkningar eller åtgärder.

Om argumentet Record till With är ett fel returneras det felet av funktionen och formeln utvärderas inte.

Syntax

With( Post, Formel )

  • Spela in – obligatoriskt. Posten behöver åtgärdas. För namnvärden använder du infogad syntaxen { name1: value1, name2: value2, ... }
  • Formel – obligatoriskt. Formel som ska utvärderas för Post. Formeln kan referera till alla fält för post direkt som postomfång.

Exempel

Enkla namngivna värden

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

I det här exemplet används en post med namngivna värden för att beräkna volymen på en cylinder. With används för att samla in alla indatavärden, vilket gör det enkelt att skilja dem från själva beräkningen.

Kapslade With

Räntekalkylator med hjälp av With funktionen.

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

I det här exemplet kapslas With funktioner för att skapa en beräkning med två nivåer för månatliga inteckningsbetalningar. Så länge det inte finns någon konflikt är alla yttre namngivna With värden tillgängliga i den inre With.

Eftersom reglagen endast kan flyttas i steg om 1, delas eller multipliceras skjutreglaget för att skapa en anpassad ökning på ett effektivt sätt. När det gäller räntesatsen, har RateSlider egenskapen Max inställd på 48, delat med 8 för en 1/8 procentenhetsökning och delat med 100 för att konvertera från ett procenttal till ett decimaltal som täcker intervallet 0,125 % till 6 %. När det gäller lånebeloppet AmountSlider har egenskapen Max inställd på 60 och multiplicerats med 10 000 som omfattar intervallet 10 000 till 600 000.

With Beräknas automatiskt när skjutreglagen flyttas och den nya lånebetalningen visas. Inga variabler används och det finns inget behov av att använda OnChange-egenskapen för skjutreglagen.

Nedan följer detaljerade instruktioner om hur du skapar det här programmet:

  1. Skapa ett nytt program.
  2. Lägg till en Slider-kontroll och ge den namnet RateSlider. Ange dess egenskap Max till 48.
  3. Lägg till en Label-kontroll till vänster om skjutreglaget. Ange Text-egenskapen som "Ränta:".
  4. Lägg till en Label-kontroll till höger om skjutreglaget. Ange dess Text-egenskap till formeln RateSlider/8 & " %".
  5. Lägg till en annan Slider-kontroll och ge den namnet AmountSlider. Ange dess egenskap Max till 60.
  6. Lägg till en Label-kontroll till vänster om detta skjutreglage. Ange Text-egenskapen som "Lånebelopp:".
  7. Lägg till en Label-kontroll till höger om detta skjutreglage. Ange dess Text-egenskap till formeln AmountSlider/8 * 10000.
  8. Lägg till en annan Slider-kontroll och ge den namnet YearsSlider. Ange dess egenskap Max till 40.
  9. Lägg till en Label-kontroll till vänster om detta skjutreglage. Ange egenskapen Text till "Antal år:".
  10. Lägg till en Label-kontroll till höger om detta skjutreglage. Ange dess Text-egenskap till formeln YearsSlider.
  11. Lägg till kontrollen Label och ange egenskapen Text till formeln som visas ovan:
  12. Lägg till en Label-kontroll till vänster om den sista label-kontrollen. Ange Text-egenskapen till "Återkommande månadsbetalning:".

Primär nyckel returnerades från korrigeringsfil

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

I det här exemplet läggs en post till i Order-tabellen i SQL Server. Sedan används den returnerade primära nyckeln för ordern, returnerad av funktionen Patch i fältet OrderID för att skapa relaterade poster i tabellen OrderDetails.

Extraherade värden med ett reguljärt uttryck

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)

I det här exemplet extraheras timmarna, minuter och sekunder från ett varaktighetsvärde på ISO 8601 och sedan används dessa under matchningar för att skapa ett datum/tid-värde.

Observera att även om underordnade matchningar innehåller siffror finns de fortfarande i en textsträng. Använd funktionen Value för att konvertera till ett tal innan du utför matematiska åtgärder.

Mappa en post i en komponent

Se Mappa post.