Разберете променливите в приложенията на платното

Ако сте използвали друг инструмент за програмиране, като например Visual Basic или JavaScript, може да питате: Къде са променливите? Power Apps е малко по-различен и изисква различен подход. Вместо да се стремите към променлива, когато изграждате приложение за платно, попитайте себе си: Какво бих направил в Excel?

В други инструменти може да сте изрично извършили изчисление и да запазите резултата в променлива. Въпреки това, Power Apps и Excel автоматично преизчисляват формулите, тъй като входните данни се променят, така че обикновено няма нужда да създавате и актуализирате променливи. Като използвате този подход, когато е възможно, можете по-лесно да създадете, разберете и поддържате приложението си.

В някои случаи ще трябва да използвате променливи в Power Apps, което разширява модела на Excel чрез добавяне формули за поведение. Тези формули се изпълняват, когато например потребител избере бутон. В рамките на формула на поведение често е полезно да зададете променлива, която да се използва в други формули.

Като цяло избягвайте използването на променливи. Но понякога само променлива може да даде възможност на опита, който искате. Променливите се създават неявно и се въвеждат, когато се появяват във функции, които задават техните стойности.

Преведете Excel в Power Apps

Excel

Нека да прегледаме как работи Excel. Клетката може да съдържа стойност, като число или низ, или формула, която се основава на стойностите на други клетки. След като потребителят въведе различна стойност в клетка, Excel автоматично преизчислява всички формули, които зависят от новата стойност. Не е необходимо да правите програмиране, за да активирате това поведение.

В следващия пример, клетка A3 е зададена във формулата А1 + А2. Ако A1 или A2 се промени, A3 автоматично преизчислява, за да отрази промяната. Това поведение не изисква кодиране извън самата формула.

Анимация за преизчисляване на сумата от две числа в Excel.

Excel няма променливи. Стойността на клетка, която съдържа формула, се променя въз основа на нейния вход, но няма начин да запомните резултата от формула и да я съхранявате в клетка или на друго място. Ако промените стойността на клетката, цялата електронна таблица може да се промени и всички изчислени по-рано стойности се губят. Потребител на Excel може да копира и залепва клетки, но това е под ръчния контрол на потребителя и не е възможно с формули.

Power Apps

Приложения, които създавате в Power Apps се държат много подобно на Excel. Вместо да актуализирате клетки, можете да добавяте контроли, където искате на екрана, и да ги назовавате за използване във формули.

Например, можете да копирате поведението на Excel в приложение, като добавите контрола етикет, назован Label1 и две Въвеждане на текст контроли с имена TextInput1 и TextInput2. Ако след това зададете свойството Текст на Label1 на TextInput1 + TextInput2, той винаги ще показва сумата от каквито и числа да са TextInput1 и TextInput2 автоматично.

Изчисляване на сумата от две числа в Power Apps.

Забележете, че е избрана контролата Label1, показваща своята формула Текст в лентата с формули в горната част на екрана. Тук намираме формулата TextInput1 + TextInput2. Тази формула създава зависимост между тези контроли, точно както се създават зависимости между клетките в работна книга на Excel. Нека променим стойността на TextInput1:

Анимация за изчисляване на сумата от две числа в Power Apps.

Формулата за Label1 автоматично се преизчислява, показвайки новата стойност.

В Power Apps можете да използвате формули, за да определите не само основната стойност на контрола, но и свойствата като форматиране. В следващия пример, формула за свойството цвят на етикета автоматично ще показва отрицателни стойности в червено. Ако функцията трябва да изглежда позната от Excel:

If( Value(Label1.Text) < 0, Red, Black )

Анимация на условно форматиране.

Можете да използвате формули за голямо разнообразие от сценарии:

  • Чрез използване на GPS устройството ви, контрола на картата може да показва текущото ви местоположение с използвана формула Location.Latitude и Location.Longitude. Докато се движите, картата автоматично ще проследи вашето местоположение.
  • Други потребители могат да актуализират източници на данни. Например, други от вашия екип могат да актуализират елементи в списък. Когато опресните източник на данни, всички зависими формули се преизчисляват автоматично, за да отразяват актуализираните данни. Допълвайки примера, можете да зададете свойството Елементи на галерията към формулата Filter( SharePointList ), което автоматично ще покаже наскоро филтрирания набор от записи.

Ползи

