Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
| Функция | Применимо к |
|---|---|
| AsType |
|
| IsType |
|
Проверяет, является ли ссылка на запись определенным типом таблицы (IsType) и обрабатывает ссылку как этот тип (AsType).
Заметка
Команды PAC CLI pac power-fx не поддерживаются IsType.
Description
IsType Функции AsType можно использовать для преобразования ссылок на записи (например, полиморфных подстановок в Dataverse) и динамических значений в типизированные значения, которые можно использовать непосредственно.
Ссылки на запись
Ознакомьтесь с разделом Общие сведения о ссылках на записи и полиморфных подстановках для более широкого введения и более подробной информации.
Поле подстановки обычно ссылается на записи в определенной таблице. Поскольку тип таблицы хорошо установлен, доступ к полям подстановки возможен с помощью простой точечной нотации. Например, First( Учетные записи ).'Основной контакт'.'Полное имя' переходит из таблицы Учетные записи к записи Основной контакт в таблице Контакты и извлекает поле Полное имя.
Microsoft Dataverse также поддерживает поля полиморфной подстановки, которые могут ссылаться на записи из набора таблиц, как в этих примерах.
| Поле поиска | Может ссылаться на |
|---|---|
| Ответственное лицо | Пользователи или Рабочие группы |
| Клиент | Организации или Контакты |
| В отношении | Организации, Контакты, Статьи базы знаний и т. д. |
В формулах приложений на основе холста используйте ссылки на записи для работы с полиморфными подстановками. Так как ссылка на запись может ссылаться на разные таблицы, вы не можете знать, какие поля доступны во время выполнения при написании формулы. Нотация Запись.Поле недоступна. Эти формулы должны адаптироваться к записям, с которыми сталкивается приложение при запуске.
Функция IsType проверяет, относится ли ссылка на запись определенному типу таблицы. Функция возвращает логическое значение TRUE или FALSE.
Функция AsType обрабатывает ссылку на запись как определенный тип таблицы, который также называется приведением. Вы используете результат, как если бы это запись таблицы и используйте нотацию Record.Field для доступа ко всем полям этой записи. Если ссылка не имеет конкретного типа, возникает ошибка.
Используйте эти функции вместе, чтобы сначала проверить тип таблицы записи, а затем рассматривать ее как запись этого типа, чтобы поля были доступны:
If( IsType( First( Accounts ).Owner, Users ),
AsType( First( Accounts ).Owner, Users ).'Full Name',
AsType( First( Accounts ).Owner, Teams ).'Team Name'
)
Эти функции требуются только в том случае, если вы обращаетесь к полям ссылки на запись. Например, вы используете ссылки на записи в функции фильтра без IsType или AsType:
Filter( Accounts, Owner = First( Users ) )
Точно так же вы можете использовать ссылки на записи с функцией Patch:
Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )
При использовании этих функций в контексте записи, например в элементе управления "Коллекция " или " Изменение формы ", может потребоваться глобальный оператор диамбигуации для ссылки на тип таблицы. Например, эта формула работает для коллекции, в которой отображается список контактов, в которых имя компании является подстановкой клиента :
If( IsType( ThisItem.'Company Name', Accounts ),
AsType( ThisItem.'Company Name', Accounts ).'Account Name',
AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)
Для обеих функций укажите тип, используя имя источника данных, подключенного к таблице. Чтобы формула работала, добавьте источник данных в приложение для любых типов, которые необходимо проверить или привести. Например, добавьте таблицу Users в качестве источника данных, если вы хотите использовать IsType и AsType с подстановкой владельца и записями из этой таблицы. Добавьте только те источники данных, которые вы используете в приложении; Вам не нужно добавлять все таблицы, на которые может ссылаться подстановка.
Если ссылка на запись пуста, IsType возвращает значение FALSE и AsType возвращает пустое значение. Все поля пустой записи также будут пустыми.
Динамические значения
Внимание!
- Использование и IsType использование AsTypeдинамических значений является экспериментальной функцией.
- Экспериментальные функции не предназначены для использования в производственной среде, и они могут быть не законченными. Они доступны перед официальным выпуском, чтобы вы могли досрочно получить доступ и предоставить отзывы. Дополнительная информация: Общие сведения об экспериментальных, предварительных и устаревших версиях функций в приложениях на основе холста
- Поведение, описанное в этой статье, доступно только в том случае, если экспериментальная функция Пользовательские типы в разделе Параметры > Предстоящие функции > Экспериментальные включена (по умолчанию она отключена).
- Ваш отзыв очень важен для нас. Поделитесь с нами своим мнением на форуме сообщества по экспериментальным функциям Power Apps.
Динамическое значение из веб-API или [функции ParseJSON] необходимо преобразовать в определенное типизированное значение, прежде чем использовать его в Power Fx. Ниже приведено несколько вариантов:
- Неявно введите поле в точке его использования. Например, объект преобразуется в число, если он используется с
+оператором, если его можно преобразовать в число. Этот параметр может привести к непредвиденным преобразованиям и не может преобразовать записи и таблицы в целом. - Явно задайте тип каждого поля по отдельности с помощью функций типов Decimal, Text, DateTime, GUID и других функций конструктора типов. Этот параметр является наиболее инвазивным для формул, так как необходимо выполнить каждое поле отдельно.
- Явно задайте тип JSON со вторым аргументом функции ParseJSON. Этот параметр прост и не требует динамического значения.
- Явно введите динамическое значение с помощью AsType функции. Вы также можете проверить тип перед попыткой преобразования с функцией IsType .
Синтаксис
AsType( RecordReference, TableType )
- RecordReference — обязательный аргумент. Ссылка на запись, часто поле подстановки, которое ссылается на запись в любой из нескольких таблиц.
- TableType — обязательно. Определенная таблица для приведения записи к ней.
AsType( DynamicValue, TypeSpecification )
- DynamicValue — обязательный. Динамическое значение из функции ParseJSON или вызова API.
- TypeSpecification — обязательный аргумент. Спецификация типа или типа, определяемая функцией Type.
IsType( RecordReference, TableType )
- RecordReference — обязательный аргумент. Ссылка на запись, часто поле подстановки, которое может ссылаться на запись в любой из нескольких таблиц.
- TableType — обязательно. Определенная таблица для тестирования.
IsType( DynamicValue, TypeSpecification )
- DynamicValue — обязательный. Динамическое значение из функции ParseJSON или вызова API.
- TypeSpecification — обязательный аргумент. Имя типа или спецификация типа, определенная с помощью функции Type.
Примеры
Ссылки на запись
Раздел Общие сведения о ссылках на записи и полиморфных подстановках содержит обширные примеры.
Создайте пустое приложение на основе холста для планшетов.
На левой панели выберите ">Добавить данные", а затем добавьте таблицы "Учетные записи " и " Контакты ".
На левой панели выберите + (Вставка) >Пустая вертикальная коллекция>.
Выберите Подключение к данным, затем выберите Контакты в качестве источника данных.
Задайте для макета коллекции значение Title и подзаголовок.
На панели Данные откройте список Title1, затем выберите Полное имя.
Выберите элемент управления метки Subtitle1.
Задайте для свойства Text элемента Subtitle1 следующую формулу:
If( IsBlank( ThisItem.'Company Name' ), "--", IsType( ThisItem.'Company Name', Accounts ), "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name', "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name' )
Подзаголовок в коллекции показывает эти значения:
- "--", если 'Имя компании'пусто.
- "Учетная запись: " и поле "Имя учетной записи" из таблицы "Учетные записи", если поле "Имя компании " ссылается на учетную запись.
- "Контакт:" и поле "Полное имя " из таблицы "Контакты ", если поле "Имя компании " относится к контакту.
Результаты могут отличаться, так как примеры данных можно изменить, чтобы отобразить больше типов результатов.
Динамические значения
В следующих примерах показана простая запись JSON, интерпретируемая различными способами ParseJSON, AsTypeи IsType в Power Fx REPL Power Fx.
В этом первом примере сведения о типе не предоставляются ParseJSON, поэтому он возвращает динамическое значение.
>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Dynamic: Use Value, Text, Boolean, or other functions to establish the type>
При использовании в числовом контексте поле неявно преобразуется в число.
>> 1 + rec.a
2
В качестве альтернативы в этом примере запись явно преобразуется в типизированную запись Power Fx со вторым аргументом в ParseJSON.
>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}
И другой вариант, этот пример явно преобразует запись в типизированные записи Power Fx с помощью AsType.
>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}
Наконец, если вы не уверены, этот пример проверяет тип перед преобразованием IsType его с помощью функции.
>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true