Поділитися через


Об'єкт програми в Power Apps

Застосовується до: програм Canvas Програм на основі моделі

Містить відомості про поточну активну програми та дозволяє керувати поведінкою програми.

Опис

Як і елемент керування, об'єкт програми надає властивості, які визначають, який екран відображається, просять користувача зберегти зміни, щоб на втратити їх. Кожна програма має об'єкт Програма.

Для деяких властивостей об'єкта програма можна написати формули. У верхній частині області Подання дерева виберіть об'єкт Програма, так само, як і будь-який інший елемент керування або екран. Перегляньте та відредагуйте одну із властивостей об'єкта, вибравши її в розкривному списку ліворуч від рядка формул.

Об’єкт App на панелі перегляду дерева.

Властивість ActiveScreen

Властивість ActiveScreen визначає, який екран відображається.

Ця властивість повертає об’єкт екрана. Використовуйте його для посилання на властивості поточного показаного екрана, зокрема на назву з формулою App.ActiveScreen.Name. Ви також можете порівняти цю властивість з іншим об’єктом екрана, наприклад, за допомогою формули порівняння App.ActiveScreen = Screen2 , щоб перевірити, чи є Screen2 поточним відображеним екраном.

Скористайтеся функціями Back або Navigate, щоб змінити, який екран відображається.

Властивість BackEnabled

Властивість BackEnabled змінює реакцію програми на жест «Назад» (проведіть пальцем або скористайтеся апаратною кнопкою «Назад» на Android пристроях, проведіть пальцем зліва на iOS пристроях) під час запуску на Power Apps мобільних пристроях. Якщо цей параметр увімкнено, жест «Назад» повертається до екрана, який відображався останнім, що схоже на формулу «Назад ». Якщо вимкнено, жест повернення пристрою повертає користувача до списку програм.

Властивості ConfirmExit

Ніхто не хоче втрачати незбережені зміни. Скористайтеся властивостями ConfirmExit та ConfirmExitMessage, щоб попередити користувача перед закриттям програми.

Нотатка

  • ConfirmExit не працює в програмах, вбудованих у, наприклад, Power BI та SharePoint.
  • Наразі, ці властивості можуть посилатись лише на елементи керування на першому екрані, якщо ввімкнуто підготовчу версію функції Відкладете завантаження (увімкнуто за замовчуванням для нових програм). Якщо посилання зроблено, Power Apps Studio не відображає повідомлення про помилку, але отримана опублікована програма не відкриється в Power Apps Mobile або браузері. Ми активно працюємо над тим, щоб зняти це обмеження. Тим часом ви можете вимкнути функцію Відкладене завантаження в розділі Параметри>Заплановані функції (в області Підготовчі).

ConfirmExit

ConfirmExit — це логічна властивість, яка, при значенні TRUE, відкриває діалогове вікно підтвердження перед закриттям програми. За замовчуванням ця властивість має значення FALSE, а діалогове вікно не відображається.

У ситуаціях, коли користувач може мати незбережені зміни в програмі, використовуйте цю властивість, щоб відкрити діалогове вікно підтвердження перед виходом із програми. Використайте формулу, яка може перевіряти змінні та властивості елементів керування (наприклад, властивість Незбережено елемента керування Форма редагування).

Діалогове вікно підтвердження відобразиться в будь-якій ситуації, в якій можна втратити дані, наприклад:

  • Виконання функції Exit.
  • Якщо програма працює у браузері:
    • Закриття браузера або вкладки браузера, в якій працює програма.
    • Натискання кнопки "назад" браузера.
    • Запуск функції Launch з параметром LaunchTarget або Self.
  • Якщо додаток працює на Power Apps мобільному пристрої (iOS або Android):
    • Проведення пальцем, щоб переключитися на іншу програму у Power Apps Mobile.
    • Натискання кнопки "назад" на пристрої Android.
    • Запуск функції Launch для запуску іншої компонованої програми.

Точний вигляд діалогового вікна підтвердження може відрізнятися залежно від пристрою і версії Power Apps.