Използването на формули за изграждане на приложения има много предимства:

  • Ако познавате Excel, познавате Power Apps. Моделът и езикът на формулите са същите.
  • Ако сте използвали други инструменти за програмиране, помислете колко код ще е необходим за изпълнение на тези примери. Във Visual Basic ще трябва да напишете манипулатор на събитието за събитието за промяна на всяко управление за въвеждане на текст. Кодът за извършване на изчислението във всеки от тях е излишен и може да излезе от синхронизиране или ще трябва да напишете обща подпрограма. Във Power Apps постигнахте всичко това с една, едноредова формула.
  • За да разберете откъде идва текстът на Label1, вие знаете точно къде да търсите: формулата в свойството Текст. Няма друг начин да повлияе на текста на тази контрола. В традиционния инструмент за програмиране всеки обработващ събитие или подпрограма може да промени стойността на етикета от всяка точка на програмата. Това може да затрудни проследяването кога и къде е променена променлива.
  • Ако потребителят промени контрола на плъзгача и след това промени мнението си, той може да промени плъзгача обратно към първоначалната му стойност. И сякаш нищо никога не се е променило: приложението показва същите контролни стойности като преди. Няма последствия за експериментиране и питане "какво да стане", точно както няма такива в Excel.

Като цяло, ако можете да постигнете ефект, като използвате формула, ще бъдете по-добре. Пуснете двигателя на формулата Power Apps работи за вас.

Знайте кога да използвате променливи

Нека променим нашата проста добавка, за да действа като старомодна машина за добавяне, с обща работа. Ако изберете бутона Добавяне, ще добавите число към текущата сума. Ако изберете бутона Изчистване, ще нулирате изпълняващата се сума до нула.

Показване Описание
Приложение с контрола за въвеждане на текст, етикет и два бутона. Когато стартира приложението, текущата сума е 0.

Червената точка представлява пръста на потребителя в полето за въвеждане на текст, където потребителят въвежда 77.
Контролът за въвеждане на текст съдържа 77 и се натиска бутона „Добавяне”. Потребителят избира бутона Добави.
Общата сума е 77, а към нея се добавят още 77. 77 се добавя към изпълняващата се обща сума.

Потребителят отново избира бутона Добави.
Общото е 154, преди да бъде изчистено. 77 отново се добавя към текущата сума, което води до 154.

Потребителят избира бутона Изчистване.
Общото се изчиства. Изпълняващата се обща сума се нулира до 0.

Нашата машина за добавяне използва нещо, което не съществува в Excel: бутон. В това приложение не можете да използвате само формули за изчисляване на текущата сума, тъй като стойността му зависи от поредица от действия, които потребителят предприема. Вместо това общата ни работа трябва да бъде записана и актуализирана ръчно. Повечето програмни инструменти съхраняват тази информация в променлива.

Понякога ще се нуждаете от променлива, за да може приложението ви да се държи така, както искате. Но подходът идва с предупреждения:

  • Трябва ръчно да актуализирате текущата сума. Автоматичното преизчисляване няма да го направи вместо вас.
  • Текущата сума вече не може да бъде изчислена въз основа на стойностите на други контроли. Зависи от това колко пъти потребителят е избрал бутона Добави и каква стойност беше в контрола за въвеждане на текст всеки път. Потребителят въведе ли 77 и избра ли двукратно Добави или посочи 24 и 130 за всяко от допълненията? Не можете да определите разликата, след като общият брой е достигнал 154.
  • Промените в общата сума могат да идват от различни пътища. В този пример и двата бутона Добави и Изчистване могат да актуализират общата сума. Ако приложението не се държи така, както очаквате, кой бутон причинява проблема?

Използвайте глобална променлива

За да създадем нашата машина за добавяне, се нуждаем от променлива, която да държи текущата сума. Най-простите променливи за работа в Power Apps са глобални променливи.

Как работят глобалните променливи:

  • Задавате стойността на глобалната променлива с функцията Задаване. Set( MyVar, 1 ) задава глобалната променлива MyVar на стойност 1.
  • Използвате глобалната променлива, като сравните името, използвано с функцията Задаване. В такъв случай, MyVar ще върне 1.
  • Глобалните променливи могат да съдържат всяка стойност, включително низове, числа, записи и таблици.

