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


Типи даних

Інформація протікає Power Fx невеликими дискретними значеннями, дуже схожими на клітинки електронної таблиці. Наприклад, дані у полі День народження та у полі Річниця передаватимуться значенням Дата, що складається з року, місяця і дня. Power Fx знає, як форматувати ці значення, обмежувати вхідні дані тим, що підходить для кожного з них, і ділитися значеннями з базою даних. Дні народження і річниці є відмінними для людей, але система обробляє їх повністю однаково. У наведеному прикладі Дата є прикладом типу даних.

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

Тип даних Опис Приклади
Логічні Значення true або false. Може застосовуватися безпосередньо у функціях If, Filter та інших функціях без порівняння. Справжній
Вибір Вибір з набору пронумерованих варіантів. У цьому типі даних поєднано числове значення з локалізовуваним текстовим підписом. Надпис відображається у програмі, а числове значення зберігається та застосовування для порівняння. Цей тип даних підтримується функцією Тип, якщо екземпляр поля Вибір використовується за іменем. ThisItem.OrderStatus
Колір Специфікація кольору, включно з альфа-каналом. Колір.Червоний
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0,5 )
Валюта Значення грошової одиниці, яке зберігається як число з рухомою комою. Значення грошової одиниці такі ж, що й числові значення, але з параметрами форматування грошових одиниць. Тип даних Currency не підтримується функцією Type . 123
4.56
Дата Дата без часу, в часовому поясі користувача програми. Дата( 2019, 5, 16 )
DateTime Дата з часом у часовому поясі користувача програми. DateTimeValue( "16 травня, 2019 1:23:09 PM" )
Десятковий Номер з високою точністю, базовими 10 операціями та обмеженим діапазоном. 123
Десятковий дроб ( "1.2345" )
Плавати Число зі стандартною точністю, операціями бази 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 або будь-якому іншому форматі веб-зображення. Тип даних Зображення не підтримується функцією Тип . MyImage додано як ресурс додатку
»https://northwindtraders.com/logo.jpg"
— appres://blobmanager/7b12ffa2...
ЗМІ Текстовий рядок з ідентифікатором URI, приєднаний до відео або звукозапису. Тип даних Media не підтримується функцією Type . MyVideo додано як ресурс додатку
»https://northwindtraders.com/intro.mp4"
— appres://blobmanager/3ba411c...
Число Псевдонім для Decimal (більшість Power Fx хостів) або Float (програми Canvas). Якщо будь-який з варіантів чисел може бути використаний для даної ситуації, використовуйте Число для максимальної сумісності. 123
0.0123
1Е4
Запис Запис значень даних. Цей складений тип даних містить інсталяції інших типів даних, перелічених у цьому розділі. Додаткові відомості: Робота із таблицями Цей тип даних підтримується функцією Тип, якщо використовується екземпляр Запису . { Компанія: "Трейдери Північного Вітру",
Staff: 35,
NonProfit: false }
Довідкова інформація Посилання на запис у таблиці. Такі посилання часто використовуються для поліморфних підстановок. Додаткові відомості: Робота з посиланнями Цей тип даних не підтримується функцією Тип . По-перше(Рахунки). Власник
Стіл Таблиця записів. У всіх записів мають бути однакові імена полів з однаковими типами даних, а пропущені поля вважаються пустими. Цей складений тип даних містить інсталяції інших типів даних, перелічених у цьому розділі. Додаткові відомості: Робота із таблицями Цей тип даних підтримується функцією Type , якщо використовується екземпляр Таблиці . table( { Ім’я: "Сідні",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
Текст Текстовий рядок у кодуванні Юнікод. "Здрастуй, світе"
Час Час без дати в часовому поясі користувача програми. Час( 11, 23, 45 )
Без набору Об’єкт неоголошеного типу. Базовим об’єктом може бути будь-який існуючий тип, і його можна перетворити в сумісні типи за допомогою таких функцій, як Boolean(), Value(), Table () тощо . Докладнішу інформацію дивіться в розділах Нетипізований об’єкт і Робота з JSON. ParseJSON("{ "Поле"" : 1234 }"). Поле
Порожнечу Використовується лише поведінкою функцій, визначених користувачем, це вказує на те, що функція не має типу, що повертається. Цей тип даних не підтримується функцією Тип . Навіть якщо функція не має типу або значення, що повертається, вона завжди може повернути помилку. hi(): void = { notify( "Привіт!" ) }
Так/Ні Вибір з набору двох варіантів логічних значень У цьому типі даних поєднано логічне значення з локалізовуваним текстовим підписом. Надпис відображається у програмі, а логічне значення зберігається та застосовується для порівняння. Цей тип даних підтримується функцією Тип, якщо за іменем використовується екземпляр поля Так/Ні . ThisItem.Підлягає оподаткуванню

Багато з цих типів даних є схожими і мають однакове базове відображення, наприклад поле Гіперпосилання обробляється як Текст. Додаткові типи даних забезпечують кращу роботу за замовчуванням у формах та інших елементах керування.

Пусто

Усі типи даних можуть мати пусте значення пустий (іншими словами, не мати значення). На позначення цього концепту у базах даних часто використовується термін «null».

Скористайтеся функціями Blank, Set або Patch для присвоєння змінній або полю пустого значення blank. Наприклад, Set( x, Blank() ) видаляє будь-яке значення глобальної змінної x.

Для перевірки значення blank змінної застосовується функція IsBlank. Заміна можливих пустих значень blank непустими (non-blank) виконується за допомогою функції Coalesce.

Оскільки всі типи даних підтримують пусті значення, типи даних Boolean (логічне значення) і Two option (Два варіанти) фактично мають три можливі значення.

Усі ці чотири типи даних мають за основу текстовий рядок Юнікод.

Вбудований текст

Вбудовані у формули текстові рядки додаються у подвійних лапках. Для відображення лапок у текстовому рядку слід вживати дві пари лапок підряд. Наприклад, застосування такої формули для властивості OnSelect елементу керування Кнопка:

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

у разі натискання кнопки забезпечить відображення повідомлення, в якому перші й останні подвійні лапки опускаються (оскільки вони обрамляють текстовий рядок), а повторювані подвійні лапки навколо Привіт усім! замінюються одинарними подвійними лапками:

спливаюче сповіщення з повідомленням від Джейн «Hello, World».

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

Інтерполяція рядків

Використовуйте інтерполяцію рядків для вбудовування формул у текстовий рядок. З таким підходом часто простіше працювати та візуалізувати вихідні дані, ніж при використанні функції або оператора Concatenate .

Додайте префікс до текстового рядка у вигляді знака долара $ та візьміть формулу у фігурні дужки { }. Щоб включити фігурні дужки в текстовий рядок, використайте подвійні фігурні дужки: {{ або }}. Інтерполяцію рядка можна використовувати в будь-якому місці стандартного текстового рядка.

Наприклад, розглянемо цю формулу, в якій для глобальних змінних Яблука установлено значення 3, а для Банани – значення 4:

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

Ця формула повертає текстовий рядок У нас є 3 яблука, 4 банани, що дає загальну кількість фруктів 7. Змінні Яблука й Банани вставляються в текст, замінюючи фігурні дужки, разом із результатом математичної формули Яблука+Банани. Пробіли та інші символи навколо фігурних дужок залишаються без змін.

Вбудовані формули можуть містити будь-які функції або оператори. Слід пам’ятати, що результат формули можна привести до текстового рядка. Наприклад, ця формула вставляє NickName , якщо його надано, або FirstName , якщо ні, у привітанні:

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

Якщо для параметра NickName задано значення Joe, то ця формула створєю текстовий рядок Welcome Joe, it's great to meet you! (Вітаємо, Джо! Раді Вас бачити!) Але якщо для параметра NickName установлено пусте значення, а для FirstName – «Joseph», ця формула натомість створить привітання Dear Joseph, great to meet you! (Шановний Джозефе! Раді Вас бачити!)

Інтерполяція рядків може містити стандартні текстові рядки у вбудованій формулі. Наприклад, якщо для параметрів NickName і FirstName значення не надано, можна натомість запропонувати Друже:

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

Інтерполяції рядків навіть можуть бути вкладені. Розглянемо цей приклад, де Ім’я, По батькові та Прізвище об’єднано в привітанні. Навіть якщо одне або два з цих значень порожні , між частинами імені зберігається правильна кількість пробілів. Якщо жодну з частин не вказано, внутрішня інтерполяція рядка згорнеться до пустого рядка, і її буде замінено функцією Coalesce на «Друже».

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Ім’я По середині Остання Результат
John Qunicy Doe Welcome John Quincy Doe!
John Порожній Doe Welcome John Doe!
Порожній Порожній Doe Welcome Doe!
Порожній Порожній Порожній Welcome Friend!

Символи нового рядка

Вбудовані текстові рядки можуть містити символи нових рядків. Наприклад, розглянемо встановлення властивості Текст елементу керування Надпис:

"Line 1
Line 2
Line 3"

Результатом цієї формули є три рядки, показані в елементі керування міткою:

Вбудований елемент керування текстовим рядком і міткою, що показує три рядки з рядком 1, рядком 2 і рядком 3.

Нові рядки також підтримуються з інтерполяцією рядків:

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

Що дає той самий результат:

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

Зображення і ресурси мультимедіа

За допомогою меню Файл можна додати зображення, відео та аудіофайли як ресурси програми. Ім’я імпортованого файлу перетворюється на ім’я ресурсу в програмі. На цій графіку в додаток додано логотип Northwind Traders, який називається nwindlogo:

Ресурс північного вітру.

Щоб використовувати цей ресурс у програмі, вкажіть його у властивості Зображення елемента керування Зображення:

Зображення північного вітру.

Ідентифікатори URI для зображень та інших медіафайлів

У наведеному прикладі можна піти далі та встановити для властивості Текст елементу керування Надпис значення nwindlogo. У надписі відображається текстовий рядок:

Текст північного вітру.

Компоновані програми виконують перенаправлення за посиланнями у вигляді текстового рядка 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 підтримує два види чисел: десяткові та плаваючі (з синонімами Число та Валюта).

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

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

Десяткові числа

Тип даних Decimal найчастіше використовує десятковий тип даних .NET. Деякі хости, наприклад Dataverse стовпці формул, які виконуються в SQL Serer, використовують десятковий тип даних SQL Server.

Десятковий дріб виконує математику так, як ви вчили в школі, використовуючи цифри з основою 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.

Числа з плаваючою комою

Тип даних з плаваючою комою, також відомий як «Число» або «Валюта», використовує стандарт IEEE 754 з плаваючою комою подвійної точності. Цей стандарт надає дуже великий діапазон чисел для роботи –від 1.79769 x 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 x 10–15, що становить дуже мало, проте не нуль. Це незначна різниця зазвичай не викликає проблем, і програма заокруглює її під час відображення результату. Проте дрібні відмінності можуть накопичуватися в подальших розрахунках і очевидно давати неправильну відповідь.

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

Стандартні параметри та конверсії

Нотатка

Power Apps тільки підтримує Float сьогодні і це тип всіх чисел. Незабаром буде додано підтримку десяткових дробів .

Більшість Power Fx хостів за замовчуванням використовують десятковий . Наявність цього значення за замовчуванням означає:

  • Буквальні числа у формулах. Число 1.234 інтерпретується як десяткове значення. Наприклад, формула 1.234 * 2 інтерпретує 1.234 і 2 як десятковий дріб і повертає десятковий результат.
  • Функція значення. Value( "1.234" ) повертає десяткове значення. Наприклад, у формулі Value( "1.234" ) * 2 функція «Значення » інтерпретує вміст текстового рядка "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 )

Змішування числових типів

Числа з плаваючоюкомою та десяткові значення можна вільно змішувати. При змішуванні десяткові значення перетворюються на значення з плаваючою точкою через більший діапазон. Оскільки це перетворення може призвести до втрати точності, важливо не змішувати їх без потреби. Оскільки десятковий номер є типом даних за замовчуванням, а більшість числових функцій зберігають цей тип, відносно легко уникнути переходу до Float без бажання.

Наприклад, розглянемо наступний розрахунок з використанням pac power-fx repl після встановлення інтерфейсу командного рядка Power Platform . Оскільки обидва числа є десятковими, обчислення виконується в десятковому стилі, а результат зберігає повну точність:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Якщо замість цього другий операнд буде змінено на Float , то весь обчислення буде виконано в Float, а крихітна дробова частина буде втрачена:

>> 1.0000000000000000000000000001 * Float(2)
2

Дата, час і Дата/час

Часові пояси

Значення дати й часу підпадають під зазначені нижче категорії.

  • Локальний користувач: ці значення зберігаються в UTC (всесвітньому координованому часі), але часовий пояс користувача програми впливає на те, як додаток показує ці значення та як користувач програми їх вказує. Наприклад, цей самий момент відображається по-різному для користувача в Канаді і користувача в Японії.
  • Незалежний від часового поясу: додаток показує ці значення однаково, а користувач програми вказує їх однаково, незалежно від часового поясу. Цей самий момент відображається однаково для користувача в Канаді і користувача в Японії. Автори програм, які не очікують, що їхні програми будуть працювати в різних часових поясах, використовують ці значення, оскільки вони загалом простіші.

У цій таблиці наведено кілька прикладів.

Тип дати/часу Значення, яке зберігається в базі даних Значення, яке відображається і вводиться 7 годин на захід від UTC Значення, яке відображається і вводиться 4 годин на схід від UTC
Локальний користувач Неділя,19травня2019 року
04:00
Субота,18травня2019 року
21:00
Неділя,19травня2019 року
08:00
Не залежить від часового поясу Неділя,19травня2019 року
04:00
Неділя,19травня2019 року
04:00
Неділя,19травня2019 року
04: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 80 ,000 в часовий пояс, який зміщений від UTC на вісім годин. Це число відображає кількість мілісекунд у восьми годинах.

Повертаючись до нашого прикладу:

Тип дати/часу Значення, яке зберігається в базі даних Значення, яке відображається і вводиться 7 годин на захід від UTC Функція value повертає
Локальний користувач Неділя,19травня2019 року
04:00
Субота,18травня2019 року
21:00
1,558,238,400,000
(Неділя,19травня2019 року
4:00 AM UTC)
Не залежить від часового поясу Неділя,19травня2019 року
04:00
Неділя,19травня2019 року
04:00
1,558,263,600,000
(Неділя,19травня2019 року
11:00 AM UTC)

Перетворення часу в Unix

Час Unix відображає кількість секунд, починаючи з 1 січня 1970 року 00:00:00 UTC. Оскільки компоновані програми використовують мілісекунди замість секунд, їх можна конвертувати, помноживши чи поділивши на 1000.

Наприклад, час Unix показує 9 вересня 2001 року, 01:46:40 UTC як 1,000,000,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( Значення ( UnixTime ) / 1000, 0 )

Якщо потрібен час Unix у значенні Дата для подальших розрахунків або відображення в Power Apps,використовуйте цю формулу:
DateAdd( Date( 1970,1,1 ), UnixTime, Seconds )

SQL Server

У SQL Server є Datetime, Datetime2 та інші типи даних дати й часу, що не включають зміщення часового поясу і не вказують, в якому часовому поясі вони використовуються. Компоновані програми припускають, що ці значення зберігаються в UTC і обробляють їх як Місцевий час. Якщо ці значення мають бути незалежним часовим поясом, використовуйте для виправлення даних UTC функцію TimeZoneOffset.

Компоновані програми використовують інформацію про часовий пояс у полях Datetimeoffset під час перетворення значення у внутрішнє представлення UTC програми. У програмах під час запису даних як часовий пояс завжди використовується UTC (нульовий часовий пояс).

Компоновані програми зчитують/записують значення типу Час з/на SQL Server як текстові рядки у форматі тривалості ISO 8601. Наприклад, потрібно проаналізувати рядковий формат та застосувати функцію Time, щоб перетворити текстовий рядок "PT2H1M39S" на значення Час:

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 мають різні назви, але всі вони містять однакову інформацію про дати та час.

Значення Дата може містити у собі відомості про час, який зазвичай приймається 00:00. Значення Час може передавати відомості про дату, яка зазвичай відповідає 1 січня 1970 року Dataverse також зберігає інформацію про час у полі Лише дата, але за замовчуванням відображаються тільки відомості про дату Водночас компоновані програми інколи розрізняють ці типи даних для визначення форматів та елементі керування за замовчуванням.

Не рекомендується виконувати додавання та віднімання значень типу дати й часу без попереднього перетворення, оскільки перетворення часових поясів та інші конвертації можуть обумовити неправильні результати. Рекомендується спочатку використати функцію Value для перетворення значень типу дата/час до мілісекунд та врахувати часовий пояс користувача програми, або скористатися функціями DateAdd і DateDiff для додавання або віднімання таких значень.

Вибір і «Так/Ні»

Вибір і типи даних із двома параметрами дають можливість вибрати два або більше варіантів для користувача програми. Наприклад, параметр вибору Стан замовлення може пропонувати варіанти Створено, Відправлено, Виставлено рахунок і Закрито. Значення типу двох варіантів надає тільки два варіанти на вибір.

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

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

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

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

Але можна використати таку:

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

Для глобального вибору (які таблиці поширюються) назва перерахування набору параметрів збігається з іменем глобального вибору. Для локального вибору (області застосування до таблиці) ім'я може містити ім'я таблиці. Така поведінка дозволяє уникнути конфліктів, якщо в кількох таблицях є вибір з однаковим ім'ям. Наприклад, таблиця Бізнес-партнери може мати вибір OrderStatus, а її ім'я може бутиOrderStatus (Accounts). Це ім’я складається з пробілів та дужок, тому в разі згадування його у формулі таке ім’я потрібно обрамити одинарними лапками.

Крім того, значення типу двох варіантів можуть також використовуватися логічні значення. Наприклад, значення типу двох параметрів з ім’ям TaxStatus може мати надписи Taxable і Non-Taxable, що стосуються true і false відповідно. Для демонстрації можна використати таку формулу:

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

Можна також використати еквівалентну формулу:

If( ThisItem.Taxable, ...