Діалогове вікно підтвердження не відображається у Power Apps Studio.

ConfirmExitMessage

За замовчуванням у діалоговому вікні підтвердження відображається загальне повідомлення мовою користувача, наприклад, «У вас можуть бути незбережені зміни.»

Використайте ConfirmExitMessage для створення настроюваного повідомлення в діалоговому вікні підтвердження. Якщо ця властивість має значення пусто, то використовується значення за замовчуванням. Настроювані повідомлення скорочуються, якщо це необхідно, щоб вписатися в діалогове вікно підтвердження, тож обмежте максимальну довжину повідомлення кількома рядками.

У браузері діалогове вікно підтвердження може відображатися з загальним повідомленням від браузера.

Нотатка

Об’єкт програми має ще дві властивості, OnMessage і BackEnabled, які є експериментальними. Зрештою, ці властивості буде видалено з об’єкта програми. Рекомендуємо не використовувати ці властивості у робочому середовищі.

Приклад

  1. Створіть програму, яка містить два елементи керування "Форма": AccountForm та ContactForm.

  2. Встановіть значенням властивості ConfirmExit об'єкта Програма цей вираз:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Це діалогове вікно відобразиться, якщо користувач змінить дані у будь-якій формі або потім спробує закрити програму, не зберігаючи ці зміни.

    Діалогове вікно «Загальне підтвердження».

  3. Встановіть значенням властивості ConfirmExitMessage об'єкта Програма цю формулу:

    If( AccountsForm.Unsaved,
        "Accounts form has unsaved changes.",
        "Contacts form has unsaved changes."
    )
    

    Це діалогове вікно відобразиться, якщо користувач змінить дані у формі "Бізнес-партнер" або потім спробує закрити програму, не зберігаючи ці зміни.

    Діалогове вікно підтвердження форми.

Ключ налаштування контрольно-вимірювальних приладів для Application Insights

Щоб експортувати журнали програм, створені системою Application Insights, потрібно настроїти інструментальний ключ для програми canvas.

  1. Відкрийте програму для редагування в Power Apps Stuido.
  2. Виберіть об’єкт «Програма » в поданні дерева навігації ліворуч.
  3. Введіть Instrumentation Key (Інструментарій ) на панелі властивостей.

Якщо дані не надсилаються в статистику додатків, зв’яжіться зі своїм Power Platform адміністратором і перевірте, чи не вимкнено статистику додатків на рівні клієнта.

Властивість «Формули»

Використовуйте іменовані формули у властивості Формули для визначення формули, яку можна буде повторно використовувати у програмі.

Властивості елементів керування у Power Apps змінюються за допомогою формул. Наприклад, щоб узгодити колір фону в програмі, можна встановити у значенні властивості Fill («Заливка») кожного екрана поширену формулу:

Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )

Якщо формула використовується у великій кількості місць, змінювати її стає складно, а також при цьому важко уникнути помилок. Натомість можна створити глобальну змінну в OnStart, щоб один раз установити колір, а потім повторно використовувати це значення в програмі:

App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

Хоча цей метод є кращим, він також залежить від виконання OnStart перед установкою значення BGColor. BGColor також може змінюватись в якомусь з куточків програми, і про це не дізнається розробник, або ж зміни може здійснювати хтось інший, і це важко відстежити.

Альтернативою є іменовані формули. Так само, як ми зазвичай записуємо control-property = expression (властивість елемента керування = вираз), можна замість цього записати name = expression (ім'я = вираз), і далі використовувати name (ім'я) усюди в програмі, щоб замінити expression (вираз). Визначення цих формул виконується у властивості Formulas (Формули).

App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