Нека да възстановим нашата машина за добавяне с помощта на глобална променлива:

  1. Добавете контрола за въвеждане на текст с име TextInput1 и два бутона с име Button1 и Button2.

  2. Задайте свойството Текст на Button1 на „Добави” и задайте свойството Текст на Button2 на „Изчистване”.

  3. За да актуализирате текущата сума винаги, когато потребителят избере Добави бутон, задайте свойството OnSelect на тази формула:

    Set( RunningTotal, RunningTotal + TextInput1 )

    Самото съществуване на тази формула установява RunningTotal като глобална променлива, която притежава число заради + оператора. Можете да се позовавате на RunningTotal навсякъде в приложението. Всеки път, когато потребителят отвори това приложение, RunningTotal има начална стойност празно.

    Първият път, когато потребителят избира бутона Добави и се изпълни Задаване, RunningTotal се задава на стойността RunningTotal + TextInput1.

    Свойството OnSelect на бутона „Добавяне” е настроено на функция „Задаване”.

  4. За да Зададете текущата сума на 0, когато потребителят избере бутон Изчистване, задайте свойството й OnSelect на тази формула:

    Set( RunningTotal, 0 )

    Свойството OnSelect на бутона „Изчистване” е настроено на функция „Задаване”.

  5. Добавете контрола Етикет и задайте свойството й Текст на RunningTotal.

    Тази формула автоматично ще бъде преизчислена и ще покаже на потребителя стойността на RunningTotal, тъй като тя се променя въз основа на бутоните, които потребителят избира.

    Свойството на текста на етикета е зададено на името на променливата.

  6. Визуализирайте приложението и имаме нашата машина за добавяне, както е описано по-горе. Въведете число в текстовото поле и натиснете бутона Добави няколко пъти. Когато сте готови, върнете се към създаването на опит с помощта на клавиша Esc.

    Контролът за въвеждане на текст съдържа стойност, а етикетът съдържа текущата сума.

  7. За да покажете стойността на глобалната променлива, направете едно от следните неща:

    • Ако използвате версията за предварителен преглед на, изберете Power Apps Studio Променливи в менюто за създаване на приложения.

      Меню "Променливи и колекции".

    • Ако използвате класическата версия на Power Apps Studio, изберете менюто Файл и изберете Променливи в левия екран.

  8. За да покажете всички места, където променливата е дефинирана и използвана, изберете я под Глобални променливи.

    Списък на местоположението, където се използва променлива.

Типове променливи

Power Apps има три типа променливи:

Тип променливи Scope Описание Функции, които установяват
Глобални променливи App Най-лесно за използване. Съдържа число, текстов низ, булев, запис, таблица и т.н., които могат да бъдат посочени от всяко място в приложението. Задай
Контекстуални променливи Екран Чудесно за предаване на стойности на екран, подобно на параметри на процедура на други езици. Може да се направи препратка само от един екран. UpdateContext
Навигиране
Колекции App Съдържа таблица, която може да се посочи от всяко място в приложението. Позволява да се променя съдържанието на таблицата, а не да се задава като цяло. Може да се запише на локалното устройство за по-късна употреба. Collect
ClearCollect

Създаване и премахване на променливи

Всички променливи се създават неявно, когато се появят във функция Задаване, UpdateContext, Навигация, Събиране или ClearCollect. За да декларирате променлива и нейния тип, трябва да я включите само в някоя от тези функции навсякъде в приложението си. Нито една от тези функции не създава променливи; те само запълват променливи със стойности. Никога не декларирате променливи изрично, както бихте могли да използвате в друг инструмент за програмиране, а цялото въвеждане е имплицитно от използване.

Например, може да имате управление с бутони с OnSelect формула равна на Set( X, 1 ). Тази формула установява х като променлива с вид число. Можете да използвате х във формули като число и тази променлива има стойност от празно, след като отворите приложението, но преди да изберете бутона. Когато изберете бутона, вие давате на х стойността 1.

Ако сте добавили друг бутон и сте задали свойството OnSelect на Set( X, "Hello" ), ще възникне грешка, тъй като типът (текстов низ) не съвпада с типа предишен Задаване (число). Всички неявни дефиниции на променливата трябва да бъдат съгласувани по тип. Отново всичко това се случи, защото споменахте х във формули, а не защото някоя от тези формули действително беше пусната.

Премахвате променлива, като премахвате всички функции Задаване, UpdateContext, Навигация, Събиране или ClearCollect, които имплицитно установяват променливата. Без тези функции променливата не съществува. Трябва също да премахнете всички препратки към променливата, защото те ще доведат до грешка.

Променлив живот и начална стойност

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

Можете да съхранявате съдържанието на променлива в източник на данни, като използвате функции Корекция или Събиране. Можете също да съхранявате стойности в колекции на локалното устройство, като използвате функцията SaveData.

Когато потребителят отвори приложението, всички променливи имат начална стойност празно.

