Типове данни

Информацията тече през Power Fx в малки, отделни стойности, като например клетките на електронна таблица. Например данните в поле за рожден ден и поле за годишнина преминават през него като стойност за дата , която включва годината, месеца и деня. Power Fx форматира тези стойности, ограничава въвеждането до това, което е подходящо за всяка, и споделя стойностите с база данни. Рождените дни и годишнините може да се различават от хората, но системата ги обработва по същия начин. В такъв случай, Дата е пример за тип данни.

Тази статия обяснява всеки тип данни в Power Fx, как те работят и как се съпоставят с външни източници на данни.

Тип на данни Описание Примери
Булева Стойност вярно или false. Можете да го използвате директно в "Ако", "Филтър" и други функции без сравнение. верен
Избор Избор от набор от опции, подкрепени с номер. Този тип данни комбинира локализиращ се текстов етикет с числова стойност. Етикетът се появява в приложението, а числовата стойност се съхранява и използва за сравнения. Функцията Type поддържа този тип данни, ако използвате екземпляр на поле за избор по име. ThisItem.OrderStatus
Цвят Цветова спецификация, която включва алфа канал. Цвят.Червен
ColorValue( "#102030" )
RGBA( 255; 128; 0; 0,5 )
Валута Валутна стойност, съхранена в число с плаваща запетая. Стойностите на валутата са същите като числовите стойности с опциите за форматиране на валута. Функцията Type не поддържа типа данни "Валута" . 123
4.56
Дата Дата без час в часовата зона на потребителя на приложението. Дата( 2019, 5, 16 )
ДатаЧас Дата с час в часовата зона на потребителя на приложението. DateTimeValue( "16 май, 2019 1:23:09 PM" )
Десетичен Число с висока точност, операции с основа 10 и ограничен диапазон. 123
Десетичен ( "1.2345" )
Динамична (преди UntypedObject) Типът на стойността е динамичен и може да се различава по време на изпълнение. Динамична стойност може да бъде всеки съществуващ тип и може да бъде преобразувана в съвместими типове с помощта на функции като Boolean(), Value(), Table()и т.н. За повече информация вижте Динамични стойности и Работа с JSON. ParseJSON("{ ""Поле"" : 1234 }"). Поле
Плавам Номер със стандартна прецизност, операции с основа 2 и широк обхват. 123
8.903Е121
1.234д-200
GUID Глобален еднозначен идентификатор. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Хипервръзка Текстов низ, съдържащ хипервръзка. "https://powerapps.microsoft.com"
Изображение Текстов низ на идентификатор на универсален ресурс (URI) към изображение в .jpeg, .png, .svg, .gifили друг общ формат на уеб изображение. Функцията Type не поддържа типа данни "Изображение" . MyImage добавен като ресурс на приложението
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Медии URI текстов низ към видео или аудио запис. Функцията Type не поддържа типа данни "Мултимедия" . MyVideo е добавен като ресурс на приложението
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Номер Псевдоним за Decimal (повечето Power Fx хостове) или Float (приложения за платно). Ако можете да използвате някое от различните числа за дадена ситуация, използвайте "Число" за максимална съвместимост. 123
0.0123
1е4
Запис Запис от стойности на данните. Този съставен тип данни съдържа екземпляри на други типове данни, изброени в тази статия. За повече информация вижте Работа с таблици. Функцията Type поддържа този тип данни, ако използвате екземпляр на запис. { Фирма: "Нортуинд Трейдърс",
Персонал: 35,
Организация с нестопанска цел: false }
Референтен запис Препратка към запис в таблица. Тези препратки често се използват с полиморфни справки. За повече информация вижте Работа с препратки. Функцията Type не поддържа този тип данни. Първо (сметки). Собственик
Маса Таблица със записи. Всички записи трябва да имат едни и същи имена на полета и типове данни, а пропуснатите полета се третират като празни. Този съставен тип данни съдържа екземпляри на други типове данни, изброени в тази статия. За повече информация вижте Работа с таблици. Функцията Type поддържа този тип данни, ако използвате екземпляр на таблица. Таблица ( { Собствено име: "Сидни",
Фамилно име: "Хига" },
{ FirstName: "Nancy",
Фамилно име: "Андерсън" } )
Текст Текстов низ на Unicode. "Здравей, свят"
Час Час без дата в часовата зона на потребителя на приложението. Време( 11, 23, 45 )
Невалидни Използва се само от функции, дефинирани от потребителя, което показва, че дадена функция няма тип връщане. Функцията Type не поддържа този тип данни. Въпреки че дадена функция няма върнат тип или стойност, тя винаги може да върне грешка. Hi(): Void = { Notify( "Здравей!" ) }
Да/Не Избор от набор от две опции, подкрепени с булева стойност. Този тип данни комбинира локализиращ се текстов етикет с булева стойност. Етикетът се появява в приложението, а булевата стойност се съхранява и използва за сравнения. Функцията Type поддържа този тип данни, ако използвате екземпляр на поле " Да/не " по име. Този артикул.Облагаем