Переваги використання іменованих формул зазначено нижче.

  • Значення формули завжди доступне. Не існує залежності від моменту часу, жодна подія OnStart не повинна бути виконана перед тим, як задавати значення, і також відсутній проміжок часу, коли значення формули неправильне. Іменовані формули можуть посилатися одна на одну в будь-якому порядку, доки не створюють циклічне посилання. Їх можна розраховувати паралельно.
  • Значення формули завжди актуальне. Формула може виконувати обчислення, залежне від властивостей елемента керування або записів бази даних, і при зміненні цих значень автоматично змінюватиметься і значення формули. Це значення не потрібно оновлювати вручну, на відміну від значень змінних. І формули повторно обчислюються лише за необхідності.
  • Визначення формули є незмінним. Визначення в Формулах є єдиним джерелом правдивих відомостей, і значення не може змінюватись ніде більше у програмі. При використанні змінних існує можливість,що який-небудь фрагмент коду несподівано змінить значення, але із формулами це неможливо.
  • Можна відкласти обчислення формули. Оскільки його значення незмінне, його завжди можна обчислити, коли це необхідно, а це означає, що його не потрібно обчислювати, поки він не знадобиться. Значення формул, які не використовуються, доки не буде відображено екран screen2 програми, не буде обчислено, доки екран screen2 не стане видимим. Відкладання цієї роботи може прискорити час завантаження програми. Іменовані формули є декларативними та створюють для системи можливості оптимізації щодо того, як і коли вони обчислюватимуться.
  • Іменовані формули — це концепція Excel. Power Fx використовує концепції Excel, де це можливо, оскільки Excel добре знає велика кількість людей. Іменовані формули є еквівалентом іменованих клітинок та іменованих формул у програмі Excel, які керуються за допомогою диспетчера імен. Вони автоматично переобчислюються як електронна таблиця, так само як і властивості елемента керування.

Іменовані формули визначаються по порядку у властивості Formulas («Формули»), після кожної ставиться крапка з комою. Тип формули витікає з типу виразу, який, у свою чергу, основується на типах елементів у складі виразу та їх взаємодії. Наприклад, наведені нижче іменовані формули витягують корисну інформацію про поточного користувача з Dataverse.

UserEmail = User().Email;
UserInfo = LookUp( Users, 'Primary Email' = User().Email );
UserTitle = UserInfo.Title;
UserPhone = Switch( UserInfo.'Preferred Phone', 
                    'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
                    UserInfo.'Main Phone' );

Якщо потрібно оновити формулу UserTitle, це можна легко зробити в єдиному місці. Якщо UserPhone у програмі не використовується, ці виклики до таблиці Users (Користувачі) у Dataverse не виконуються. Немає жодних негативних наслідків після включення визначення формули, яке не використовується.

Деякі обмеження іменованих формул згадано нижче.

  • Вони не можуть використовувати функції поведінки або спричиняти побічні наслідки в програмі іншим чином.
  • Вони не можуть створювати циклічні посилання. Не дозволяється в одній програмі створювати одночасно a = b; і b = a;.

Властивість OnError

Використовуйте OnError, щоб виконувати дії при виявленні помилок. Ця функція дає загальнодоступну можливість перехопити банер про помилку, перш ніж його побачать кінцеві користувачі. Вона також може використовуватися для журналювання помилок за допомогою функції Trace або записування до бази даних або веб-служби.

Результат кожного обчислення формули перевіряється на наявність помилки. Якщо помилка є, буде обчислено OnError з такими ж самими змінними області FirstError і AllErrors, що були б, якщо уся формула була б обгорнута у функцію IfError.

Якщо значення OnError пусте, відобразиться стандартний банер про помилку із повідомленням помилки FirstError.Message. Визначення формули OnError замінює цю поведінку, тому розробник зможе обробити повідомлення про помилку, як вважає за потрібне. Поведінку за замовчуванням при використанні OnError можна отримати, якщо повторно викинути помилку, скориставшись функцією Error. Це корисно, якщо потрібно відфільтрувати або обробити в інший спосіб лише деякі помилки, а інші необхідно пропускати.

OnError не може заміняти помилки під час обчислень так, як це робить IfError. На момент виклику OnError помилка вже сталася і вже були виконані усі пов'язані обчислення формул. *OnError* керує лише звітуванням про помилки.

