Нотатка
Доступ до цієї сторінки потребує авторизації. Можна спробувати ввійти або змінити каталоги.
Доступ до цієї сторінки потребує авторизації. Можна спробувати змінити каталоги.
Застосовується до: Програми
Canvas Copilot Studio
Desktop flows
Model-driven apps
Power Platform CLI
Dataverse functions
Power Pages
Обчислює значення та виконує дії для одного запису, включно з вбудованими записами іменованих значень.
Опис
Функція With обчислює формулу для окремого запису. Формула може обчислювати значення та/або виконувати дії, як-от змінювати дані або працювати з підключенням. Використовуйте функцію ForAll, щоб обчислити формулу для всіх записів у таблиці записів.
Поля оброблюваного запису доступні у формулі. Використовуйте оператор ThisRecord або просто вкажіть посилання на поля за іменем, як у випадку з будь-яким іншим значенням. Оператор As також можна використовувати для призначення імені оброблюваного запису, що спростить сприймання формули та зробить вкладені записи доступними. Додаткову інформацію див. у прикладах нижче та в статті Робота з областю застосування записів.
Використовується With для підвищення зручності читання складних формул, розділивши їх на менші іменовані підформи. Ці іменовані значення діють як прості локальні змінні, обмежені областю With. Такий самий синтаксис вбудованого запису, який використовується з функцією UpdateContext, можна використовувати з With. Використання With краще використовувати для контексту або глобальних змінних, оскільки воно міститься самостійно, легко розуміється та може використовуватися в будь-якому контексті декларативних формул.
Використовується With для доступу до полів запису, які повертаються такими функціями, як Patch або Match. With має значення з цих функцій досить довго, щоб використовуватися в подальших обчисленнях або діях.
Якщо аргумент WithЗапис – помилка, ця помилка повернеться функцією, і формула не обчислюється.
Синтаксис
With( Запис, формула )
-
Запис – обов’язковий. Це запис, для якого потрібно виконати дію. Для значень імен використовуйте вбудований синтаксис
{ name1: value1, name2: value2, ... } - Формула – Обов’язкова. Формула, яка обчислюється для запису Record. У формулі можна посилатися на будь-яке з полів запису безпосередньо в області запису.
Приклади
Прості іменовані значення
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 елементів керування "повзунок".
Нижче наведено докладні інструкції щодо створення цієї програми:
- Створіть нову програму.
- Додайте елемент керування Повзунок і назвіть його RateSlider. Встановіть для властивості Max значення 48.
- Додайте елемент керування Надпис ліворуч від елемента керування "повзунок". Для властивості Text задайте значення "Interest Rate:" (Відсоткова ставка).
- Додайте елемент керування Надпис праворуч від елемента керування "повзунок". Встановіть для його властивості Text формулу RateSlider/8 & " %".
- Додайте ще один елемент керування Повзунок і назвіть його AmountSlider. Встановіть для властивості Max значення 60.
- Додайте елемент керування Надпис ліворуч від цього елемента керування "повзунок". Для властивості Text задайте значення "Loan Amount:" (Сума позики).
- Додайте елемент керування Надпис праворуч від цього елемента керування "повзунок". Для властивості Text задайте формулу AmountSlider/8 * 10000.
- Додайте ще один елемент керування Повзунок і назвіть його YearsSlider. Встановіть для властивості Max значення 40.
- Додайте елемент керування Надпис ліворуч від цього елемента керування "повзунок". Для властивості Text задайте значення "Number of Years:" (Кількість років).
- Додайте елемент керування Надпис праворуч від цього елемента керування "повзунок". Для властивості Text задайте формулу YearsSlider.
- Додайте елемент керування Надпис і задайте для його властивості Text показану вище формулу:
- Додайте елемент керування Надпис ліворуч від останнього елемента керування "надпис". Задайте для властивості Text значення "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
)
)
)
У цьому прикладі додається запис до таблиці Order в SQL Server. Потім використовується повернутий первинний ключ для замовлення, повернутий функцією Patch в полі OrderID, щоб створити пов’язані записи в таблиці OrderDetails.
Видобуті значення з регулярним виразом
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, щоб перетворити їх на числа, перш ніж виконувати математичні операції.
Зіставлення запису в компоненті
Див. Зіставлення записів.