Deli putem


With Funkciju

Odnosi se na: Canvas aplikacije Copilot Studio Desktop teku aplikacije zasnovane na modelima Power Platform CLI Dataverse funkcije Power Pages

Izračunava vrednosti i izvodi radnje za jedan zapis, uključujući umetnute zapise imenovanih vrednosti.

Opis

Funkcija With procenjuje formulu za jedan zapis. Formula može izračunati vrednost i/ili izvršiti radnje, poput menjanja podataka ili rada sa vezom. Koristite funkciju ForAll za izračunavanje formule za sve zapise u tabeli zapisa.

Polja zapisa koji se trenutno obrađuje su dostupna u formuli. Koristite operator ThisRecord ili jednostavno stavite referencu na polja po nazivu kao i bilo koju drugu vrednost. Možete i da koristite operator As za imenovanje zapisa koji se obrađuje što može da pomogne da vaša formula bude lakša za razumevanje i učini ugnežđene zapise dostupnima. Više informacija potražite u primerima u nastavku i članku o radu sa opsegom zapisa.

Koristite With ovu funkciju da biste poboljšali čitljivost složenih formula tako što ćete ih podeliti na manje imenovane pod formule. Ove imenovane vrednosti ponašaju se kao jednostavne lokalne promenljive ograničene na opseg With. Ista sintaksa umetnutog zapisa koja se koristi sa funkcijom UpdateContext može da se koristi sa With. Korišćenje With je poželjno u kontekstu ili globalnim promenljivama jer se sama nalazi, lako je razumeti i može se koristiti u bilo kom deklarativnom kontekstu formule.

Koristite With ga za pristup poljima zapisa koja vraćaju funkcije kao što su Zakrpa iliPodudaranje. With sadrži vrednost iz ovih funkcija dovoljno dugo da se koristi u daljim izračunavanjima ili radnjama.

Ako argument zapis za predstavlja With grešku, funkcija će vratiti tu grešku i formula neće biti proveren.

Sintaksa

With( Zapis, formula )

  • Zapis- Obavezno. Treba da se reaguje na zapis. Za vrednosti imena koristite umetnutu sintaksu { name1: value1, name2: value2, ... }
  • Formula - Obavezno. Formula za izračunavanje za Zapis. Formula može da se odnosi na bilo koje od polja Zapis direktno kao opseg zapisa.

Primeri

Jednostavne imenovane vrednosti

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

Ovaj primer koristi zapis imenovanih vrednosti za izračunavanje zapremine cilindara. With koristi se za hvatanje svih vrednosti unosa zajedno, što olakšava da ih razdvojite od samog izračunavanja.

Ugnežđene With

Kalkulator interesovanja pomoću funkcije 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
      )
)

Ovaj primer ugnežđiva With funkcije za kreiranje izračunavanja sa dva nivoa za mesečne rate hipoteke. Sve dok nema neusaglašenosti, sve spoljne imenovane With vrednosti su dostupne unutar unutrašnje With.

Pošto se kontrole klizača mogu kretati samo u inkrementima od 1, klizači se dele ili množe kako bi se efektivno kreirao prilagođeni priraštaj. U slučaju kamatne stope, RateSlider ima svoje svojstvo Max postavljeno na 48, podeljeno sa 8 za inkrement od 1/8 procenta poena i podeljeno sa 100 da bi se konvertovalo iz procenta u decimalu, pokrivajući raspon od 0,125% do 6%. U slučaju iznosa zajma, AmountSlider ima svoje svojstvo Max postavljeno na 60 i pomnoženo sa 10.000, pokrivajući raspon od 10.000 do 600.000.

Klizači With se automatski ponovo izračunavaju kako se pomeraju klizači i prikazuje se nova isplata kredita. Ne koriste se nikakve promenljive i nema potrebe za korišćenjem svojstva OnChange za svojstvo kontrola klizača.

Evo detaljnih uputstava za kreiranje ove aplikacije:

  1. Kreirajte novu aplikaciju.
  2. Dodajte Slider kontrolu i nazovite je RateSlider. Podesite svojstvo Max na 48.
  3. Dodajte kontrolu Oznaka levo od kontrole klizača. Podesite svojstvo Text na "Kamatna stopa:".
  4. Dodajte kontrolu Oznaka desno od kontrole klizača. Podesite svoju Tekst osobinu na formulu RateSlider / 8 & "%".
  5. Dodajte još jednu kontrolu Slider i nazovite je AmountSlider. Podesite svojstvo Max na 60.
  6. Dodajte kontrolu Oznaka levo od kontrole klizača. Podesite svojstvo Text na "Iznos zajma:".
  7. Dodajte kontrolu Oznaka desno od ove kontrole klizača. Podesite svojstvo Text prema formuli AmountSlider/8 * 10000.
  8. Dodajte još jednu kontrolu Slider i nazovite je YearsSlider. Podesite svojstvo Max na 40.
  9. Dodajte kontrolu Oznaka levo od kontrole klizača. Podesite svojstvo Text na "Broj godina:".
  10. Dodajte kontrolu Oznaka desno od ove kontrole klizača. Podesite svojstvo Text prema formuli YearsSlider.
  11. Dodajte kontrolu Oznaka i podesite njeno svojstvo Text na formulu prikazanu iznad.
  12. Dodajte kontrolu Oznaka levo od kontrole poslednje oznake. Podesite svojstvo Text na "Periodična mesečna isplata:".

Primarni ključ se vratio iz funkcije 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
              )
      )
)

Ovaj primer dodaje zapis u tabelu Porudžbina u SQL serveru. Zatim koristi vraćeni primarni ključ za porudžbinu, koji vraća funkcija Patch u polje ID porudžbine za kreiranje povezanih zapisa u tabeli Detalji porudžbine.

Izvučene vrednosti sa pravilnim izrazom

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)

Ovaj primer izvlači sate, minute i sekunde iz vrednosti trajanja ISO 8601, a zatim koristi ove podudarnosti da bi kreirao vrednost Datum i vreme.

Imajte na umu da iako podudarnosti sadrže brojeve, oni su i dalje u tekstualnoj niski. Koristite funkciju Value za konvertovanje u broj pre obavljanja matematičkih operacija.

Mapiranje zapisa u komponenti

Pogledajte zapis mapiranja.