Делите путем


Са функцијом

Односи се на: Апликације платна Токови на радној површини Апликације Power Pages Power Platform засноване на моделу ЦЛИ

Израчунава вредности и изводи радње за један запис, укључујући уметнуте записе именованих вредности.

Опис

Функција With процењује формулу за један запис. Формула може израчунати вредност и/или извршити радње, попут мењања података или рада са везом. Користите ForAll функцију за процену формуле за све записе у табели записа.

Поља записа који се тренутно обрађује су доступна у формули. Користите оператор ThisRecord или једноставно референцирајте поља по називу као и било коју другу вредност. Оператор As такође може да се користи за именовање записа који се обрађује што може да помогне вашој формули да лакше разуме и учини угнежђене записе доступнима. Више информација потражите у примерима у наставку и чланку о раду са опсегом записа.

Користите With да бисте побољшали читљивост сложених формула дељењем на мање подформуле са називима. Наведене вредности делују попут једноставних локалних променљивих које су ограничене на опсег With. Иста синтакса уметнутог записа која се користи са UpdateContext функцијом може се користити са With. Коришћење With је пожељно у односу на контекстуалне или глобалне променљиве, јер је самодовољна, лако се разуме и може се користити у било којем контексту декларативне формуле.

Користите Са да бисте приступили пољима записа која се враћају функцијама као што су Патцх или Матцх. Са задржава вредност из ових функција довољно дуго да се користи у даљим прорачунима или акцијама.

Ако је аргумент Запис за With грешка, ту грешку ће вратити функција и Формула неће бити оцењивана.

Синтакса

Са ( Запис, Формула )

  • Запис - Обавезно. Треба да се реагује на запис. За вредности имена користите уметнуту синтаксу { name1: value1, name2: value2, ... }
  • Формула - Обавезно. Формула за процену за Запис. Формула може да се односи на било које од поља Запис директно као опсег записа.

Примери

Једноставне именоване вредности

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

Овај пример користи запис именованих вредности за израчунавање запремине цилиндара. Са се користи за снимање свих улазних вредности заједно, што олакшава њихово одвајање од самог обрачуна.

Угнежђено With

Калкулатор камате помоћу функције 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
      )
)

Овај пример угнежђује функције With за креирање двостепеног прорачуна за месечна хипотекарна плаћања. Све док не постоји сукоб, све спољне With именоване вредности су доступне унутар With.

Пошто се контроле клизача могу кретати само у инкрементима од 1, клизачи се деле или множе како би се ефективно створио прилагођени прираштај. У случају каматне стопе, RateSlider има своје Макс. својство постављено на 48, подељено са 8 за инкремент од 1/8 процента поена и подељено са 100 да би се претворило из процента у децималу, покривајући распон од 0,125% до 6%. У случају износа зајма, AmountSlider има своје својство Макс. постављено на 60 и помножено са 10.000, покривајући распон од 10.000 до 600.000.

With се аутоматски се прерачунава како се клизачи померају и приказује се ново плаћање кредита. Не користе се никакве променљиве и нема потребе за коришћењем својства OnChange за својство контрола клизача.

Ево детаљних упутстава за креирање ове апликације:

  1. Креирајте нову апликацију.
  2. Додајте Slider контролу и назовите је RateSlider. Подесите својство Макс. на 48.
  3. Додајте контролу Ознака лево од контроле клизача. Подесите својство Текст на "Каматна стопа:".
  4. Додајте контролу Ознака десно од контроле клизача. Подесите своју Текст особину на формулу РатеСлидер / 8 & "%".
  5. Додајте још једну контролу Slider и назовите је AmountSlider. Подесите својство Макс. на 60.
  6. Додајте контролу Ознака лево од контроле клизача. Подесите својство Текст на "Износ зајма:".
  7. Додајте контролу Ознака десно од контроле клизача. Подесите својство Text према формули AmountSlider/8 * 10000.
  8. Додајте још једну контролу Slider и назовите је YearsSlider. Подесите својство Макс. на 40.
  9. Додајте контролу Ознака лево од контроле клизача. Подесите својство Текст на "Број година:".
  10. Додајте контролу Ознака десно од контроле клизача. Подесите својство Text према формули YearsSlider.
  11. Додајте контролу Ознака и подесите њено својство Текст на формулу приказану изнад
  12. Додајте контролу Ознака лево од контроле последње ознаке. Подесите својство Текст на "Периодична месечна исплата:".

Примарни кључ се вратио из функције Закрпа

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

Овај пример додаје запис у табелу Поруџбина у SQL серверу. Затим користи враћени примарни кључ за поруџбину, који враћа функција Patch у поље ID поруџбине за креирање повезаних записа у табели Детаљи поруџбине.

Извучене вредности са правилним изразом

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)

Овај пример извлачи сате, минуте и секунде из вредности трајања ISO 8601, а затим користи ове подударности да би креирао вредност Датум/Време.

Имајте на уму да иако подударности садрже бројеве, они су и даље у текстуалном низу. Користите функцију Value за конвертовање у број пре обављања математичких операција.

Мапирање записа у компоненти

Погледајте запис мапирања.