Четене на променливи

Използвате името на променливата, за да прочетете нейната стойност. Например, можете да определите променлива с тази формула:

Set( Radius, 12 )

Тогава можете просто да използвате радиус навсякъде, където можете да използвате номер, и той ще бъде заменен с 12:

Pi() * Power( Radius, 2 )

Ако дадете контекстна променлива със същото име като глобална променлива или колекция, контекстната променлива има предимство. Въпреки това, все още можете да препращате към глобалната променлива или колекция, ако използвате оператора за пояснение[@Radius].

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

Нека да разгледаме как ще бъде създадена нашата машина за добавяне, използвайки контекстна променлива вместо глобална променлива.

Как работят контекстовите променливи:

  • Вие неявно установявате и задавате контекстни променливи, като използвате функцията UpdateContext или Навигация. Когато приложението се стартира, първоначалната стойност на всички контекстуални променливи е празно.
  • Актуализирате контекстните променливи със записи. В други инструменти за програмиране обикновено използвате "=" за възлагане, както в "x = 1". За променливи на контекста използвайте { x: 1 } вместо това. Когато използвате контекстна променлива, използвайте името й директно без синтаксиса на записа.
  • Можете също да зададете контекстна променлива, когато използвайте функцията Навигация за показване на екран. Ако мислите за екран като за някаква процедура или подпрограма, този подход наподобява преминаването на параметри в други инструменти за програмиране.
  • С изключение на Навигация променливите на контекста са ограничени до контекста на един екран, откъдето те получават своето име. Не можете да ги използвате или зададете извън този контекст.
  • Контекстуалните променливи могат да съдържат всяка стойност, включително низове, числа, записи и таблици.

Нека да възстановим нашата машина за добавяне с помощта на контекстуална променлива:

  1. Добавете контрола за въвеждане на текст с име TextInput1 и два бутона с име Button1 и Button2.

  2. Задайте свойството Текст на Button1 на „Добави” и задайте свойството Текст на Button2 на „Изчистване”.

  3. За да актуализирате текущата сума винаги, когато потребителят избере Добави бутон, задайте свойството OnSelect на тази формула:

    UpdateContext( { RunningTotal: RunningTotal + TextInput1 } )

    Самото съществуване на тази формула установява RunningTotal като контекстуална променлива, която притежава число заради + оператора. Можете да се позовавате на RunningTotal навсякъде в този екран. Всеки път, когато потребителят отвори това приложение, RunningTotal има начална стойност празно.

    Първият път, когато потребителят избира бутона Добави и се изпълни UpdateContext, RunningTotal се задава на стойността RunningTotal + TextInput1.

    OnSelect свойство на бутона „Добавяне” с updatecontext.

  4. За да Зададете текущата сума на 0, когато потребителят избере бутон Изчистване, задайте свойството й OnSelect на тази формула:

    UpdateContext ( {RunningTotal: 0 })

    Отново, UpdateContext се използва с формулата UpdateContext( { RunningTotal: 0 } ).

    OnSelect свойство на бутона „Изчистване” с updatecontext.

  5. Добавете контрола Етикет и задайте свойството й Текст на RunningTotal.

    Тази формула автоматично ще бъде преизчислена и ще покаже на потребителя стойността на RunningTotal, тъй като тя се променя въз основа на бутоните, които потребителят избира.

    Свойство на текста на етикета.

  6. Визуализирайте приложението и имаме нашата машина за добавяне, както е описано по-горе. Въведете число в текстовото поле и натиснете бутона Добави няколко пъти. Когато сте готови, върнете се към създаването на опит с помощта на клавиша Esc.

    Контролата за въвеждане на текст показва стойност, а етикетът показва текущата обща сума.

  7. Можете да зададете стойността на контекстна променлива, докато навигирате до екран. Това е полезно за преминаване на "контекст" или "параметри" от един екран на друг. За да демонстрирате тази техника, поставете екран, поставете бутон и задайте него OnSelect свойството на тази формула:

    Navigate( Screen1, None, { RunningTotal: -1000 } )

    Свойство OnSelect на бутона.

    Задръжте клавиша Alt, докато изберете този бутон, за да се покаже Screen1 и да зададете променливата на контекста RunningTotal на -1000.

    Screen1 е отворен.

  8. За да покажете стойността на контекстната променлива, направете едно от следните неща:

    • Ако използвате версията за предварителен преглед на, изберете Power Apps Studio Променливи в менюто за създаване на приложения.

    • Ако използвате класическата версия на Power Apps Studio, изберете менюто Файл и след това изберете Променливи в левия екран.

  9. За да покажете къде е дефинирана и използвана контекстната променлива, изберете я под Контекстни променливи.

