Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Информация проходит через Power Fx в небольших дискретных значениях, таких как ячейки электронной таблицы. Например, данные в поле "День рождения " и поле " Годовщина " передаются как значение даты , включающее год, месяц и день. Power Fx форматирует эти значения, ограничивает входные данные, соответствующие каждому, и совместно использует значения с базой данных. Дни рождения и анниверсии могут отличаться для людей, но система обрабатывает их таким же образом. В этом случае Дата — это пример типа данных.
В этой статье описывается каждый тип данных в Power Fx, их работа и сопоставление с внешними источниками данных.
| Тип данных | Description | Примеры |
|---|---|---|
| Логическое значение | Значение true или false. Его можно использовать непосредственно в If, Filter и других функциях без сравнения. | true |
| Выбранный вариант | Выбор из набора параметров на основе числа. Этот тип данных сочетает локализуемую текстовую метку с числовым значением. Метка появляется в приложении, а числовое значение сохраняется и используется для сравнения. Функция Type поддерживает этот тип данных, если используется экземпляр поля "Выбор " по имени. | ThisItem.OrderStatus |
| Цвет | Спецификация цвета, содержащая альфа-канал. |
Color.Red ColorValue( "#102030" ) RGBA( 255, 128, 0, 0,5 ) |
| Валюта | Значение валюты, хранящееся в число с плавающей запятой. Значения валюты совпадают со значениями чисел с параметрами форматирования валюты. Функция Type не поддерживает тип данных Currency . |
123 4.56 |
| Дата | Дата без времени в часовом поясе пользователя приложения. | Дата( 2019, 5, 16 ) |
| DateTime | Дата с временем в часовом поясе пользователя приложения. | DateTimeValue( "16 мая 2019 г. 1:23:09" ) |
| Decimal | Число с высокой точностью, базовыми 10 операциями и ограниченным диапазоном. |
123 Десятичное число ( "1,2345" ) |
| Dynamic (ранее UntypedObject) | Тип значения является динамическим и может отличаться во время выполнения. Динамическое значение может быть любым существующим типом и может быть преобразовано в совместимые типы с помощью таких функций, как Boolean(), Value(),Table()и т. д. Дополнительные сведения см. в разделе "Динамические значения " и "Работа с JSON". | ParseJSON("{ ""Field"" : 1234 }").Поле |
| Акции в свободном обращении | Число со стандартной точностью, операциями по основанию 2 и широким диапазоном. |
123 8,903e121 1,234e-200 |
| GUID | Глобальный уникальный идентификатор. |
GUID() GUID( "123e4567-e89b-12d3-a456-4265540000" ) |
| Гиперссылка | Текстовая строка, содержащая гиперссылку. | "https://powerapps.microsoft.com" |
| Изображение | Текстовая строка универсального идентификатора ресурса (URI) для изображения в .jpeg, .png, .svg, .gifили другого общего формата веб-изображения. Функция Type не поддерживает тип данных Image . |
MyImage добавлено в качестве ресурса приложения "https://northwindtraders.com/logo.jpg" "appres://blobmanager/7b12ffa2..." |
| СМИ | Текстовая строка универсального кода ресурса (URI) для видео или аудио записи. Функция Type не поддерживает тип данных мультимедиа . |
MyVideo добавлено в качестве ресурса приложения "https://northwindtraders.com/intro.mp4" "appres://blobmanager/3ba411c..." |
| Число | Псевдоним для Десятичное число (большинство узлов Power Fx) или С плавающей точкой (приложения на основе холста). Если вы можете использовать любое количество для ситуации, используйте число для максимальной совместимости. |
123 0.0123 1e4 |
| Запись | Запись значений данных. Этот составной тип данных содержит экземпляры других типов данных, перечисленных в этой статье. Дополнительные сведения см. в статье "Работа с таблицами". Функция Type поддерживает этот тип данных, если используется экземпляр записи. |
{ Компания: "Northwind Traders", Персонал: 35, Некоммерческая: false } |
| Ссылка на запись | Ссылка на запись в таблице. Эти ссылки часто используются с полиморфными подстановками. Дополнительные сведения см. в статье "Работа со ссылками". Функция Type не поддерживает этот тип данных. | First(Accounts).Owner |
| Таблицу | Таблица записей. Все записи должны иметь одинаковые имена полей и типы данных, и опущенные поля обрабатываются как пустые. Этот составной тип данных содержит экземпляры других типов данных, перечисленных в этой статье. Дополнительные сведения см. в статье "Работа с таблицами". Функция Type поддерживает этот тип данных, если используется экземпляр таблицы. |
Table( { FirstName: "Sidney", LastName: "Higa" }, { FirstName: "Nancy", LastName: "Андерсон" } ) |
| Текст | Текстовая строка в формате Unicode. | "Привет, мир" |
| Time | Время без даты в часовом поясе пользователя приложения. | Time( 11, 23, 45 ) |
| Аннулировать | Используется только определяемыми пользователем функциями, указывает, что функция не имеет возвращаемого типа. Функция Type не поддерживает этот тип данных. Несмотря на то, что функция не имеет возвращаемого типа или значения, она всегда может возвращать ошибку. | Hi(): Void = { Notify( "Привет!" ) } |
| Да/нет | Выбор из набора из двух параметров на основе логического значения. Этот тип данных сочетает локализуемую текстовую метку с логическим значением. Метка появляется в приложении, а логическое значение сохраняется и используется для сравнения. Функция Type поддерживает этот тип данных, если используется экземпляр поля "Да/нет " по имени. | ThisItem.Taxable |
Многие из этих типов данных похожи и имеют одинаковое базовое представление, например поле гиперссылки , обрабатываемое как текст. Дополнительные типы данных предоставляют лучшие возможности по умолчанию в формах и других элементах управления.
Blank
Все типы данных могут иметь пустое значение (без значения). Термин "NULL" часто используется в базах данных для этой концепции.
Используйте функцию Blank с функцией Set или Patch для задания переменной или полю пустого значения. Например, Set(x, Blank() удаляет значение в глобальной переменной x.
Проверьте пустое значение с помощью функции IsBlank . Замените возможные пустые значения непустыми значениями с помощью функции Coalesce.
Так как все типы данных поддерживают пустое значение, логические и два типа данных параметров имеют три возможных значения.
Текст, гиперссылка, изображение и мультимедиа
Все четыре из этих типов данных основаны на текстовой строке Unicode.
Встроенный текст
Встроенные текстовые строки в формуле заключаются в двойные кавычки. Используйте две двойные кавычки вместе, чтобы представить одну двойную кавычку в текстовой строке. Например, используя следующую формулу в свойстве OnSelect элемента управления Button:
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 задано как "Джо", то эта формула создает текстовую строку Добро пожаловать, Джо, приятно познакомиться!. Но если NickName является пустым и FirstName — "Джозеф", то эта формула дает Уважаемый Джозеф, приятно познакомиться! вместо этого.
Интерполяция строк может включать во встроенную формулу стандартные текстовые строки. Например, если ни NickName, ни FirstName не указаны, мы все еще можем предоставить "Друг" в качестве замены:
$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"
Интерполяции строк могут быть даже вложенными. Рассмотрим этот пример, где Имя, Отчество и Фамилия объединяются в приветствие. Даже если одно или два из этих значений пустое, правильное количество пробелов поддерживается между частями имени. Если ни одна из частей не указана, интерполяция внутренней строки свернется в пустую строку и будет заменена функцией Coalesce как "Друг".
$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
| Имя | Отчество | Фамилия | Результат |
|---|---|---|---|
| Джон | Куниси | Доу | Welcome John Quincy Doe! |
| Джон | пусто | Доу | Welcome John Doe! |
| пусто | пусто | Доу | Welcome Doe! |
| пусто | пусто | пусто | Welcome Friend! |
Новые строки
Встроенные текстовые строки могут содержать новые строки. Например, рассмотрите возможность установки свойства Text элемента управления Label как следующее:
"Line 1
Line 2
Line 3"
Эта формула приводит к трем строкам, показанным в элементе управления label:
Новые строки также поддерживаются с интерполяцией строк:
$"Line {1}
Line {1+1}
Line {1+1+1}"
Что приводит к одному и тому же результату:
Ресурсы изображения и мультимедиа
Через меню Файл вы можете добавить изображения, видео и аудиофайлы в качестве ресурсов приложения. Имя импортируемого файла становится именем ресурса в приложении. На этом рисунке логотип Northwind Traders, который называется nwindlogo, был добавлен в приложение:
Чтобы использовать этот ресурс в приложении, укажите его в свойстве Изображение элемента управления Image:
Коды URI для изображений и других мультимедиа
Вы можете немного больше углубиться в этот последний пример, установив для свойства Text элемента управления Label значение nwindlogo. Метка показывает текстовую строку:
Приложения на основе холста ссылаются на каждое изображение или другой файл мультимедиа, независимо от того, находится ли он в облаке или добавлен как ресурс приложения, посредством текстовой строки кода URI.
Например, свойство Image элемента управления изображения принимает не только ресурсы приложения, но и ссылки на изображения в Интернете, такие как "https://northwindtraders.com/logo.jpg". Свойство также принимает встроенные изображения, которые используют схему URI данных, как в этом примере:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"
Этот код URI отображает увеличенную версию двух фиолетовых бриллиантов:
Вы можете показать самое последние изображение, снятое в элементе управления Camera, если установите свойство Image элемента управления изображения равным свойству Photo элемента управления Camera. Приложение хранит изображение в памяти, а свойство Photo элемента управления камеры возвращает ссылку на код URI для изображения. Например, вы можете сделать снимок, и свойство Photo камеры может вернуть "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".
Вы используете код URI для ссылки на изображение или другой файл мультимедиа, хранящийся в базе данных. Таким образом, приложение не извлекает фактические данные, пока они не понадобятся. Например, вложение в таблице Microsoft Dataverse может вернуть "appres://datasources/Contacts/table/..." Как в примере камеры, вы можете отобразить это изображение, установив для свойства Image элемента управления "Изображение" эту ссылку, которая получает двоичные данные.
При сохранении типа данных мультимедиа, такого как изображение, в базу данных, приложение отправляет фактическое изображение или данные мультимедиа, а не ссылку на код URI.
Ограничения размера
Как текстовые строки и коды URI, эти типы данных не имеют предустановленного ограничения на их длину.
Двоичные данные, на которые ссылаются эти типы данных, также не имеют заранее установленного ограничения на размер. Например, изображение, снятое с помощью элемента управления "Камера", которое называется "appres://...", может иметь такое большое и высокое разрешение, какое может дать камера устройства. Разрешение, частота кадров и другие атрибуты файлов муьтимедиа не ограничены типом данных, но определенные элементы управления для воспроизведения и захвата мультимедиа могут иметь свои собственные ограничения.
Тем не менее, все размеры данных зависят от объема доступной памяти в приложении. Браузеры, работающие на настольном компьютере, обычно поддерживают более 100 мегабайт данных. Однако объем доступной памяти на устройстве, таком как телефон, может быть намного меньше, обычно в диапазоне 30–70 мегабайт. Чтобы определить, работает ли ваше приложение в этих пределах, протестируйте общие сценарии на всех устройствах, на которых оно должно работать.
Рекомендуется хранить данные в памяти только столько времени, сколько необходимо. Отправляйте изображения в базу данных как можно быстрее; загружайте изображения только тогда, когда пользователь приложения запрашивает их.
Числа
Заметка
Power Apps поддерживает только Float сегодня, и это тип всех чисел. Поддержка типа Десятичное число скоро будет добавлена.
Power Fx поддерживает два типа чисел: Десятичное и Число с плавающей запятой (с синонимами Число и Валюта).
Тип Десятичное число лучше всего подходит для большинства бизнес-расчетов. Он может точно представлять числа по основанию 10, что означает, что 0.1 может быть точно представлено и позволит избежать ошибок округления во время вычислений. Он имеет достаточно большой диапазон для любых потребностей бизнеса: до 1028 с точностью до 28 цифр.
Десятичное число — это числовой тип данных по умолчанию для большинства узлов Power Fx, используемый, если просто записать 2*2.
Число с плавающей точкой лучше всего подходит для научных расчетов. Он может представлять числа в большем диапазоне, до 10308. Точность ограничена 15 десятичными разрядами и математическими значениями основана на базе 2, поэтому она не может точно представлять некоторые распространенные десятичные значения. Float также имеет более высокую производительность и предпочтительна, если это фактор и точность не является критической.
Десятичные числа
Тип данных Десятичное число чаще всего использует десятичный тип данных .NET. Некоторые узлы, такие как столбцы формул Dataverse, выполняемые в SQL Server, используют десятичный тип данных SQL Server.
Для типа Десятичное число математические операции выполняются так, как вы учили в школе, используя основание 10, что важно для того, чтобы избежать ошибок округления из-за очень небольших различий, которые могут накапливаться при использовании математики по основанию 2 (как в типе Число с плавающей точкой).
Диапазон лежит от положительного числа 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 х 10–324.
Тип данных Число с плавающей точкой может точно представлять целые числа (или целые) в диапазоне от –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.
Value( "1.234" )возвращает значение типа Десятичное число. Например, в формулеValue( "1.234" ) * 2функция Value интерпретирует содержимое текстовой строки"1.234"как Десятичное число.
Для работы со значениями Число с плавающей точкой используется функция Float. Расширяя наш пример, Float( 1.234 ) преобразует Десятичное число1.234 в Число с плавающей точкой. Функцию Float также можно использовать в качестве замены функции Value для преобразования строки, содержащей число с плавающей запятой, например Float( "1.234" ), в значение типа Число с плавающей точкой , которое требуется, если число не может быть представлено в виде типа Десятичное число.
Сводка:
| Использование | Decimal | Акции в свободном обращении |
|---|---|---|
| Строковые представления чисел в формулах | 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 CLI. Поскольку оба числа имеют тип Десятичное число, расчет производится с типами Десятичное число и результат сохраняет полную точность:
>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002
Если вместо этого тип второго операнда был изменен на тип Число с плавающей точкой, то весь расчет будет выполнен с типом Число с плавающей точкой и крошечная дробная часть будет потеряна:
>> 1.0000000000000000000000000001 * Float(2)
2
Дата, время и дата и время
Часовые пояса
Значения даты и времени подпадают под следующие категории:
- Часовой пояс пользователя: эти значения хранятся в формате 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 | Функция Value возвращает |
|---|---|---|---|
| Часовой пояс пользователя | Воскресенье,19мая2019 4:00 |
Суббота,18мая,2019 21:00 |
1,558,238,400,000 (Воскресенье,19мая2019 04:00 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 как 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, разделите результат из Value на 1000:
RoundDown( Value( UnixTime ) / 1000, 0 )
Если вам нужно время Unix в значении Date для дальнейших расчетов или отображения в Power Apps, используйте эту формулу:
DateAdd( Дата( 1970,1,1 ), UnixTime, Секунды )
SQL Server
SQL Server имеет Datetime, Datetime2 и другие типы данных даты и времени, которые не включают смещение часового пояса и не указывают, в каком часовом поясе они находятся. Приложения на основе холста предполагают, что эти значения хранятся в UTC, и обрабатывают их как Часовой пояс пользователя. Если эти значения не должны зависеть от часового пояса, скорректируйте пересчет UTC, используя функцию TimeZoneOffset.
Приложения на основе холста используют информацию о часовом поясе, включенную в поля DateTimeOffset, при преобразовании значения во внутреннее представление UTC приложения. Приложения всегда используют UTC в качестве часового пояса (нулевое смещение часового пояса) при записи данных.
Приложения на основе холста считывают и записывают значения с типом данным Time в 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 имеют разные имена, но все они содержат одинаковую информацию о дате и времени.
Значение Date может включать в себя информацию о времени, которая обычно равна полуночи. Значение Time может содержать информацию о дате, которая обычно составляет 1 января 1970 года. Dataverse также хранит информацию о времени с полем Только дата, но показывает только информацию о дате по умолчанию. Аналогично, приложения на основе холста иногда различают эти типы данных для определения форматов и элементов управления по умолчанию.
Непосредственное добавление и вычитание значений даты и времени не рекомендуется, потому что часовой пояс и другие преобразования могут привести к неверным результатам. Либо используйте функцию Value, чтобы сначала преобразовать значения даты и времени в миллисекунды и принять во внимание часовой пояс пользователя приложения, либо используйте функции DateAdd и DateDiff, чтобы добавить или вычесть одно из этих значений.
Наборы выбора и Да/Нет
Выбор и два варианта типов данных предоставляют два или более вариантов выбора для пользователя приложения. Например, набор выбора Состояние заказа может предложить наборы выбора Новый, Отправленный, Выставлен счет и Закрыт. Тип данных двух вариантов предоставляет только два варианта.
Оба этих типа данных показывают их метки как текст. Например, элемент управления "Метка" показывает один из вариантов состояния заказа, если для свойства Text элемента управления задана формула, которая ссылается на этот набор выбора. Метки параметров можно локализовать для пользователей приложений в разных расположениях.
Когда пользователь приложения выбирает параметр и сохраняет изменения, приложение отправляет данные в базу данных, которая сохраняет его таким образом, чтобы он не зависит от языка. Параметр в выборе отправляется и сохраняется в виде числа, а параметр в двух варианте данных отправляется и сохраняется как логическое значение.
Метки предназначены только для отображения. Вы не можете сравнить метки напрямую, так как они относятся к языку. Вместо этого каждый набор выбора имеет перечисление, которое работает с базовым числом или логическим значением. Например, вы не можете использовать следующую формулу:
If( ThisItem.OrderStatus = "Active", ...
Но вы можете использовать эту формулу:
If( ThisItem.OrderStatus = OrderStatus.Active, ...
Для глобальных наборов вариантов (которые таблицы используют совместно) имя перечисления набора параметров соответствует имени глобального набора выбора. Для локальных вариантов (которые относятся к таблице), имя может содержать имя таблицы. Это поведение позволяет избежать конфликтов, если несколько таблиц имеют варианты с одинаковым именем. Например, в таблице Учетные записи может быть набор выбора СостояниеЗаказа, а его именем может быть СостояниеЗаказа (Учетные записи). Это имя содержит пробелы и круглые скобки, поэтому при ссылке на него в формуле необходимо окружать его одними кавычками.
Значения двух вариантов также ведут себя как логические значения. Например, значение с двумя вариантами с именем TaxStatus может иметь метки Taxable и Non-Taxable, которые соответствуют true и false. Чтобы показать это, используйте следующую формулу:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
Эту формулу можно также использовать:
If( ThisItem.Taxable, ...