Sa funkcijom
Odnosi se na: Aplikacije platna Tokovi na radnoj površini Aplikacije Power Pages Power Platform zasnovane na modelu CLI
Izračunava vrednosti i izvodi radnje za jedan zapis, uključujući umetnute zapise imenovanih vrednosti.
Opis
Funkcija With izračunava 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 da biste poboljšali čitljivost složenih formula deljenjem na manje imenovane podformule. Navedene vrednosti deluju poput jednostavnih lokalnih promenljivih koje su ograničene na opseg With. Ista sintaksa umetnutog zapisa koja se koristi sa funkcijom UpdateContext može se koristiti sa With. Korišćenje funkcije With je poželjno u odnosu na kontekstualne ili globalne promenljive, jer je samodovoljna, lako se razume i može se koristiti u bilo kojem kontekstu deklarativne formule.
Koristite Sa da biste pristupili poljima zapisa koja se vraćaju funkcijama kao što su Patch ili Match. Sa zadržava vrednost iz ovih funkcija dovoljno dugo da se koristi u daljim proračunima ili akcijama.
Ako je argument Zapis za With greška, funkcija će vratiti tu grešku i Formula neće biti izračunata.
Sintaksa
Sa ( 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. Sa se koristi za snimanje svih ulaznih vrednosti zajedno, što olakšava njihovo odvajanje od samog obračuna.
Ugnežđeno 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žđuje funkcije With za kreiranje dvostepenog proračuna za mesečna hipotekarna plaćanja. Sve dok ne postoji neusaglašenost, sve spoljne With imenovane vrednosti su dostupne unutar funkcije 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.
With se automatski se preračunava kako se klizači pomeraju i prikazuje se novo plaćanje 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:
- Kreirajte novu aplikaciju.
- Dodajte Slider kontrolu i nazovite je RateSlider. Podesite svojstvo Max na 48.
- Dodajte kontrolu Oznaka levo od kontrole klizača. Podesite svojstvo Text na "Kamatna stopa:".
- Dodajte kontrolu Oznaka desno od kontrole klizača. Podesite svoju Tekst osobinu na formulu RateSlider / 8 & "%".
- Dodajte još jednu kontrolu Slider i nazovite je AmountSlider. Podesite svojstvo Max na 60.
- Dodajte kontrolu Oznaka levo od kontrole klizača. Podesite svojstvo Text na "Iznos zajma:".
- Dodajte kontrolu Oznaka desno od ove kontrole klizača. Podesite svojstvo Text prema formuli AmountSlider/8 * 10000.
- Dodajte još jednu kontrolu Slider i nazovite je YearsSlider. Podesite svojstvo Max na 40.
- Dodajte kontrolu Oznaka levo od kontrole klizača. Podesite svojstvo Text na "Broj godina:".
- Dodajte kontrolu Oznaka desno od ove kontrole klizača. Podesite svojstvo Text prema formuli YearsSlider.
- Dodajte kontrolu Oznaka i podesite njeno svojstvo Text na formulu prikazanu iznad.
- 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.