Много от тези типове данни са сходни и имат едни и същи базови представяния, като например поле за хипервръзка , което се третира като текст. Допълнителните типове данни осигуряват по-добри изживявания по подразбиране във формуляри и други контроли.

Празно

Всички типове данни могат да имат стойност "празно " (няма стойност). Терминът "нула" често се използва в бази данни за тази концепция.

Използвайте функцията Blank с функцията Set или Patch за задаване на променлива или поле на празно. Например Set( x, Blank() ) премахва стойността в глобалната променлива x.

Проверка за празна стойност с функцията IsBlank . Заменете възможни стойности празно с не-празни стойности чрез използване на функцията Coalesce.

Тъй като всички типове данни поддържат празни стойности, типовете данни "Булева" и "Две" имат три възможни стойности.

Всички четири от тези типове данни са базирани на текстов низ на Unicode.

Вграден текст

Вградените текстови низове във формула са затворени в двойни кавички. Използвайте две двойни кавички заедно, за да представите една двойна кавичка в текстов низ. Например, използвайки следната формула в свойството OnSelect на контролата бутон:

Notify( "Jane said ""Hello, World!""" )

Връща банер, когато бутонът е натиснат, където първата и последната двойна кавичка се пропускат (тъй като отделят текстовия низ) и повтарящите се двойни кавички около Hello, World! се заменят с една двойна кавичка:

изскача известие със съобщението Джейн каза „Здравей, свят”.

Единичните кавички се използват за имена на идентификатор, които съдържат специални символи и нямат специално значение в текстов низ.

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

Използвайте интерполация на низове, за да вградите формули в текстов низ. Този подход често е по-лесен за работа и визуализиране на изхода, отколкото използването на функцията Concatenate or & operator.

Поставете пред текстовия низ знак за долар $ и оградете формулата, която ще бъде вградена, с фигурни скоби { }. За да включите фигурна скоба в текстовия низ, използвайте повтарящи се фигурни скоби: {{ или }}. Интерполацията на низ може да се използва навсякъде, където може да се използва стандартен текстов низ.

Например, разгледайте тази формула с глобални променливи Ябълки настроени на 3 и Банани настроени на 4:

$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."

Тази формула връща текстовия низ Имаме 3 ябълки, 4 банана, което прави общо 7 плода. Променливите Ябълки и Банани са вмъкнати в текста, като заместват къдравите скоби, заедно с резултата от математическата формула Ябълки+Банани. Интервалите и другите знаци около фигурните скоби се запазват такива, каквито са.

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

$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!"

Ако за NickName е зададено "Joe", тази формула създава текстовия низ Welcome Joe, it's great to meet you!. Но ако NickName е празно, а FirstName е "Joseph", тогава вместо това тази формула създава Скъпи Джоузеф, приятно ми е да се запознаем!.

Интерполацията на низ може да включва стандартни текстови низове във вградената формула. Например, ако не са предоставени нито NickName, нито FirstName, все пак можем да предоставим "Friend" като заместител:

$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"

Интерполациите на низове могат дори да бъдат вложени. Разгледайте този пример, в който първото, средното и фамилното име са обединени в поздрав. Дори ако една или две от тези стойности са празни, правилният брой интервали се запазват между частите с имена. Ако не е предоставена нито една от частите, интерполацията на вътрешния низ ще се свие до празен низ и ще бъде заменена от функцията Coalesce от „Приятел“.

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Собствено В средата Последно Result
John Qunicy Doe Welcome John Quincy Doe!
John интервал Doe Welcome John Doe!
интервал интервал Doe Welcome Doe!
интервал интервал интервал Welcome Friend!

