Споделяне чрез


С функция

Отнася се за: Приложения за платно Потоци на работния плот Приложения, управлявани Power Pages Power Platform от модел CLI

Изчислява стойности и изпълнява действия за един запис, включително вградени записи на посочени стойности.

Описание

Функция With оценява формула за един запис. Формулата може да изчисли стойност и / или да извърши действия, като например промяна на данни или работа с връзка. Използвайте ForAll function да се оцени формула за всички записи в таблица с записи.

Полетата от записа, които се обработват в момента, са достъпни във формулата. Използвайте оператора ThisRecord или просто посочете полета по име, както при всяка друга стойност. Операторът As може също така да бъде използван за задаване на име на записа, който се обработва, което може да помогне вашата формула да стане по-лесна за разбиране и вложените записи да са достъпни. За повече информация вижте примерите по-долу и работа с обхвата на запис.

Използвайте With, за да подобри четимостта на сложни формули, като я раздели на по-малки наименувани подформули. Тези наименувани стойности действат като прости локални променливи, ограничени до обхвата на With. Същият синтаксис на вградения запис, който се използва с UpdateContext function може да се използва с With. Използването на With се предпочита пред контекста или глобалните променливи, тъй като е самостоятелен, лесен за разбиране и може да се използва във всеки контекст на декларативна формула.

Използвайте С за достъп до полетата на записа, които се връщат от функции като Корекция или Съвпадение. С задържа стойността от тези функции достатъчно дълго, за да се използва при по-нататъшни изчисления или действия.

Ако Запис аргументът за With е грешка, тази грешка ще бъде върната от функцията и Formula няма да бъдат оценявани.

Синтаксис

С(запис,формула )

  • Запис – Задължително. Записът, върху който ще се действа. За имената стойности използвайте вградения синтаксис { 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 има своето Max свойство, зададено на 48, разделено на 8 за нарастване на 1/8 процентни пункта и разделен на 100, за да се преобразува от процент в десетичен, обхващащ диапазона от 0,125% до 6%. В случай на размера на заема, AmountSlider има своето Max свойство, зададено на 60 и умножено по 10 000, обхващайки обхвата от 10 000 до 600 000.

With автоматично се преизчислява, докато плъзгачите се придвижват и се показва новото плащане за заем. Не се използват променливи и не е необходимо да се използва OnChange свойство на плъзгачите за управление.

Ето подробни инструкции за създаване на това приложение:

  1. Създайте ново приложение.
  2. Добавете контрола Плъзгач и я назовете RateSlider. Задайте свойството Max на 48.
  3. Добавете контролата етикет вляво от контролата на плъзгач. Задайте свойството Текст на "Interest Rate:".
  4. Добавете контролата етикет вдясно от контролата на плъзгач. Задайте свойството Text на формулата RateSlider/8 & " %".
  5. Добавете друга контрола Плъзгач и я назовете AmountSlider. Задайте свойството Max на 60.
  6. Добавете контролата етикет вляво от тази контрола на плъзгач. Задайте свойството Текст на "Loan Amount:".
  7. Добавете контролата етикет вдясно от тази контрола на плъзгач. Задайте свойството Текст към формулата AmountSlider/8 * 10000.
  8. Добавете друга контрола Плъзгач и я назовете YearsSlider. Задайте свойството Max на 40.
  9. Добавете контролата етикет вляво от тази контрола на плъзгач. Задайте свойството Текст на "Number of Years:".
  10. Добавете контролата етикет вдясно от тази контрола на плъзгач. Задайте свойството Текст към формулата YearsSlider.
  11. Добавете контрола Етикет с име Текст и задайте на формулата, показана по-горе.
  12. Добавете контролата етикет вляво от контролата на последен етикет. Задайте свойството си Текст на "Recurring Monthly Payment:".

Първичният ключ се връща от 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
              )
      )
)

Този пример добавя запис към Поръчка таблица в SQL Server. След това използва върнатия първичен ключ за поръчката, върнат от Patch функция в OrderID поле, за да създадете свързани записи в Подробности за поръчката таблица.

Извлечени стойности с редовен израз

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 функция за преобразуване в число преди извършване на математически операции.

Карта на запис в компонент

Вижте Картографиране на запис.