Jagamisviis:


With funktsioon

Kehtib järgmise kohta: Lõuendirakendused Copilot Studio töölauavood Mudelipõhised rakendused Power Platform CLI Dataverse funktsioonid Power Pages

Arvutab väärtusi ja sooritab toiminguid ühe kirje jaoks, sh nimega väärtuste tekstisiseseid kirjeid.

Kirjeldus

Funktsioon With hindab ühe kirje valemit. Valem saab arvutada väärtuse ja/või teha toiminguid (nt andmete muutmine või ühendusega töötamine). Kasutage funktsiooni ForAll, et hinnata kõigi kirjete tabeli kirjete valemit.

Praegu töödeldavad kirje väljad on valemis saadaval. Kasutage tehtemärki ThisRecord või lihtsalt viidake väljadele nime järgi, nagu iga muu väärtuse korral. Tehtemärki As saab kasutada ka töödeldava kirje nimetamiseks, mis aitab teil valemit paremini mõista ja muuta pesastatud kirjed juurdepääsetavaks. Lisateabe saamiseks vaadake alltoodud näiteid ja jaotist kirje ulatusega töötamine.

Sobib With keerukate valemite loetavuse parandamiseks, jagades need väiksemateks alamvalemiteks. Need nimega väärtused toimivad nagu lihtsad kohalikud muutujad, mis piirduvad i ulatusega With. Sama tekstisisese kirje süntaksit, mida kasutatakse funktsiooniga UpdateContext, saab kasutada funktsiooniga With. Konteksti With või globaalsete muutujate eelistamiseks on see iseseisev, kergesti mõistetav ja seda saab kasutada mis tahes deklaratiivse valemi kontekstis.

Sobib With selliste kirjeväljade juurde pääsemiseks, mille tagastavad funktsioonid (nt Paikamine või Vaste). With sisaldab nende funktsioonide väärtust piisavalt kaua, et seda saaks kasutada edasistes arvutustes või toimingutes.

Kui argument Record to (Kirje) With on viga, tagastab funktsioon selle vea ja valemit ei väärtustata.

Süntaks

With( Kirje, valem )

  • Kirje – nõutav. Kirje, mille järgi tuleb tegutseda. Nimede väärtuste korral kasutage tekstisisest süntaksit { name1: value1, name2: value2, ... }
  • Valem – nõutav. Kirje hindamiseks kasutatav valem. Valem võib viidata Kirje mis tahes väljadele otse kirje ulatuse.

Näited

Lihtsad nimega väärtused

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

Selles näites kasutatakse silindri mahu arvutamiseks nimega väärtuste kirjet. With kasutatakse kõigi sisendväärtuste koos jäädvustamiseks, et neid oleks lihtne arvutusest endast eraldada.

Pesastatud With

Funktsiooni kasutav With intressikalkulaator.

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

Selles näites pesastas With funktsioonid, et luua igakuiste hüpoteegimaksete jaoks kaheastmeline arvutus. Kui konflikte pole, on kõik välised With väärtused saadaval sisemises With.

Kuna liugureid saab liigutada ainult ühe sammuga, on liugurid jaotatud või korrutatud, et luua efektiivselt kohandatud juurdekasvu. Intressimäära puhul on RateSlider oma väärtuse Max atribuut, mille väärtuseks on 48 jagatud 8 1/8 protsendipunkti võrra ja jagatuna 100-ga teisendamiseks protsendist kümnendkohani, mis katab vahemikus 0,125% kuni 6%. Laenusumma puhul on AmountSlider oma väärtuse Max atribuut, mis on seatud väärtusele 60 ja korrutatakse 10 000, mis katab vahemiku 10 000–600 000.

See With arvutatakse automaatselt ümber, kui liugurid liiguvad ja kuvatakse uus laenumakse. Muutujaid ei kasutata ja liuguri juhtelementide atribuuti OnChange pole vaja kasutada.

Siin on üksikasjalik juhend selle rakenduse loomiseks.

  1. Looge uus rakendus.
  2. Lisage juhtelement Liugur ja andke sellele nimi RateSlider. Seadke selle atribuudi Max väärtuseks 48.
  3. Lisage juhtelement Silt liuguri juhtelemendist vasakule. Seadke selle atribuudi Tekst väärtuseks Intressimäär:.
  4. Lisage juhtelement Silt liuguri juhtelemendist paremale. Määrake selle atribuudi Tekst väärtuseks valem RateSlider/8 & " %".
  5. Lisage veel üks juhtelement Liugur ja andke sellele nimi AmountSlider. Seadke selle atribuudi Max väärtuseks 60.
  6. Lisage juhtelement Silt selle liuguri juhtelemendist vasakule. Seadke selle atribuudi Tekst väärtuseks Laenu summa:.
  7. Lisage juhtelement Silt selle liuguri juhtelemendist paremale. Seadke selle atribuudi Tekst väärtuseks valem AmountSlider/8 * 10000.
  8. Lisage veel üks juhtelement Liugur ja andke sellele nimi YearsSlider. Seadke selle atribuudi Max väärtuseks 40.
  9. Lisage juhtelement Silt selle liuguri juhtelemendist vasakule. Seadke selle atribuudi Tekst väärtuseks „Aastate arv:”.
  10. Lisage juhtelement Silt selle liuguri juhtelemendist paremale. Seadke selle atribuudi Tekst väärtuseks valem YearsSlider.
  11. Lisage juhtelement Silt ja määrake selle atribuudi Tekst väärtus eespool toodud valemile.
  12. Lisage juhtelement Silt viimase sildi juhtelemendist vasakule. Seadke selle atribuudi Tekst väärtuseks „Korduv kuumakse:”.

Plaastri tagastatud primaarvõti

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

Selles näites lisatakse kirje SQL-serveri tabelisse Tellimus. Seejärel kasutab see tellimuse tagastatud primaarvõtit, mis tagastatakse funktsiooni Patch väljal OrderID, et luua seostuvad kirjed tabelis OrderDetails.

Ekstraktitud väärtused tavalise avaldisega

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)

See näide ekstraktib tunnid, minutid ja sekundid ISO 8601 kestuse väärtusest ja kasutab seejärel neid allvasteid kuupäeva/kellaaja väärtuse loomiseks.

Pange tähele, et kuigi allvasted sisaldavad numbreid, mis on ikka veel tekstistringi all. Kasutage funktsiooni Value, et teisendada number enne matemaatiliste toimingute tegemist.

Komponendi kirje vastendamine

Vaadake Vastendamise kirje.