Нови редове

Вградените текстови низове могат да съдържат нови редове. Например задайте следното свойство Text на контрола Label за следното:

"Line 1
Line 2
Line 3"

Тази формула води до три реда, показани в контролата за етикети:

Вграден текстов низ и контрола на етикета, показващ три реда с ред 1, ред 2 и ред 3.

Новите редове също се поддържат с интерполация на низове:

$"Line {1}
Line {1+1}
Line {1+1+1}"

Което води до същия резултат:

Формула за интерполация на низове и контрола на етикета, показващи три реда с ред 1, ред 2 и ред 3.

Изображения и медийни ресурси

Чрез менюто файл, можете да добавите изображения, видео и аудио файлове като ресурси на приложението. Името на импортирания файл става името на ресурса в приложението. На тази графика логото на Northwind Traders е добавено към приложението:

Ресурс на Northwind.

За да използвате този ресурс в приложение, посочете го в свойството Изображение на контролата Изображение:

Снимка на Northwind.

URI за изображения и други носители

Можете да копаете малко по-дълбоко в последния пример, като зададете свойството Текст на контрола етикет на nwindlogo. Етикетът показва текстов низ:

Текст на Northwind.

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

Например, свойството Изображение на контрола върху изображението приема не само ресурси на приложението, но и връзки към изображения в мрежата, като например „https://northwindtraders.com/logo.jpg"”. Свойството приема и вградени изображения, които използват схема на URI на данни, както в този пример:

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"

Този URI показва мащабирана версия на два лилави диаманта:

Двойни диаманти.

Можете да покажете най-новото изображение, заснето в контролата Камера, ако зададете свойството Изображение на контрола на изображението към свойството снимка на управлението на камерата. Приложението съхранява изображението в паметта и свойството снимка на управлението на камерата връща URI препратка към изображението. Например, можете да направите снимка и свойството снимка на камерата може да върне "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".

Използвате URI за препратка към изображение или друг медиен файл, съхраняван в база данни. По този начин приложението не извлича действителните данни, докато не е необходимо. Например прикачен файл в Microsoft Dataverse таблицата може да се върне "appres://datasources/Contacts/table/..." Както в примера за камера, можете да покажете това изображение, като зададете Изображение свойство на контрола на изображението към тази препратка, която извлича двоичните данни.

Когато запишете тип медия данни, като изображение, в база данни, приложението изпраща действителното изображение или медийни данни, а не URI референцията.

Ограничения за размер

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

Двоичните данни, на които се отнасят тези типове данни, също нямат предварително зададено ограничение по размер. Например, изображение, заснето чрез контролата на камерата, което се нарича "appres://...", може да бъде толкова голямо и с висока разделителна способност, колкото може да събере камерата на устройството. Разделителната способност, честотата на кадрите и други атрибути на мултимедийните файлове не са ограничени от типа данни, но специфичните контроли за възпроизвеждане и заснемане на медиите могат да имат свои собствени ограничения.

Въпреки това, всички размери на данни подлежат на количеството налична памет в приложението. Браузърите, работещи на настолен компютър, обикновено поддържат повече от 100 мегабайта данни. Обемът на наличната памет на устройство като телефон може да е далеч по-нисък, обикновено в диапазона 30-70 мегабайта. За да определите дали приложението ви работи в рамките на тези ограничения, тествайте често срещаните сценарии на всички устройства, на които трябва да се изпълнява.

Като най-добра практика, съхранявайте данни в паметта само толкова дълго, колкото е необходимо. Качете изображения в база данни веднага щом можете; изтегляне на изображения само когато потребителят на приложението ги поиска.

Номера

Бележка

Power Apps поддържа float само днес и това е типът на всички числа. Десетичната поддръжка ще бъде добавена скоро.

Power Fx поддържа два вида числа: Decimal и Float (със синоними Number и Currency ).

Десетичната е най-подходяща за повечето бизнес изчисления. Той може точно да представи числа с основа 10, което означава, че 0.1 може да бъде точно представено и ще избегне грешки при закръгляване по време на изчисленията. Той има достатъчно голям обхват за всякакви бизнес нужди, до 1028 с до 28 цифри точност. Десетичният е числовият тип данни по подразбиране за повечето Power Fx хостове, използван, ако човек просто пише 2*2.

