Zdieľať cez


Funkcia With

Vzťahuje sa na: Aplikácie plátna Copilot Studio Desktop postupy modelom riadené aplikácie Power Platform CLI Dataverse funkcie Power Pages

Vypočíta hodnoty a vykoná akcie pre jeden záznam vrátane vnorených záznamov pomenovaných hodnôt.

Popis

Funkcia vyhodnocuje vzorec pre jeden záznam. With Vzorec môže vypočítať hodnotu alebo vykonať akcie, ako sú napríklad úpravy údajov alebo práca s pripojením. Použi funkciu ForAll na vyhodnotenie vzorca pre všetky záznamy v tabuľke záznamov.

Polia záznamu, ktorý sa momentálne spracúva, sú k dispozícii v rámci vzorca. Použite operátor ThisRecord alebo jednoducho odkážte na polia podľa názvu, ako by ste urobili s ľubovoľnou inou hodnotou. Operátor As sa dá použiť aj na pomenovanie záznamu, ktorý sa práve spracúva, vďaka čomu môžete vytvoriť ľahšie pochopiteľný vzorec a sprístupniť vnorené záznamy. Ďalšie informácie nájdete v príkladoch nižšie a v téme, ako pracovať s rozsahom záznamu.

Používa With sa na zlepšenie čitateľnosti zložitých vzorcov tak, že ich rozdelíte na menšie pomenované čiastkové vzorce. Tieto pomenované hodnoty pôsobia ako jednoduché lokálne premenné obmedzené na rozsah With. Rovnakú syntax vnoreného záznamu, ktorá sa používa s funkciou UpdateContext, možno použiť s .With Použitie With sa uprednostňuje pred kontextom alebo globálnymi premennými, pretože sú samostatné, ľahko pochopiteľné a môžu sa použiť v každom kontexte deklaratívneho vzorca.

Použite With na prístup k poliam záznamu, ktoré vracajú funkcie ako Patch alebo Match. With obsahuje hodnotu z týchto funkcií dostatočne dlho na to, aby sa použila pri ďalších výpočtoch alebo akciách.

Ak argument WithZáznam predstavuje chybu, funkcia vráti túto chybu a vzorec sa nevyhodnotí.

Syntax

With( Záznam, Vzorec )

  • Záznam – Povinné. Záznam, na základe ktorého sa má konať. Pre hodnoty názvov použite inline syntax { name1: value1, name2: value2, ... }
  • Vzorec – povinné. Vzorec určený na vyhodnotenie pre Záznam. Vzorec môže odkazovať na ktorékoľvek z polí záznamu priamo ako rozsah záznamu.

Príklady

Jednoduché pomenované hodnoty

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

Tento príklad používa záznam pomenovaných hodnôt na výpočet objemu valca. With sa používa na zachytenie všetkých vstupných hodnôt dohromady, vďaka čomu ich možno jednoducho oddeliť od samotného výpočtu.

Vnorené With

Výpočet úrokovej kalkulačky pomocou With funkcie .

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

Tento príklad vnára With funkcie na vytvorenie dvojúrovňového výpočtu pre mesačné splátky hypotéky. Ak nie je žiaden konflikt, všetky vonkajšie With pomenované hodnoty sú k dispozícii v rámci vnútornej Withfunkcie .

Pretože ovládacie prvky posúvača sa môžu pohybovať iba v krokoch 1, sú posúvače rozdelené alebo násobené, aby sa efektívne vytvoril vlastný prírastok. V prípade úrokovej sadzby RateSlidermá svoju vlastnosť Max nastavenú na 48, vydelené 8 pre prírastok 1/8 percentuálneho bodu a vydelené 100 pre prevod z percenta na desatinné miesto, pokrývajúce rozsah 0,125% až 6%. V prípade výšky úveru: AmountSlider má svoju vlastnosť Max nastavenú na 60 a vynásobené 10 000, čo predstavuje rozsah 10 000 až 600 000.

Hodnota sa With automaticky prepočíta, keď sa posúvajú jazdce, a zobrazí sa nová platba úveru. Nepoužívajú sa žiadne premenné a nie je potrebné používať OnChange vlastnosť posuvných ovládacích prvkov.

Tu sú podrobné pokyny na vytvorenie tejto aplikácie:

  1. Vytvorenie novej aplikácie.
  2. Pridajte ovládací prvok Jazdec a pomenujte ho RateSlider. Nastavte jeho vlastnosť Max na hodnotu 48.
  3. Pridaj ovládací prvok Označenie naľavo od posuvného ovládača. Nastavte jeho vlastnosť Text na "Úroková sadzba:".
  4. Pridaj ovládací prvok Označenie vpravo od posuvného ovládača. Nastavte jeho vlastnosť Text na vzorec RateSlider/8 & "%".
  5. Pridajte ďalší ovládací prvok Jazdec a pomenujte ho AmountSlider. Nastavte jeho vlastnosť Max na hodnotu 60.
  6. Pridaj ovládací prvok Označenie naľavo od tohto posuvného ovládača. Nastavte jeho vlastnosť Text na "Výška pôžičky:".
  7. Pridaj ovládací prvok Označenie vpravo od tohto posuvného ovládača. Nastavte jeho vlastnosť Text podľa vzorca AmountSlider/8 * 10000.
  8. Pridajte ďalší ovládací prvok Jazdec a pomenujte ho YearsSlider. Nastavte jeho vlastnosť Max na hodnotu 40.
  9. Pridaj ovládací prvok Označenie naľavo od tohto posuvného ovládača. Nastavte jeho hodnotu Text na „Počet rokov:“.
  10. Pridaj ovládací prvok Označenie vpravo od tohto posuvného ovládača. Nastavte jeho vlastnosť Text podľa vzorca YearsSlider.
  11. Pridajte ovládací prvok Označenie a jeho vlastnosť Text nastavte na vyššie uvedený vzorec.
  12. Pridaj ovládací prvok Označenie naľavo od posledného ovládacieho prvku označenia. Nastavte jeho vlastnosť Text na „Opakovaná mesačná platba:“.

Primárny kľúč sa vrátil zo Záplaty

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

Tento príklad pridá záznam do tabuľky Objednávka v SQL Server. Potom použije pre objednávku vrátený primárny kľúč vrátený funkciou Patch v poli OrderID, čím sa vytvoria súvisiace záznamy v tabuľke OrderDetails.

Extrahované hodnoty s regulárnym výrazom

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)

Tento príklad extrahuje hodiny, minúty a sekundy z hodnoty trvania ISO 8601 a potom pomocou týchto čiastkových zhôd vytvorí hodnotu dátum/čas.

Všimnite si, že hoci čiastkové zhody obsahujú čísla, stále sú v textovom reťazci. Použite funkciu Value na prevod na číslo pred vykonaním matematických operácií.

Mapovanie záznamu v súčasti

Pozrite si Mapovanie záznamu.