Формули OnError обчислюються одночасно, і можливо, що їх обчислення може накладатися на обробку інших помилок. Наприклад, якщо задати глобальну змінну на початку визначення OnError і зчитати її значення пізніше у той самій формулі, значення може змінитися. Використовуйте функцію With для створення іменованого значення, яке буде локальним для формули.

Хоча кожна помилка обробляється окремо в OnError, стандартний банер для кожної помилки окремо може не відображатися. Щоб уникнути одночасного відображення великої кількості банерів помилок, банери для помилок, що повторюються, не відображатимуться, якщо один банер для помилки вже було відображено.

Приклад

Розглянемо елемент керування Підпис і елемент керування Повзунок, зв'язані між собою наведеною формулою.

Label1.Text = 1/Slider1.Value

Елемент керування міткою та повзунком пов’язаний за формулою Label1.Text = 1/Slider1.Value.

Значення за замовчуванням для повзунка — 50. Якщо повзунок перемістити до 0, Label1 не відображатиме жодного значення, і буде показано такий банер помилки:

Повзунок перемістився на 0, що призвело до ділення на нуль помилки та банера помилки.

Розгляньмо докладно, що саме відбувається.

  1. Користувач перемістив повзунок ліворуч, і властивість Slide1.Value змінилася на 0.
  2. Label1.Text автоматично переобчислюється. Виникає ділення на нуль, і створюється помилка.
  3. У цій формулі немає IfError. Під час обчислення формули повертається помилка ділення на нуль.
  4. Label1.Text не може відобразити жодного значення через цю помилку, отже, відображається пустим.
  5. Викликається OnError Оскільки обробник відсутній, відображається стандартний банер про помилку з відомостями про помилку.

За необхідності можна також змінити формулу таким чином: Label1.Text = IfError( 1/Slider1.Value, 0 ). Як результат, не відображатиметься ані помилки, ані банера із помилкою. Значення помилки не можна змінювати з OnError, оскільки на цей момент помилка вже відбулася, і питання лише в тому, як про неї сповістити.

Якщо додати обробник OnError, він не вплине на кроки до 5, але може вплинути на спосіб сповіщення про помилку.

Trace( $"Error {FirstError.Message} in {FirstError.Source}" )

Формула App.OnError встановлена для генерації трасування.

З точки зору користувача програми завдяки обробнику виглядатиме, що жодної помилки не відбулося. Але помилку буде додано до трасування Монітора і доповнено відомостями про джерело інформації про помилку з FirstError.

Повзунок перемістився в 0, що призвело до ділення на нуль помилки, але банера помилки не було.

Якщо нам потрібно, окрім трасування, відобразити стандартний банер помилки, ми можемо повторно викинути помилку, скориставшись функцією Error після виклику Trace, точно так само, як ми робили б, якщо б виклику Trace не було, як показано нижче.

Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )

Властивість OnStart

Нотатка

Властивість OnStart може спричинити проблеми з продуктивністю під час завантаження програми. Ми створюємо альтернативи для перших двох причин для використання цієї властивості: кешування даних і встановлення значень глобальних змінних. Ми вже створили альтернативу для визначення першого екрана, який буде відображатися за допомогою Navigate. Залежно від контексту цю властивість за промовчанням можна вимкнути. Якщо вона не відображається та її потрібно використати, перевірте додаткові настройки програми, щоб увімкнути його. Також можна використати властивість OnVisible на екрані.

Властивість OnStart виконується, коли користувач запускає програму. Ця властивість часто використовується для виконання таких завдань:

  • Отримання та кешування даних у колекціях за допомогою функції Collect.
  • Настроювання глобальних змінних за допомогою функції Set.

Ця формула обчислюється перед відображенням першого екрану. Екран не завантажується, тому не можна настроювати змінні контексту функцією UpdateContext. Проте, можна передати змінні контексту за допомогою функції Navigate.

Після змінення властивості OnStart протестуйте її: наведіть курсор на об'єкт Програма в області подання дерева, вибравши три крапки (...) і натиснувши Запускати OnStart. На відміну від першого завантаження програми, наявні колекції та змінні вже встановлені. Щоб почати з порожніми колекціями, використайте функцію ClearCollect замість функції Collect.