Float е най-подходящ за научни изчисления. Той може да представя числа в по-голям диапазон, до 10308. Точността е ограничена до 15 цифри след десетичния знак, а математиката се базира на основа 2, така че не може да представя някои често срещани десетични стойности точно. Float също има по-висока производителност и е предпочитана, ако това е фактор и точност не е от решаващо значение.

Десетични числа

Десетичният тип данни най-често използва десетичния тип данни .NET. Някои хостове, като например колони с формули на Dataverse, които се изпълняват в SQL Server, използват десетичния тип данни на SQL Server.

Decimal прави математика по начина, по който сте учили в училище, използвайки цифри с основа 10, важно, за да се избегнат грешки при закръгляване от много малки разлики, които могат да се натрупат при използване на математика с основа 2 (както се използва от Float).

Диапазонът е от положителен 79,228,162,514,264,337,593,543,950,335 до отрицателен 79,228,162,514,264,337,593,543,950,335. Десетичният разделител може да бъде поставен навсякъде в тези числа, осигурявайки до 28 цифри точност и все пак да бъде точно представен. Например, 79,228,162,514,264.337593543950335 може да бъде точно представено, както и 7.9228162514264337593543950335.

Числа с плаваща запетая

Типът данни Float , известен също като число или валута, използва стандарта с плаваща запетая IEEE 754 с двойна точност. Този стандарт осигурява много голям диапазон от числа, в които да се работи, от –1.79769 х 10308 до 1.79769 x 10308. Най-малката стойност, която може да бъде представена, е 5 x 10–324.

Float може точно да представлява цели числа (или цели числа) между –9,007,199,254,740,991 (–(253 – 1)) и 9,007,199,254,740,991 (253 – 1) включително. Този диапазон е по-голям от 32-битовите (или 4-байтовите) цели типове данни, които често използват базите данни. Приложенията за платно обаче не могат да представляват 64-битови (или 8-байтови) цели типове данни. Може да искате да съхраните числото в текстово поле или да използвате изчисляема колона, за да направите копие на числото в текстово поле, така че да се съпоставя в текстов тип данни приложението за платно. По този начин можете да задържите, покажете и въведете тези стойности и да ги сравните, за да определите дали са равни; обаче не можете да извършвате числени изчисления върху тях в тази форма.

Аритметиката с плаваща запетая е приблизителна, така че понякога може да даде неочаквани резултати с много документирани примери. Може да очаквате формулата 55/100 * 100 да върне точно 55 и (55/100 * 100) - 55 да върне точно нула. Последната формула обаче връща 7.1054 х 10-15, което е много малко, но не е нула. Тази малка разлика обикновено не създава проблем и приложението я закръгля, когато показва резултата. Въпреки това, малките разлики могат да се съчетаят в последващи изчисления и изглежда да дадат грешен отговор.

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

Стандартни настройки и реализации

Бележка

Power Apps поддържа float само днес и това е типът на всички числа. Десетичната поддръжка ще бъде добавена скоро.

Повечето Power Fx хостове използват Decimal по подразбиране. Наличието на това по подразбиране означава:

  • Литерални числа във формули. Числото 1.234 се интерпретира като десетична стойност. Например формулата 1.234 * 2 интерпретира 1.234 и 2 като десетичен и връща десетичен резултат.
  • Функция на стойността. Value( "1.234" ) връща десетична стойност. Например във формулата Value( "1.234" ) * 2 функцията Value интерпретира съдържанието на текстовия низ "1.234" като десетичен знак.

За работа със стойности на Float се използва функцията Float . Разширявайки нашия пример, Float( 1.234 ) преобразува десетичната1.234 запетая в плаваща. Float може да се използва и като заместител на Value за преобразуване на низ, съдържащ число с плаваща запетая, като например Float( "1.234" )стойност с плаваща запетая, която е необходима, ако числото не може да бъде представено като десетична запетая.

В обобщение:

Използване Десетичен Плавам
Литерални числа във формули 1.234 Float( 1.234 )
Float( "1.234" )
Преобразуване от текстов низ Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
Преобразуване между числови типове Decimal( float ) Float( decimal )
Преобразуване в текстов низ Text( decimal ) Text( float )

