Ознайомлення зі змінними у компонованих програмах
Якщо ви користувалися іншим інструментом програмування, наприклад Visual Basic , JavaScript, ви можете запитати: Де змінні? Power Apps є трохи іншим і вимагає іншого підходу. Замість того, щоб тягнутися до змінної під час створення програми на полотні, запитайте себе: Що б я робив в Excel?
Можливо, в інших засобах ви явно виконували обчислення та зберігали результати в змінній. Утім, Power Apps і Excel автоматично переобчислюють формули, якщо вхідні дані змінено, тож зазвичай створювати та оновлювати змінні не потрібно. Користуючись принагідно цим підходом, можна легко створити програму, зрозуміти принцип її дії, а також забезпечити її підтримку.
У деяких випадках вам потрібно буде використовувати змінні Power Apps, що розширює модель Excel, додаючи формули поведінки. Ці формули, наприклад, виконуються, якщо користувач натискає кнопку. У формулі поведінки часто доцільно задати змінну, яка використовуватиметься в інших формулах.
Загалом краще намагатися не використовувати змінні. Проте іноді лише змінна може забезпечити потрібний функціонал. Змінні створюються неявно й вводяться тоді, коли вони присутні у функціях, які встановлюють їхні значення.
Зіставлення можливостей Excel із Power Apps
Excel
Розгляньмо, як працює Excel. Клітинка може містити значення, як-от число чи рядок, або формулу, засновану на значеннях інших клітинок. Коли користувач вводить у клітинку інше значення, Excel автоматично переобчислює всі формули, які від нього залежать. Щоб забезпечити таку поведінку, не потрібно нічого програмувати.
У наведеному нижче прикладі клітинка A3 містить формулу A1+A2. Якщо A1 або A2 змінено, програма автоматично переобчислює значення в A3 з урахуванням таких змін. Щоб забезпечити цю поведінку, не потрібно писати код за межами самої формули.
Excel не має змінних. Значення клітинки з формулою змінюється залежно від вхідних даних, але програма не може запам’ятати результат формули та зберегти його в клітинці чи деінде. Якщо значення клітинки змінено, може змінитися вся електронна таблиця, а всі попередньо обчислені значення буде втрачено. Користувач Excel може копіювати та вставляти клітинки, але тільки вручну. Зробити це за допомогою формул неможливо.
Power Apps
За своєю поведінкою програми, створені в Power Apps, значною мірою нагадують Excel. Замість того щоб оновлювати клітинки, можна додавати елементи керування будь-де на екрані та присвоювати їм імена, щоб потім використовувати їх у формулах.
Наприклад, можна відтворити поведінку Excel у програмі, додавши елемент керування «Мітка » ( Label1) і два елементи керування вводу тексту — «TextInput1 » і «TextInput2». Якщо потім встановити властивість Text для Label1 на TextInput1 + TextInput2, вона завжди автоматично показуватиме суму будь-яких чисел у TextInput1 та TextInput2 .
Зверніть увагу, що вибрано елемент керування Label1 , який відображає його текстову формулу в рядку формул у верхній частині екрана. У цьому випадку формула – TextInput1 + TextInput2. Ця формула створює таку ж залежність між цими елементами керування, як залежність між клітинками в книзі Excel. Давайте змінимо значення TextInput1.
Результат формули для Label1 переобчислено автоматично, і тепер в елементі керування відображається нове значення.
У Power Apps можна застосовувати формули для визначення не лише первинного значення елемента керування, але й інших властивостей, наприклад, тих, що відповідають за форматування. У наступному прикладі формула для властивості Колір мітки автоматично відображатиме від’ємні значення червоним кольором. Функція If має виглядати знайомою з Excel:
If( Value(Label1.Text) < 0, Red, Black )
Формули можна використовувати для найрізноманітніших сценаріїв.
- За допомогою функції GPS на вашому пристрої елемент керування картами може відображати поточне розташування на основі формули, яка використовує властивості Location.Latitude і Location.Longitude. Коли ви рухатиметеся, карта автоматично відстежуватиме ваше місцезнаходження.
- Інші користувачі можуть оновлювати джерела даних. Наприклад, колеги з вашої робочої групи можуть оновлювати елементи в списку. Якщо оновити джерело даних, усі залежні формули автоматично переобчислюються з урахуванням оновлених даних. Продовжуючи приклад, ви можете встановити властивість галереї Елементи на формулу Фільтр ( SharePointList ), яка автоматично відображатиме щойно відфільтрований набір записів.
Переваги
Використання формул для створення програм має багато переваг.
- Якщо ви вмієте працювати з Excel, ви вмієте працювати з Power Apps. Модель і мова формул у них однакові.
- Якщо ви використовували інші засоби програмування, тільки уявіть, скільки коду знадобилося б, щоб створити ці приклади. У Visual Basic довелося б написати обробник подій для події змінення в кожному елементі керування введенням тексту. Код для обчислення в кожному з них надлишковий і може не синхронізуватися. Щоб цього уникнути, доведеться писати загальну підпрограму. У Power Apps ви зробили все це за допомогою єдиної формули довжиною в один рядок.
- Щоб зрозуміти, звідки береться текст Label1, ви точно знаєте, де шукати: формулу у властивості Text . Жодним іншим чином на текст цього елемента керування вплинути не можна. У традиційному засобі програмування значення підпису може змінити будь-який обробник подій або підпрограма в будь-якій частині програми. Через це відстежити, де й коли змінено змінну, доволі складно.
- Якщо користувач змінить значення елемента керування повзунком, а потім передумає, він може повернути повзунок у вихідне положення. Програма поводитиметься так, ніби нічого не змінилось: значення елементів керування залишаться такими ж, як і раніше. Таким чином тут, як і в Excel, можна експериментувати й пробувати різні варіанти без жодних наслідків.
Загалом, якщо можна отримати бажаний результат за допомогою формули, варто нею скористатися. Обробник формул Power Apps зробить усе за вас.
Підстави для використання змінних
Давайте змінимо наш простий суматор, щоб він обчислював проміжний підсумок за принципом старовинного арифмометра. Щоб додати число до проміжного підсумку, потрібно натиснути кнопку Додати. Щоб скинути проміжний підсумок до нуля, потрібно натиснути кнопку Очистити.
Відобразити | Опис |
---|---|
![]() |
Коли програма запускається, проміжний підсумок дорівнює 0. Червоний круг позначає місце дотику пальця користувача в полі введення тексту, де цей користувач вводить 77. |
![]() |
Користувач натискає кнопку Додати. |
![]() |
Число 77 додано до проміжного підсумку. Користувач натискає кнопку Додати знову. |
![]() |
Число 77 знову додано до проміжного підсумку, і в результаті отримано 154. Користувач натискає кнопку Очистити. |
![]() |
Проміжний підсумок скинуто до 0. |
У цьому арифмометрі використовується відсутня в Excel можливість – кнопка. У цій програмі проміжний підсумок не можна обчислити лише за допомогою формул, оскільки його значення залежить від низки дій, які виконує користувач. Цей проміжний підсумок натомість слід записувати й оновлювати вручну. Більшість засобів програмування зберігають такі відомості в змінній.
Іноді, щоб програма поводилася належним чином, потрібно використовувати змінну. Проте за такого підходу слід зважати на певні застереження.
- Проміжний підсумок слід оновлювати вручну. Автоматичне переобчислення не працюватиме.
- Проміжний підсумок не можна буде обчислити на основі значень інших елементів керування. Результат залежить від того, скільки разів користувач натискав кнопку Додати та яке значення щоразу містилося в елементі керування введенням тексту. Користувач може ввести 77 і натиснути кнопку Додати двічі, а може вказати доданки 24 та 130. Дізнатися, як саме він вчинив, неможливо, адже в обох випадках сума дорівнюватиме 154.
- Суму можна змінити різними способами. У цьому прикладі її можна оновити за допомогою обох кнопок: Додати та Очистити. Якщо програма працює неналежно, як визначити, яка з кнопок спричиняє проблему?
Використання глобальної змінної
Щоб створити арифмометр, знадобиться змінна, у якій зберігатиметься проміжний підсумок. Найпростішими змінними для роботи Power Apps є глобальні змінні.
Нижче описано принципи дії глобальних змінних.
- Ви встановлюєте значення глобальної змінної за допомогою функції Set . Set( MyVar, 1 ) встановлює глобальну змінну MyVar на значення 1.
- Щоб скористатися глобальною змінною, потрібно послатися на ім’я, яке використовується у функції Set. У цьому випадку MyVar повертатиме 1.
- Глобальні змінні можуть містити будь-які значення, включаючи рядки, числа, записи та таблиці.
Перебудуймо наш арифмометр так, щоб у ньому використовувалася глобальна змінна.
Додайте елемент керування введенням тексту з ім’ям TextInput1 і дві кнопки з іменами Button1 і Button2.
Встановіть властивість Text для Button1 на "Додати", а для властивості Text Button2 встановіть значення "Очистити".
Щоб оновлювати підсумок щоразу, коли користувач натискає кнопку Додати , встановіть для його властивості OnSelect цю формулу:
Set( RunningTotal, RunningTotal + TextInput1 )
Сама наявність цієї формули задає RunningTotal як глобальну змінну, яка (завдяки оператору +) містить число. На RunningTotal можна посилатися будь-де в програмі. Коли користувач тільки-но відкриває цю програму, змінна RunningTotal має вихідне значення blank.
Коли користувач вперше натискає кнопку Додати та Встановити пробіжки, для параметра RunningTotal встановлюється значення RunningTotal + TextInput1.
Щоб встановити загальний підсумок на 0 щоразу, коли користувач вибирає кнопку Очистити , встановіть для його властивості OnSelect цю формулу:
Set( RunningTotal, 0 )
Додайте елемент керування «Мітка » та встановіть для його властивості «Текст » значення «RunningTotal».
Ця формула переобчислюватиметься автоматично. Значення RunningTotal, що відображатиметься для користувача, змінюватиметься залежно від того, які кнопки він натискає.
Перегляньте, як працює програма. Ми отримали арифмометр, описаний вище. Введіть число в текстове поле та натисніть кнопку Додати кілька разів. Зробивши це, поверніться до функціоналу розробки за допомогою клавіші Esc.
Щоб відобразити значення глобальної змінної, виберіть « Змінні» в меню створення програми.
Щоб відобразити всі місця, де визначено та використано змінну, виберіть її в розділі Глобальні змінні.
Типи змінних
Power Apps має три типи змінних.
Тип змінних | Scope | Опис | Функції, що їх задають |
---|---|---|---|
Глобальні змінні | Програма | Найпростіші у використанні. Містить число, текстовий рядок, логічне значення, запис, таблицю тощо, на які можна посилатися з будь-якого місця програми. | Встановити |
Змінні контексту | Екран | Чудово підходять для передавання значень на екран, подібно до параметрів, що передаються до процедури в інших мовах. На них можна посилатися лише на одному екрані. |
UpdateContext Переміщатися |
Колекції | Програма | Містять таблицю, на яку можна посилатися з будь-якої частини програми. Дають змогу змінювати вміст таблиці, а не задають її як єдине ціле. Їх можна зберегти на локальному пристрої для подальшого використання. |
Збирати Технологія ClearCollect |
Створення та вилучення змінних
Усі змінні, зазначені у функціях Set, UpdateContext, Navigate, Collect або ClearCollect, створюються неявно. Щоб оголосити змінну та її тип, досить просто включити її в будь-яку з цих функцій будь-де в програмі. Жодна з цих функцій не створює змінні. Вони лише заповнюють змінні значеннями. Вам ніколи не доведеться явно оголошувати змінні, як в іншому засобі програмування. Усі введені елементи оголошуються неявно.
Наприклад, можна задати елемент керування «кнопка», використавши для OnSelect формулу Set( X, 1 ). Ця формула задає X як змінну числового типу. X можна використовувати у формулах як число. Коли ви відкриєте програму, ця змінна матиме значення blank, доки ви не натиснете кнопку. Якщо натиснути кнопку, змінній X присвоюється значення 1.
Якщо додати іншу кнопку й установити для її властивості OnSelect значення Set( X, «Привіт» ), станеться помилка, оскільки тип (текстовий рядок) не відповідає типу в попередній функції Set, де він числовий. Усі неявні визначення змінної слід узгоджувати за типом. Ще раз підкреслимо, що все це трапилося тому, що X згадано у формулах, а не через те, що якусь із них фактично виконано.
Щоб видалити змінну, видаліть усі функції Set, UpdateContext, Navigate, Collect і ClearCollect, які неявно її задають. Без них змінна не існує. Крім того, необхідно видалити будь-які посилання на змінну, оскільки вони спричинятимуть помилку.
Час життя змінної та початкове значення
Коли програма виконується, усі змінні зберігаються в пам’яті. Якщо закрити програму, усі значення, які зберігаються в змінних, буде втрачено.
За допомогою функцій Patch або Collect вміст змінної можна зберегти в джерело даних. Ви також можете зберігати значення в колекціях на локальному пристрої за допомогою функції SaveData .
Коли користувач відкриває програму, усі змінні мають вихідне значення blank.
Зчитування значень змінних
Щоб зчитати значення змінної, слід скористатися її ім’ям. Наприклад, змінну можна визначити за допомогою цієї формули:
Set( Radius, 12 )
Потім змінну Radius можна використовувати скрізь, де потрібно вказати це число. Її просто буде замінено на 12.
Pi() * Power( Radius, 2 )
Якщо змінна контексту має таке саме ім’я, як і глобальна змінна або колекція, змінна контексту має пріоритет. Однак ви все ще можете посилатися на глобальну змінну або колекцію, якщо використовуєте оператор неоднозначності[@Radius].
Використання змінної контексту
Давайте подивимося, як створити арифмометр, використовуючи замість глобальної змінної змінну контексту.
Нижче описано принципи дії змінних контексту.
- Ви неявно встановлюєте та встановлюєте контекстні змінні за допомогою функцій UpdateContext або Navigate . Коли запускається програма, усі змінні контексту мають вихідне значення blank.
- Змінні контексту можна оновити за допомогою записів. В інших засобах програмування для присвоювання зазвичай використовується оператор «=», як-от «x = 1». Для змінних контексту скористайтеся натомість синтаксисом { x: 1 }. Якщо ви використовуєте змінну контексту, указуйте її ім’я безпосередньо (без синтаксису запису).
- Ви також можете встановити контекстну змінну під час використання функції «Навігація » для відображення екрана. Якщо уявити що екран – це своєрідна процедура або підпрограма, такий підхід нагадуватиме передавання параметра в інших засобах програмування.
- За винятком Navigate, контекстні змінні обмежені контекстом одного екрана, звідки вони і отримали свою назву. Їх не можна використовувати або встановлювати за межами цього контексту.
- Контекстні змінні можуть містити будь-які значення, включаючи рядки, числа, записи татаблиці.
Перебудуймо наш арифмометр так, щоб у ньому використовувалася змінна контексту.
Додайте елемент керування введенням тексту з ім’ям TextInput1 і дві кнопки з іменами Button1 і Button2.
Встановіть властивість Text для Button1 на "Додати", а для властивості Text Button2 встановіть значення "Очистити".
Щоб оновлювати підсумок щоразу, коли користувач натискає кнопку Додати , встановіть для його властивості OnSelect цю формулу:
UpdateContext( { RunningTotal: RunningTotal + TextInput1 } )
Сама наявність цієї формули задає RunningTotal як змінну контексту, яка (завдяки оператору +) містить число. На RunningTotal можна посилатися будь-де на цьому екрані. Коли користувач тільки-но відкриває цю програму, змінна RunningTotal має вихідне значення blank.
Коли користувач вперше вибирає кнопку Додати і запускається UpdateContext , для параметра RunningTotal встановлюється значення RunningTotal + TextInput1.
Щоб встановити загальний підсумок на 0 щоразу, коли користувач вибирає кнопку Очистити , встановіть для його властивості OnSelect цю формулу:
UpdateContext( { RunningTotal: 0 } )
Знову ж таки, UpdateContext використовується з формулою UpdateContext( { RunningTotal: 0 } ).
Додайте елемент керування «Мітка » та встановіть для його властивості «Текст » значення «RunningTotal».
Ця формула переобчислюватиметься автоматично. Значення RunningTotal, що відображатиметься для користувача, змінюватиметься залежно від того, які кнопки він натискає.
Перегляньте, як працює програма. Ми отримали арифмометр, описаний вище. Введіть число в текстове поле та натисніть кнопку Додати кілька разів. Зробивши це, поверніться до функціоналу розробки за допомогою клавіші Esc.
Значення змінної контексту можна задати, переходячи на екран. Це зручно, якщо потрібно передати «контекст» або «параметри» з одного екрана на інший. Щоб побачити цю методику в дії, вставте екран, вставте кнопку та задайте як значення її властивості OnSelect таку формулу:
Навігація( Екран1, Немає, { БігВсього: -1000 } )
Натисніть і втримуйте клавішу Alt, натискаючи цю кнопку, щоб відобразити екран Screen1 і задати для змінної контексту RunningTotal значення –1000.
Щоб відобразити значення контекстної змінної, виконайте одну з таких дій:
Якщо ви використовуєте версію Power Apps Studio для попереднього перегляду, виберіть Змінні в меню створення програми.
Якщо ви використовуєте класичну версію Power Apps Studio, виберіть меню Файл , а потім виберіть Змінні на лівій панелі.
Щоб показати, де визначено та використано контекстну змінну, виберіть її в розділі Контекстні змінні.
Використання колекції
Нарешті, давайте розглянемо, як можна створити арифмометр із використанням колекції. Оскільки колекція містить таблицю, яку можна легко змінити, ми створимо арифмометр, що «записує на перфострічку» кожне введене значення.
Принципи роботи колекції описано нижче.
- Створюйте та встановлюйте колекції за допомогою функції ClearCollect . Замість цього ви можете використовувати функцію Collect , але вона фактично вимагатиме іншу змінну замість заміни старої.
- Колекція – це різновид джерела даних, і, відповідно, вона являє собою таблицю. Щоб отримати доступ до окремого значення в колекції, скористайтеся функцією First ... і витягніть одне поле з отриманого запису. Якщо ви використовували одне значення з ClearCollect, це буде поле «Значення », як у цьому прикладі:
First(Ім'я змінної). Цінність
Створімо арифмометр знову, використовуючи для цього колекцію.
Додайте елемент керування вводу тексту з іменем TextInput1 і дві кнопки з назвамиButton1 і Button2 .
Встановіть властивість Text для Button1 на "Додати", а для властивості Text Button2 встановіть значення "Очистити".
Щоб оновлювати підсумок щоразу, коли користувач натискає кнопку Додати , встановіть для його властивості OnSelect цю формулу:
Collect( PaperTape, TextInput1.Text )
Сама наявність цієї формули задає PaperTape як колекцію, яка містить таблицю текстових рядків з одним стовпцем. На PaperTape можна посилатися будь-де в цій програмі. Щоразу, коли користувач відкриватиме цю програму, значенням PaperTape буде пуста таблиця.
Коли цю формулу буде запущено, вона додасть нове значення в кінець колекції. Оскільки ми додаємо одне значення, Collect автоматично розташовує його в таблиці з одним стовпцем, що має ім’я Value. Його буде використано згодом.
Щоб очистити паперову стрічку, коли користувач вибирає кнопку Очистити , встановіть для її властивості OnSelect таку формулу:
Прозорий ( PaperTape )
Щоб відобразити підсумок роботи, додайте мітку та встановіть для властивості Текст цю формулу:
Sum( PaperTape, Value )
Щоб запустити арифмометр, перейдіть у режим попереднього перегляду натисканням клавіші F5, введіть числа в елемент керування введенням тексту та натисніть кнопки.
Щоб повернутися до стандартної робочої області, натисніть клавішу Esc.
Щоб відобразити паперову стрічку, вставте елемент керування таблиці даних і встановіть для її властивості Елементи таку формулу:
Стрічка для паперу
В області праворуч виберіть Редагувати поля, а тоді виберіть Додати поле, виберіть стовпець Значення, і виберіть Додати, щоб показати його.
Щоб переглянути значення у вашій колекції, виконайте одну з наведених нижче дій.
Якщо ви використовуєте версію Power Apps Studio для попереднього перегляду, виберіть Змінні в меню створення програми, а потім виберіть Колекції.
Якщо ви використовуєте класичну версію Power Apps Studio, виберіть «Колекції» в меню «Файл».
Щоб зберегти та отримати колекцію, додайте два додаткові елементи керування «кнопка» та задайте для їхньої властивості Text значення Завантажити та Зберегти. Як значення властивості OnSelect кнопки Завантажити задайте таку формулу:
Прозорий ( PaperTape ); LoadData( PaperTape, "StoredPaperTape", true )
Спочатку колекцію потрібно очистити, оскільки функція LoadData додаватиме збережені значення в її кінець.
Як значення властивості OnSelect кнопки Зберегти задайте таку формулу:
SaveData( PaperTape, "StoredPaperTape" )
Знову перегляньте, як працює програма. Для цього натисніть клавішу F5, введіть числа в елемент керування введенням тексту та натисніть кнопки. Натисніть кнопку Зберегти. Закрийте та перезавантажте програму й натисніть кнопку Завантажити, щоб перезавантажити колекцію.
Нотатка
Функції SaveData та LoadData працюють у Power Apps мобільному телефоні, але не Power Apps Studio у веб-плеєрі для Power Apps.