Керування станом 101: змінні та колекції у Power Fx
By Mirko Peters ·
Ласкаво просимо назад до супровідного блогу подкасту! Коли ви розвиваєте свій шлях у low-code в екосистемі Microsoft, ви швидко розумієте, що прості статичні екрани – лише початок. Справжнім бізнес-застосункам потрібна пам'ять. Вони мають запам'ятовувати вибір користувачів, тимчасово тримати елементи в кошику, відстежувати прогрес багатокрокових форм і маніпулювати групами записів, перш ніж зберег
Automatically translated with AI from the original post. Read the English original

Ласкаво просимо назад до супровідного блогу подкасту! Коли ви розвиваєте свій шлях у low-code в екосистемі Microsoft, ви швидко розумієте, що прості статичні екрани – лише початок. Справжнім бізнес-застосункам потрібна пам'ять. Вони мають запам'ятовувати вибір користувачів, тимчасово тримати елементи в кошику, відстежувати прогрес багатокрокових форм і маніпулювати групами записів, перш ніж зберегти їх назад у джерело даних, наприклад Microsoft Dataverse або SharePoint. Ця потреба безпосередньо підводить нас до поняття керування станом.
В одному з нещодавніх епізодів подкасту, Microsoft Power Fx - Simply Explained, ми розібрали, як ця потужна мова формул перекриває розрив між знайомством із електронними таблицями та розробкою повноцінних бізнес-застосунків. Ми обговорили, як Power Fx керує динамічними інтерфейсами, обробляє підключення до даних і дає можливості як розробникам-початківцям, так і ІТ-фахівцям. Якщо ви ще не слухали цей епізод, обов'язково перегляньте його, щоб отримати ґрунтовне уявлення про те, як Power Fx змінює ландшафт low-code. Сьогодні ми поглибимося в одну з ключових тем, які торкнулися в тому епізоді: керування станом через змінні та колекції.
Вступ до керування станом у Power Fx
Керування станом звучить як складний термін з інформатики, але по суті це просто відстеження поточного стану вашого застосунку. Коли користувач відкриває застосунок, натискає кнопку, фільтрує галерею або вводить текст у формі, застосунок переходить у різні стани. Без керування станом кожен екран скидався б щоразу, коли користувач переходить на інший, і ваш застосунок страждав би від короткочасної втрати пам'яті.
У традиційному програмуванні керування станом може включати складні структури даних, виділення пам'яті та налагодження витоків пам'яті. Power Fx, однак, робить це доступнішим, спираючись на свою декларативну природу, але водночас пропонуючи імперативні функції, коли потрібно зберегти тимчасові значення. Вміння ефективно керувати станом відрізняє базовий прототип від надійного застосунку корпоративного рівня, готового до виробництва. Чи створюєте ви простий внутрішній інструмент, чи масштабну організаційну панель, знання того, коли і як тимчасово зберігати інформацію, є суттєвим навичкою для кожного розробника Power Apps.
Розуміння змінних: тимчасове зберігання інформації
Змінні є фундаментальними будівельними блоками керування станом. Уявіть змінну як підписаний контейнер або стікер, на якому можна записати інформацію та звернутися до неї пізніше. У Power Fx змінні бувають кількох видів, кожен з яких призначений для певної області видимості та часу життя в межах вашого застосунку.
Першим і найпоширенішим типом є контекстна змінна, яка створюється за допомогою функції UpdateContext. Контекстні змінні обмежені одним екраном. Вони чудово підходять для відстеження станів інтерфейсу, наприклад, чи відкрита детальна інформаційна панель, яку вкладку переглядає користувач або тимчасове значення ідентифікатора, потрібне лише для розмітки цього екрана. Оскільки вони локальні для екрана, вони автоматично очищаються, коли користувач переходить на інший екран, що допомагає тримати пам'ять застосунку чистою та впорядкованою.
Другий тип – глобальна змінна, яка створюється за допомогою функції Set. Глобальні змінні доступні з будь-якого місця в усьому застосунку. Якщо потрібно зберігати інформацію про поточного користувача, глобальні параметри конфігурації або загальнооб'єктні налаштування, які потрібні кожному екрану, глобальні змінні – ваш основний інструмент. Однак з великою силою приходить велика відповідальність. Надмірне використання глобальних змінних може ускладнити налагодження застосунку, адже будь-який екран може змінити їх значення в будь-який момент. Як найкраща практика, залишайте глобальні змінні для справді глобальних даних, а де це можливо, користуйтеся контекстними змінними рівня екрана.
Колекції: керування групами записів
Змінні чудово підходять для зберігання окремих значень, наприклад числа, текстового рядка, логічного значення true/false або одного запису. Але що робити, коли потрібно керувати цілим списком елементів? Саме тут на допомогу приходять колекції.
Колекція — це, по суті, локальний табличний набір даних, що зберігається в пам'яті пристрою користувача. Вона має ту саму табличну структуру, що й у джерелах даних на кшталт Dataverse, SharePoint чи SQL Server. Створити колекцію й заповнити її можна за допомогою функції Collect; додавати елементи — за допомогою Collect або Patch; видаляти — за допомогою Remove або RemoveIf; а повністю очистити вміст — за допомогою Clear.
Колекції незамінні для роботи офлайн, для функціоналу кошика покупок, для форм введення даних з кількома рядками, куди користувачі додають кілька записів перед збереженням усього одним пакетом, а також для кешування довідкових даних, що підвищує продуктивність застосунку. Оскільки колекції зберігаються локально в пам'яті, запити до них і їх зміни виконуються миттєво, без звернень до сервера чи хмарного джерела даних. Завдяки цьому застосунок працює швидко й відгукується навіть тоді, коли йдеться про складні масиви даних, створених користувачами.
Змінні та колекції: коли що використовувати
Одне з найпоширеніших запитань, які ставлять початківці-розробники Power Apps: «Коли використовувати змінну, а коли колекцію?» Відповідь залежить від природи та обсягу даних, з якими ви працюєте.
Використовуйте змінну, коли маєте справу зі скалярними значеннями або окремим дискретним об'єктом. Якщо потрібно зберегти ім'я користувача, вибране значення випадаючого списку, стан перемикача або один запис, що відповідає вибраному елементу галереї, правильним вибором буде змінна. Змінні легкі та призначені для відстеження окремих значень.
Використовуйте колекцію, коли маєте справу з багатьма рядками та стовпцями даних. Якщо користувач формує список елементів для надсилання, відмічає кілька прапорців у галереї для масового оновлення або завантажує таблицю довідника для локальної фільтрації, колекція є обов'язковою. Думайте про змінні як про окремі стікери на вашому столі, а про колекції як про цілі папки з документами.
Найкращі практики для масштабованих і зрозумілих рішень
Чим складнішими стають ваші застосунки Power Apps, тим більше погано керовані змінні та колекції перетворюють рішення на заплутане павутиння логіки, яку важко відстежити. Щоб застосунки залишалися масштабованими та зрозумілими в супроводі, дотримуйтеся кількох галузевих практик:
- Мінімізуйте глобальні змінні: обмежте використання Set() налаштуваннями рівня застосунку та метаданими користувача. Для станів інтерфейсу, специфічних для окремого екрана, використовуйте UpdateContext(), щоб уникнути небажаних побічних ефектів між екранами.
- Очищайте й скидайте свідомо: завжди переконуйтеся, що колекції очищено або належним чином ініціалізовано, коли користувач починає новий робочий процес. Залишені дані з попередньої сесії в колекції можуть спричинити дивні помилки та некоректне надсилання форм.
- Документуйте стан: використовуйте коментарі у формулах Power Fx — так, Power Fx підтримує коментарі за допомогою подвійної косої риски (//)! Документування того, де ініціалізуються та змінюються змінні, заощадить вам безліч годин під час усунення несправностей.
- Використовуйте іменовані формули (App.Formulas): скористайтеся сучасними можливостями Power Fx, зокрема іменованими формулами в об'єкті App. Вони працюють як змінні, що перераховуються автоматично, і можуть значно спростити архітектуру застосунку порівняно з традиційними імперативними змінними.
Висновки та наступні кроки у вашому шляху з Power Apps
Оволодіння змінними та колекціями — це важливий поворотний момент у вашому шляху low-code розробки. Він допомагає перейти від створення статичних, жорстких інтерфейсів до побудови динамічних, інтелектуальних бізнес-застосунків, які гнучко реагують на дії користувачів і складні організаційні процеси. Розуміючи, як тимчасово зберігати окремі значення та керувати цілими групами записів у пам'яті, ви розкриваєте справжній потенціал Microsoft Power Apps.
Щоб глибше розібратися, як Power Fx забезпечує ці можливості, і почути більше практичних порад щодо low-code розробки, обов'язково послухайте повний епізод подкасту Microsoft Power Fx - Simply Explained. Почніть експериментувати зі змінними у своєму наступному застосунку, створіть першу колекцію й відчуйте, як зростає ваша впевненість як розробника застосунків!