Смесване на числови типове

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

Например, помислете за следното изчисление, като използвате pac power-fx repl след инсталирането на Power Platform CLI. Тъй като и двете числа са десетични, изчислението се извършва в десетична запетая и резултатът запазва пълната точност:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Ако вместо това вторият операнд бъде променен на Float , тогава цялото изчисление ще бъде направено във Float и малката дробна част ще бъде загубена:

>> 1.0000000000000000000000000001 * Float(2)
2

Дата, час и дата DateTime

Часови зони

Стойностите за дата/час попадат в следните категории:

  • Местен потребител: Тези стойности се съхраняват в UTC (координирано универсално време), но часовата зона на потребителя на приложението влияе върху начина, по който приложението показва тези стойности и начина, по който потребителят ги посочва. Като пример, един и същ момент се появява по-различно за потребителя в Канада, отколкото за потребителя в Япония.
  • Независимо от часовата зона: Приложението показва тези стойности по един и същи начин, а потребителят на приложението ги посочва по един и същ начин, независимо от часовата зона. Същият момент се появява по същия начин за потребителя в Канада, както за потребителя в Япония. Авторите на приложения, които не очакват приложенията им да се стартират в различни часови зони, използват тези стойности, защото като цяло те са по-прости.

Тази таблица показва някои примери:

Тип дата/час Стойност, съхранявана в базата данни Показана стойност и въведена 7 часа западно от UTC Показана стойност и въведена 4 часа източно от UTC
Локален потребител неделя,май19,2019
4:00 ч.
събота,май18,2019
21:00 ч.
неделя,май19,2019
8:00 ч.
Независим от часовата зона неделя,май19,2019
4:00 ч.
неделя,май19,2019
4:00 ч.
неделя,май19,2019
4:00 ч.

За дата/час на Местно време на потребителя приложенията за платно използват часовата зона на браузъра или устройството, но задвижваните от модели приложения използват настройката на потребителя в Dataverse. Тези настройки обикновено си съответстват, но резултатите се различават, ако тези настройки се различават.

Използвайте функциите DateAdd и TimeZoneInformation за преобразуване на местно време в UTC и обратно. Вижте примерите в края на документацията за тези функции.

Числови еквиваленти

Приложенията за платно държат и изчисляват всички стойности за дата/време, независимо от Местно време на потребителя или Часовата зона е независима в UTC. Приложението превежда стойностите въз основа на часовата зона на потребителя на приложението, когато ги показва и когато потребителят на приложението ги посочва.

Когато приложението за платно чете стойността Часовата зона е независима от източник на данни или записва такава стойност в източник на данни, приложението автоматично коригира стойността, за да компенсира часовата зона на потребителя на приложението. След това приложението третира стойността като стойност на UTC, съответстваща на всички други стойности за дата / час в приложението. Поради това обезщетение, първоначалната стойност Часовата зона е независима се появява, когато приложението коригира стойността на UTC за часовата зона на потребителя на приложението.

Можете да наблюдавате това поведение по-отблизо, като използвате функцията Value за достъп до основната цифрова стойност за дата / време. Тази функция връща стойността дата / час като брой милисекунди от 1 януари, 1970 00:00:00.000 UTC.

Тъй като всяка стойност на дата / час се съхранява в UTC, формулата Value( Date( 1970, 1, 1 ) ) няма да върне нула в повечето части на света, защото функцията Date връща дата в UTC. Например, формулата би върнала 28,800,000 във часова зона, която е изместена от UTC с осем часа. Това число отразява броя милисекунди за осем часа.

Връщайки се към нашия пример:

Тип дата/час Стойност, съхранявана в базата данни Показана стойност и въведена 7 часа западно от UTC Функцията за стойност връща
Локален потребител неделя,май19,2019
4:00 ч.
събота,май18,2019
21:00 ч.
1,558,238,400,000
(неделя,май19,2019
4:00 AM UTC)
Независим от часовата зона неделя,май19,2019
4:00 ч.
неделя,май19,2019
4:00 ч.
1,558,263,600,000
(неделя,май19,2019
11:00 Ч. UTC)

Преобразуване на Unix времена

Времето в Unix отразява броя секунди от 1 януари, 1970 00:00:00 UTC. Тъй като приложенията за платно използват милисекунди вместо секунди, можете да конвертирате между двете, като умножите или разделите на 1000.