Контекстне меню об'єкта-програми для виконання OnStart

Нотатка

  • Використання функції Navigate у властивість OnStart було списано. Наявні програми продовжуватимуть працювати. Протягом обмеженого часу її можна ввімкнути в настройках програми (доступні в розділі Списані). Проте Навігація таким чином може призвести до затримки завантаження програми, оскільки система змушує систему оцінювати OnStart перед відображенням на першому екрані. Використовуйте властивість StartScreen замість обчислення першого екрана.
  • Перемикач Списано буде вимкнено для програм, створених до березня 2021 року, в яких ви додали функцію Навігація до OnStart після березня 2021 року. Під час редагування таких програм у Power Apps Studio може з'явитися повідомлення про помилку. Увімкніть зазначений перемикач Списано, щоб очистити цю помилку.

Властивість StartScreen

Нотатка

Властивість StartScreen не відображатиметься у списку властивостей, якщо увімкнуто списаний параметр Розширений рядок формул. Щоб вимкнути Розширений рядок формул, перейдіть до області Параметри>Заплановані функції>Списані> вимкніть вимикач Розширений рядок формул, якщо потрібно використовувати властивість StartScreen.

Властивість StartScreen визначає, який екран буде спочатку відображатися. Вона оцінюється після завантаження програми та повертає відображуваний об'єкт на екрані. За замовчуванням ця властивість буде пустою, а першим екраном буде перший екран у поданні дерева Studio.

StartScreen — це властивість потоку даних, яка не може містити функції поведінки. Доступні всі функції потоку даних, зокрема застосовують такі функції та сигнали, щоб визначити, який екран спочатку відображати

  • Функція Param для зчитування параметрів, потрібних для старту програми.
  • Функція User для зчитування інформації про поточного користувача.
  • Функції LookUp, Filter, CountRows, Max та інші для зчитування з джерела даних.
  • Будь-які виклики API через з'єднувач, але будьте обережні, оскільки вона швидко відтворюється.
  • Сигнали, як-от ПідключенняКомпас і Програма.

Нотатка

Глобальні змінні та колекції, зокрема змінні, створені в OnStart, недоступні в StartScreen. Для цього існують декларативні альтернативи. Щоб надіслати відгук про це обмеження, перейдіть на форум спільноти Power Apps.

Якщо екран StartScreen повертає помилку, перший екран подання дерева Studio відображатиметься так, ніби StartScreen не встановлено. Скористайтеся функцією IfError, щоб зафіксувати помилки та переспрямувати на відповідний екран помилки.

Після змінення властивості StartScreen у Studio перевірте її, наведіть курсор на об'єкт Програма в області подання дерева, вибравши три крапки (...) і натиснувши Перейти до StartScreen. Екран зміниться так, ніби програму завантажено.

Перейти до StartScreen

Приклади

Screen9

Свідчить про те, що Screen9 має відображатися спочатку під час запуску програми.

If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )

Перевіряє, чи «режим адміністрування» Param було встановлено користувачем і використовує це для вирішення, чи потрібно спочатку відображати HomeScreen чи AdminScreen.

If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )

Перевіряє, чи є учасник конференції співробітником і спрямовує їх на відповідний екран під час запуску.

IfError( If( CustomConnector.APICall() = "Forest", 
             ForestScreen, 
             OceanScreen 
         ), 
         ErrorScreen 
)

Спрямовує програму на основі виклику API до ForestScreen або OceanScreen. Якщо API не вдається з будь-якої причини, використовується ErrorScreen.

Властивість StudioVersion

Використовуйте властивість StudioVersion , щоб відобразити або зареєструвати версію, використану Power Apps Studio для публікації програми. Це може бути корисно під час налагодження та для того, щоб переконатися, що ваш додаток було повторно опубліковано з останньою версією Power Apps Studio.

StudioVersion повертається у вигляді тексту. Формат тексту може змінюватися з плином часу, і його слід розглядати як єдине ціле; Уникайте вилучення окремих порцій.