Използване на колекция

И накрая, нека да разгледаме създаването на нашата машина за добавяне с колекция. Тъй като колекция съдържа таблица, която е лесна за модифициране, ние ще направим тази машина за добавяне да запази "хартиена лента" на всяка стойност, тъй като те са въведени.

Как работят колекциите:

  • Създайте и задайте колекции с помощта на функцията ClearCollect. Можете да използвате функцията събиране вместо това, но ефективно ще изисква друга променлива, вместо да заменя старата.
  • Колекцията е вид източник на данни и, следователно, таблица. За достъп до единична стойност в колекция, използвайте функцията Първо и извлечете едно поле от получения запис. Ако сте използвали единична стойност с ClearCollect, това ще бъде поле стойност, както в този пример:
    First( VariableName ).Value

Нека пресъздадем нашата машина за добавяне с помощта на колекция:

  1. Добавете контрола за въвеждане на текст с име TextInput1 и два бутона с име Button1 и Button2.

  2. Задайте свойството Текст на Button1 на „Добави” и задайте свойството Текст на Button2 на „Изчистване”.

  3. За да актуализирате текущата сума винаги, когато потребителят избере Добави бутон, задайте свойството OnSelect на тази формула:

    Collect( PaperTape, TextInput1.Text )

    Самото съществуване на тази формула установява PaperTape като колекция, която съдържа таблица с една колона от текстови низове. Можете да се позовавате на PaperTape навсякъде в това приложение. Всеки път, когато потребителят отвори това приложение, PaperTape е празна таблица.

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

    OnSelect свойство на бутона „Добавяне” с collect.

  4. За да изчистите хартиената лента, когато потребителят избере бутон Изчистване, задайте свойството й OnSelect на тази формула:

    Clear( PaperTape )

    OnSelect свойство на бутона „Изчистване” с clear.

  5. За да покажете текущата сума, добавете етикет и задайте свойството му Текст на тази формула:

    Sum( PaperTape, Value )

    Свойство на текста на етикета.

  6. За да стартирате машината за добавяне, натиснете F5, за да отворите Преглед, въведете числа в контрола за въвеждане на текст и изберете бутони.

    Контролът за въвеждане на текст показва стойност, а етикетът показва текущата сума.

  7. За да се върнете към работното пространство по подразбиране, натиснете клавиша Esc.

  8. За да покажете хартиената лента, поставете контролата Таблица с данни и задайте свойството й Елементи на тази формула:

    PaperTape

    В десния прозорец изберете Редактиране на полета и след това изберете Добавяне на поле, изберете колоната Стойност и след това изберете Добавяне, за да се покаже.

    Таблица с данни, която показва стойностите, добавени към колекцията.

  9. За да видите стойностите във вашата колекция, направете едно от следните неща:

    • Ако използвате версията за предварителен преглед на, изберете Променливи в менюто за създаване на Power Apps Studio приложения и след това изберете Колекции .

    • Ако използвате класическата версия на Power Apps Studio, изберете Колекции в менюто Файл .

  10. За да съхранявате и изтегляте колекцията си, добавете две допълнителни бутони за управление и задайте техните свойство Текст към Зареждане и Записване. Задайте свойството OnSelect на бутона Зареждане на тази формула:

    Clear( PaperTape ); LoadData( PaperTape, "StoredPaperTape", true )

    Първо трябва да изчистите колекцията, защото LoadData ще добави запаметените стойности в края на колекцията.

    Свойство OnSelect на бутона „Зареждане”.

  11. Задайте свойството OnSelect на бутона Записване на тази формула:

    SaveData( PaperTape, "StoredPaperTape" )

    Свойство OnSelect* на бутона „Записване”.

  12. Прегледайте отново, като натиснете клавиша F5, въведете числа в контрола за въвеждане на текст и изберете бутони. Изберете бутона Записване. Затворете и презаредете приложението и изберете бутона Зареждане за презареждане на вашата колекция.

Бележка

Функциите SaveData и LoadData работят в Power Apps Mobile, но не на Power Apps Studio или уеб плейъра за Power Apps.

Бележка

Можете ли да ни споделите повече за езиковите си предпочитания за документацията? Попълнете кратко проучване. (имайте предвид, че това проучване е на английски език)

Проучването ще отнеме около седем минути. Не се събират лични данни (декларация за поверителност).