Например времето на Unix показва 9 септември 2001 г. в 01:46:40 UTC като 1000000,000. За да покажете тази стойност на дата / час в приложение за платно, умножете това число по 1000, за да го преобразувате в милисекунди, и след това го използвате във функцията Text. Формулата Text( 1000000000 * 1000, DateTimeFormat.UTC ) връща низ 2001-09-09T01:46:40.000Z.

Тази функция обаче се връща Събота, 8 септември, 2001 18:46:40, ако използвате DateTimeFormat.LongDateTime24 формат във часова зона, която е отместена -7 часа от UTC (7 часа западно от UTC). Този резултат показва стойността DateTime правилно въз основа на местната часова зона.

За да преобразувате в Unix време, разделете резултата от стойност от 1000:
RoundDown( Value( UnixTime ) / 1000, 0 )

Ако имате нужда от Unix време в стойността Дата за допълнителни изчисления или показване в рамките на Power Apps, използвайте тази формула:
DateAdd( Date( 1970,1,1 ), UnixTime, секунди )

SQL Server

SQL Server има Datetime, Datetime и други типове данни за дата / час, които не включват компенсиране на часовата зона и не посочват в коя часова зона са. Приложенията за платно приемат, че тези стойности се съхраняват в UTC и ги третират като Местно време на потребителя. Ако стойностите са предназначени да бъдат независими от часовата зона, коригирайте преводите по UTC, като използвате функцията TimeZoneOffset.

Приложенията за платно използват включената информация за часовата зона в полетата Datetimeoffset при преобразуване на стойност във вътрешното представяне на UTC на приложението. Приложенията винаги използват UTC като часова зона (нулева компенсация на часовата зона), когато пишат данни.

Приложенията за платно четат и записват стойности на тип данни Час в SQL Server като текстови низове в ISO 8601 формат на продължителност. Например, трябва да анализирате този низ формат и да използвате функцията Time за преобразуване на текстовия низ "PT2H1M39S" на стойност Time:

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)

Информация за смесване на дата и час

Date, Time и DateTime имат различни имена, но всички те съдържат една и съща информация за датите и часовете.

Стойността Дата може да включва информация за времето с нея, която обикновено е полунощ. Стойността Час може да носи информация за дата, която обикновено е 1 януари 1970 г. Dataverse също съхранява информация за времето с поле Само дата, но показва само информацията за датата по подразбиране. По подобен начин приложенията за платно понякога разграничават тези типове данни за определяне на формати и контроли по подразбиране.

Директно добавяне и изваждане на стойности за дата и час не се препоръчва, тъй като часовата зона и други преобразувания могат да причинят объркващи резултати. Или използвайте функцията Value да преобразува първо стойностите на дата/час в милисекунди и да вземе предвид часовата зона на потребителя на приложението или да използва DateAdd и DateDiff функции за добавяне или изваждане от една от тези стойности.

Избор и Да / Не

Възможностите за избор и типовете данни с две опции дават два или повече възможности за избор, които потребителят на приложението да избере. Например, Състояние на поръчката избор може да предложи избора Ново, Изпратени, Фактурирани и Затворено. Типът данни с две опции дава само две възможности за избор.

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

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

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

If( ThisItem.OrderStatus = "Active", ...

Но можете да използвате тази формула:

If( ThisItem.OrderStatus = OrderStatus.Active, ...

За глобални избори (които таблиците споделят), името на изброяването на набор от опции съвпада с името на глобалния избор. За локални възможности за избор (които са в обхвата на таблица) името може да включва името на таблицата. Това поведение избягва конфликти, ако няколко таблици имат възможности за избор с едно и също име. Например акаунти таблицата може да има Статус на поръчката избор и името му може да бъде OrderStatus (акаунти). Това име има интервали и скоби, така че трябва да го оградите с единични кавички, ако препращате към него във формула.

Стойностите с две опции също се държат като булеви стойности. Например стойност с две опции, наречена TaxStatus , може да има етикетите Облагаеми и Облагаеми, които съответстват на "истина " и " неистина". За да покажете това, използвайте тази формула:

If( ThisItem.Taxable = TaxStatus.Taxable, ...

Можете също да използвате тази формула:

If( ThisItem.Taxable, ...