Общие сведения о ссылках на записи и полиморфных подстановках в приложениях на основе холста

Когда вы написали исследовательскую работу в школе, вы, вероятно, предоставили список ваших ссылок в конце. Вы не включили копию использованного вами справочного материала, а скорее веб-ссылку, название книги и имя автора либо другую информацию, чтобы кто-то мог отследить первоисточник. Вы смешали различные виды источников в одном списке, газетные статьи рядом с аудиозаписями, каждый со своими собственными конкретными деталями для правильного цитирования. Например, статьи в Википедии часто включают длинный список литературы.

В приложениях на основе холста вы часто работаете с копиями записей, загруженных из источников данных. Вы используете функции LookUp и Filter, а также свойство Selected элемента управления Галерея для определения конкретной записи, которую вы хотите. Все записи из Фильтр или Выбрано будут одного типа таблицы, так что вы можете использовать поля с простой нотацией .Поле. Эти копии часто содержат справочную информацию, так что вы можете использовать функцию Patch для обновления оригинального источника.

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

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

Существует одно важное различие в использовании: вы не можете получить прямой доступ к полям ссылки на запись, если сначала не установите, на какую таблицу она ссылается. Это связано с тем, что приложения на основе холста требуют, чтобы все типы были известны при написании формул. Поскольку вы не знаете тип ссылки на запись, пока приложение не запущено, вы не можете использовать простую нотацию .Поле напрямую. Сначала необходимо динамически определить тип таблицы с помощью функции IsType, а затем использовать нотацию .Поле с результатом функции AsType.

Тип таблицы относится к схеме каждой записи в таблице. Каждая таблица имеет уникальный набор полей с разными именами и типами данных. Каждая запись таблицы наследует эту структуру; две записи имеют один и тот же тип таблицы, если они приходят из одной таблицы.

Примечание

Вы можете выбрать один из различных соединителей для подключения к различным типам источников данных для приложений на основе холста. Однако при работе с приложениями на основе холста внутри Power Apps Studio столбцы в Microsoft Dataverse называются полями, аналогично всем другим источникам данных. Столбец используется только при ссылке на столбец внутри Dataverse. Дополнительные сведения: Изменения терминологии Dataverse

Полиморфные подстановки

Microsoft Dataverse поддерживает отношения между записями. Каждая запись в таблице Учетные записи имеет столбец подстановки Основной контакт для записи в таблице Контакты. Подстановка может ссылаться только на запись в таблицы Контакты и не может ссылаться на запись, скажем, в таблице Рабочие группы. Эта последняя деталь важна, потому что вы всегда знаете, какие столбцы будут доступны для подстановки.

Dataverse также поддерживает полиморфные подстановки, которые могут ссылаться на запись из любой таблицы в наборе. Например, столбец Владелец может ссылаться на запись в таблице Пользователи или в таблице Рабочие группы. Один и тот же столбец подстановки в разных записях может ссылаться на записи в разных таблицах. В этом случае не всегда известно, какие столбцы будут доступны.

Ссылки на записи холста были разработаны для работы с полиморфными подстановками в Dataverse. Вы также можете использовать ссылки на записи вне этого контекста, чем и отличаются эти два понятия.

В следующем разделе вы начнете изучать эти концепции, работая с подстановкой Владелец.

Отображение столбцов владельца записи

Каждая таблица Dataverse включает в себя столбец Владелец. Этот столбец не может быть удален, вы не можете добавить другой, и он всегда требует значения.

Чтобы показать этот столбец в таблице Учетная запись:

  1. Войдите в Power Apps.

  2. В левой панели области выберите Данные > Таблицы.

  3. В списке таблиц выберите Учетная запись.

  4. В верхнем правом углу откройте список фильтров (для которого по умолчанию установлено значение Default), затем выберите Все.

  5. Прокрутите вниз до тех пор, пока не появится столбец Владелец.

    Столбец владельца в таблице учетных записей.

Этот столбец подстановки может ссылаться на запись в таблице Рабочие группы или в таблице Пользователи. Не каждая запись в этих таблицах имеет разрешение быть Владельцем; проверьте поддерживаемые роли, если вы столкнулись с проблемой.

На этом рисунке показана простая галерея Учетных записей, где таблица Учетные записи была добавлена в приложение в качестве источника данных:

Организации отображаются в элементе управления коллекции.

Важно!

В этом тема на рисунках показаны некоторые имена и другие значения, которые не являются частью образца данных, поставляемых с Dataverse. Шаги точно демонстрируют, как настроить элементы управления для конкретного результата, но ваш опыт будет зависеть от данных вашей организации.

Чтобы показать владельца каждой организации в коллекции, у вас может возникнуть соблазн использовать формулу ThisItem.Owner.Name. Тем не менее, поле имен в таблице Рабочая группа называется Название рабочей группы, а поле имени в таблице Пользователь называется Полное имя. Приложение не может знать, с какой типом подстановки вы работаете до запуска приложения, и оно может варьироваться в зависимости от записей в таблице Учетные записи.

Вам нужна формула, которая может адаптироваться к этим изменениям. Также необходимо добавить источники данных для типов таблиц, которые могут быть у Владельца (в данном случае Пользователи и Рабочие группы). Добавьте эти три источника данных в ваше приложение:

Таблицы учетных записей, рабочих групп и пользователей на панели данных.

С этими источниками данных используйте эту формулу для отображения имени пользователя или рабочей группы:

If( IsType( ThisItem.Owner, Teams ),
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

Организации, отображаемые в элементе управления коллекции с отображаемым полем владельца.

В этой формуле функция IsType проверяет поле Владелец в таблице Рабочие группы. Если оно из этого типа таблицы, функция AsType преобразует его в запись Рабочая группа. На этом этапе вы можете получить доступ ко всем полям таблицы Рабочие группы, включая Название рабочей группы, используя нотацию .Поле. Если функция IsType определяет, что Владелец не является записью в таблице Рабочие группы, это поле должно быть записью в таблице Пользователи, потому что поле Владелец обязательное (не может быть пустым).

Чтобы использовать любые поля ссылки на записи, необходимо сначала использовать функцию AsType, чтобы преобразовать ее в определенный тип таблицы. Вы не можете получить доступ к полям непосредственно из поля Владелец, потому что система не знает, какой тип таблицы вы хотите использовать.

Функция AsType возвращает ошибку, если поле Владелец не соответствует запрашиваемому типу таблицы, поэтому вы можете использовать функцию IfError для упрощения этой формулы. Сначала включите экспериментальную функцию Управление ошибками на уровне формул:

Экспериментальный переключатель для включения управление ошибками на уровне формул.

Затем замените предыдущую формулу этой:

IfError(
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

Фильтр на основе владельца

Поздравляем — вы завершили самый сложный аспект работы со справочной записью. Другие варианты использования более просты, потому что они не обращаются к полям записи. В качестве примера рассмотрим фильтрацию, которую вы изучите в этом разделе.

Добавьте элемент управления Поле со списком над коллекцией и задайте следующие свойства нового элемента управления:

  • Items: Users
  • SelectMultiple: false

Добавлен элемент управления поля со списком над коллекцией со свойством Items, установленным на "Пользователи".

Чтобы отфильтровать коллекцию по конкретному пользователю, выбранному из этого поля со списком, установите для свойства Items коллекции следующую формулу:

Filter( Accounts, Owner = ComboBox1.Selected )

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

Важно!

Инструкции в этом тема точны, если вы точно следуете шагам. Однако любая формула, которая ссылается на элемент управления по его имени, завершается ошибкой, если элемент управления имеет другое имя. Если вы удалите и добавите элемент управления того же типа, номер в конце имени элемента управления изменится. Для любой формулы, которая показывает ошибку, убедитесь, что она содержит правильные имена всех элементов управления.

Вам не нужно использовать функцию IsType или AsType, потому что вы сравниваете ссылки на записи с другими ссылками на записи или с полными записями. Приложение знает тип таблицы ComboBox1.Selected, потому что он получен из таблицы Пользователи. Организации, владельцем которых является рабочая группа, не будут соответствовать критерию фильтра.

Вы можете сделать немного интереснее, поддерживая фильтрацию по пользователю или по рабочей группе.

  1. Освободите пространство в верхней части экрана, изменив размер коллекции и переместив поле со списком, вставив элемент управления Кнопка-переключатель (Переключатель) над коллекцией, а затем установив следующие свойства для нового элемента управления:

    • Items: [ "All", "Users", "Teams" ]
    • Layout: Layout.Horizontal
  2. Для элемента управления Поле со списком (Поле со списком) установите это свойство (если поле со списком исчезает, выберите Users в элементе управления "переключатель"):

    • Visible: Radio1.Selected.Value = "Users"
  3. Скопируйте и вставьте элемент управления Поле со списком (Поле со списком), переместите копию прямо поверх оригинала, а затем установите следующие свойства для копии:

    • Items: Teams
    • Visible: Radio1.Selected.Value = "Teams"

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

  4. Наконец, задайте для свойства Items элемента управления Галерея следующую формулу:

    Filter( Accounts,
        Radio1.Selected.Value = "All"
        Or (Radio1.Selected.Value = "Users" And Owner = ComboBox1.Selected)
        Or (Radio1.Selected.Value = "Teams" And Owner = ComboBox1_1.Selected)
    )
    

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

С этими изменениями вы можете показать все записи или отфильтровать их по пользователю или рабочей группе:

Анимация, показывающая различные отфильтрованные результаты на основе элемента управления переключателя и полей со списком.

Формула может быть полностью делегирована. Часть, которая сравнивает значения переключателей, является константой для всех записей и оценивается перед отправкой остальной части фильтра в Dataverse.

Если вы хотите отфильтровать по типу владельца, вы можете использовать функцию IsType, но она еще не делегируется.

Фильтрация по типу владельца с помощью функции IsType.

Обновление владельца с помощью функции Patch

Вы можете обновить поле Owner (Владелец) таким же образом, как и любую другую подстановку. Чтобы назначить владельца текущей выбранной организации первой рабочей группе:

Patch( Accounts, Gallery1.Selected, { Owner: First( Teams ) } )

Этот подход не отличается от обычной подстановки, потому что приложение знает тип First( Teams ). Если вы хотите первого пользователя вместо этого, замените эту часть на First( Users ). Функция Patch знает, что поле Владелец может быть настроено на любой из этих двух типов таблиц.

Чтобы добавить эту возможность в приложение:

  1. На панели Представление в виде дерева одновременно выберите элемент управления Кнопка-переключатель (Переключатель) и два элемента управления Поле со списком (Поле со списком).

  2. В меню многоточия выберите Копировать эти элементы.

    Копирование нескольких элементов управления с использованием представления в виде дерева.

  3. В этом же меню выберите Вставить.

    Вставка нескольких элементов управления с использованием представления в виде дерева.

  4. Переместите скопированные элементы управления справа от коллекции.

    Перемещенные скопированные элементы управления справа от коллекции.

  5. Выберите скопированный элемент управления Кнопка-переключатель (Переключатель), затем измените эти свойства:

    • Items: [ "Users", "Teams" ]
    • По умолчанию: If( IsType( Gallery1.Selected.Owner, Users ), "Users", "Teams" )

    Убран вариант "Все" из элемента управления "Переключатель".

  6. В элементе управления Кнопка-переключатель (Переключатель) выберите Users (Пользователи), чтобы был виден элемент управления Поле со списком (Поле со списком), который перечисляет пользователей.

  7. Выберите видимый элемент управления Поле со списком (Поле со списком), затем установите для свойства DefaultSelectedItems следующую формулу:

    If( IsType( Gallery1.Selected.Owner, Users ),
        AsType( Gallery1.Selected.Owner, Users ),
        Blank()
    )
    

    Свойство по умолчанию установлено для поля со списком пользователей.

  8. В элементе управления Кнопка-переключатель (Переключатель) выберите Teams (Рабочие группы), чтобы был виден элемент управления Поле со списком (Поле со списком), который перечисляет рабочие группы.

  9. Выберите элемент управления Кнопка-переключатель (Переключатель), чтобы снять выделение у ныне невидимого элемента управления Поле со списком (Поле со списком) для пользователей.

  10. Выберите видимый элемент управления Поле со списком (Поле со списком) для рабочих групп, затем установите для свойства DefaultSelectedItems следующую формулу:

    If( IsType( Gallery1.Selected.Owner, Teams ),
        AsType( Gallery1.Selected.Owner, Teams ),
        Blank()
    )
    

    Свойство по умолчанию установлено для поля со списком рабочих групп Teams.

  11. Вставьте элемент управления Кнопка, переместите его под элемент управления Поле со списком, затем задайте для свойства Text кнопки значение "Patch Owner".

  12. Задайте для свойства OnSelect кнопки эту формулу:

    Patch( Accounts, Gallery1.Selected,
        { Owner: If( Radio1_1.Selected.Value = "Users",
                     ComboBox1_2.Selected,
                     ComboBox1_3.Selected ) } )
    

    Формула установлена для элемента управления "Кнопка".

Скопированные элементы управления Кнопка-переключатель (Переключатель) и Поле со списком (Поле со списком) показывают владельца текущей выбранной организации в коллекции. Используя те же элементы управления, вы можете назначить владельца организации любой рабочей группе или пользователю, выбрав кнопку:

Анимация, показывающая изменение владельца на пользователя или рабочую группу.

Отображение владельца с помощью формы

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

  1. Вставьте элемент управления Форма редактирования, затем измените его размер и переместите его в нижний правый угол.

  2. На вкладке Свойства рядом с правой стороной экрана откройте список Источник данных, затем выберите Организации.

    Элемент управления формы показывает дополнительные поля с пустыми значениями.

  3. Задайте для свойства Items формы значение Gallery1.Selected.

    Элемент управления формы показывает дополнительные поля, заполненные из выбранного элемента в коллекции.

  4. На вкладке Свойства рядом с правой частью экрана выберите Редактировать поля.

  5. На панели Поля выберите многоточие, затем выберите Добавить пользовательскую карточку.

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

    Новая карточка появляется в нижней части элемента управления формы.

  6. Измените размер карточки, как требуется, чтобы отображался весь текст.

    Вставлена пустая пользовательская карточка.

  7. Вставьте элемент управления Подпись в пользовательскую карточке, затем установите для свойства Text метки формулу, которую вы использовали в коллекции:

    If( IsType( ThisItem.Owner, Teams ),
        "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
        "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )
    

    Пользовательская карточка с полем владельца в элементе управления метки.

Для каждого выбора в коллекции в форме отображаются дополнительные поля организации, включая владельца записи. Если вы измените владельца с помощью функции Patch, элемент управления формы также показывает это изменение.

Анимация, показывающая элемент управления формы, реагирующий на изменения в коллекции.

Отображение столбцов клиента

В Dataverse столбец подстановки Клиент представляет собой еще одну полиморфную подстановку, которая очень похожа на Владелец.

Владелец ограничен одним на таблицу, но таблицы могут включать ноль, один или несколько столбцов подстановки Клиент. Системная таблица Контакты включает в себя столбец Имя компании, который является столбцом подстановки Клиент.

Таблица контактов с указанием столбца «Имя компании» в качестве типа данных клиента, что не требуется.

Вы можете добавить больше столбцов подстановки Клиент в таблицу, выбрав тип данных Клиент для нового столбца.

Тип данных клиента из списка типов данных при создании столбца.

Поле подстановки Клиент может ссылаться на запись из таблицы Учетные записи или таблицы Контакты. Вы будете использовать функции IsType и AsType с этими таблицами, так что сейчас хорошее время, чтобы добавить их в качестве источников данных (вы можете оставить поля Рабочие группы и Пользователи).

Таблицы учетных записей, рабочих групп, пользователей и контактов на панели данных.

Обработка полей Клиент и Владелец настолько похожа, что вы можете буквально скопировать приложение (Файл > Сохранить как, затем укажите другое имя) и выполните следующие простые замены:

Местоположение Пример Владелец Пример Клиент
Везде Ответственный 'Customer Name'
Везде Пользователи Организации
Везде Рабочие группы Контакты
Свойство Items коллекции Организации Контакты
Свойство Items формы Организации Контакты
Первый аргумент функции Patch
в свойстве OnSelect кнопок
Организации Контакты
Свойство Items переключателя фильтра [ "All", "Users", "Teams" ] [ "All", "Accounts", "Contacts" ]
Свойство Items переключателя Patch [ "Users", "Teams" ] [ "Accounts", "Contacts" ]
Свойство Visible поля со списком "Users" и "Teams" "Accounts" и "Contacts"

Например, новая коллекция должна иметь это свойство Items:

Filter( Contacts,
    Radio1.Selected.Value = "All"
    Or (Radio1.Selected.Value = "Accounts" And 'Company Name' = ComboBox1.Selected)
    Or (Radio1.Selected.Value = "Contacts" And 'Company Name' = ComboBox1_1.Selected)
)

Приложение "Клиент", полученное из приложения "Владелец" с внесенными простыми изменениями.

Два важных различия между Клиент и Владелец требуют обновления формул внутри коллекции и формы:

  1. Отношения "один ко многим" между Учетные данные и Контакты имеют приоритет при ссылках на эти типы таблиц по имени. Вместо Accounts используйте [@Accounts]; вместо Contacts используйте [@Contacts]. Используя глобальный оператор устранения неоднозначности, вы гарантируете, что ссылаетесь на тип таблицы в IsType и AsType. Эта проблема существует только в контексте записи элементов управления коллекции и формы.

  2. Поле Владелец должно иметь значение, а поля Клиент могут быть пустыми. Чтобы показать правильный результат без имени типа, протестируйте на этот случай с помощью функции IsBlank и вместо этого покажите пустую текстовую строку.

Оба эти изменения находятся в одной формуле, которая отображается в пользовательской карточке в форме, а также в свойстве Text элемента управления метки в коллекции:

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'
)

Обновление свойства Text элемента управления метки подзаголовка в коллекции.

С помощью этих изменений можно просмотреть и изменить поле Название компании в таблице Контакты.

Анимация, которая показывает, как выбор контакта меняет другие элементы управления и форму.

Общие сведения о столбцах подстановки "В отношении"

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

Вы можете начать просто с таблицы Факсы. Эта таблица имеет полиморфный столбец подстановки В отношении, который может ссылаться на таблицы Учетные записи, Контакты и другие таблицы. Вы можете взять приложение для сущности Клиенты и изменить его для сущности Факсы.

Местоположение Пример Клиент Пример Факсы
Везде 'Customer Name' В отношении
Свойство Items коллекции Контакты Факсы
Свойство Items формы Контакты Факсы
Первый аргумент функции Patch
в свойстве OnSelect кнопок
Контакты Факсы

Опять же, вам нужно добавить источник данных: на этот раз для сущности Факсы. На вкладке Вид выберите Источники данных:

Панель данных с таблицами учетных записей, рабочих групп, пользователей, контактов и факсов.

Важное отличие для поля В отношении в том, что оно не ограничивается сущностями Организации и Контакты. На самом деле список таблиц является расширяемым с пользовательскими таблицами. Большая часть приложения может приспособить до этого места без изменений, но вы должны обновить формулу для метки в сущности и форме:

If( IsBlank( ThisItem.Regarding ), "",
    IsType( ThisItem.Regarding, Accounts ),
        "Account: " & AsType( ThisItem.Regarding, Accounts ).'Account Name',
    IsType( ThisItem.Regarding, Contacts ),
        "Contacts: " & AsType( ThisItem.Regarding, Contacts ).'Full Name',
    ""
)

Обновленное свойство Text для элемента управления подзаголовка для подстановок "В отношении".

После внесения этих изменений вы работаете с подстановкой В отношении так же, как вы сделали с подстановками Владелец и Клиент.

Анимация, которая показывает, как выбор пункта в коллекции меняет другие элементы управления и форму.

Общие сведения об отношениях "В отношении"

В отношении отличается от Владелец и Клиент, потому что первое предполагает отношение "многие к одному". По определению, обратное отношение "один ко многим" позволяет написать First( Accounts ).Faxes.

Давайте вернемся назад и рассмотрим определения таблиц. В Dataverse таблицы, такие как Факсы, Задачи, Адреса электронной почты, Заметки, Звонки, Письма и Чаты обозначены как действия. Вы также можете создавать свои собственные пользовательские таблицы действий. При просмотре или создании таблицы действий ее параметры отображаются в разделе Дополнительные параметры.

Настройка таблицы действий при создании таблицы.

Другие таблицы могут быть связаны с таблицей действий, если они включены в качестве задачи действия в параметрах таблицы. Учетные записи, Контакты и многие другие стандартные таблицы так назначены (опять же, в разделе Дополнительные параметры).

Настройка задачи действий при создании таблицы.

Все таблицы действий и таблицы задач действий имеют подразумеваемую связь. Если вы измените фильтр на Все в верхней части экрана, выберите таблицу Факсы, затем выберите вкладку Отношения, все таблицы, которые могут быть целью подстановки В отношении, появляются.

Отношения таблицы факсов, показывающее отношения многие к одному для подстановки «В отношении».

Если вы показываете отношения для таблицы Учетные записи, появятся все таблицы, которые могут быть источником поля подстановки В отношении.

Отношения таблицы учетных записей, показывающее отношения «один ко многим» для подстановки «В отношении».

Что все это значит?

  • Когда вы пишете формулы, вы должны учитывать, что список таблиц действий не фиксирован, и вы можете создать свой собственный. Формула должна надлежащим образом обрабатывать таблицу действий, которую вы не ожидали.
  • Задачи действия и действия имеют отношение "один ко многим". Вы можете легко запросить все факсы, которые относятся к организации.

Чтобы изучить эту концепцию в приложении:

  1. Добавьте другой экран.

    Вставьте пустой экран.

  2. Вставьте элемент управления коллекции, измените его размер, затем переместите его в левую часть экрана.

  3. На вкладке Свойства в правой части экрана установите для свойства Items коллекции значение Организации.

    Установите для свойства Items значение "Организации" в области свойств.

  4. Установите макет коллекции на Заголовок, затем установите в поле заголовка значение Название организации.

    Задайте макет "Заголовок" для элемента управления коллекции на панели свойств.

  5. Добавьте вторую коллекцию, измените ее размер, затем переместите ее в правую часть экрана.

  6. Присвойте свойству Items новой коллекции значение Gallery2.Selected.Faxes.

    Этот шаг возвращает отфильтрованный список факсов для данной организации.

    Задайте свойство Items коллекции, которая показывает факсы.

  7. Установите макет коллекции Заголовок и подзаголовок, затем установите поле заголовка, чтобы показать поле Тема (которое может быть строчным тема).

    Установить для заголовка поле "Тема".

При выборе элемента в списке организаций в списке факсов отображаются факсы только для этой организации.

Анимация, показывающая выбор в коллекции организаций, управляющей списком факсов.

Таблица действий

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

Для последнего сценария используется таблица Действие. Вы можете показать эту таблицу, включив Все в правом верхнем углу, чтобы удалить фильтр из списка таблиц.

Список таблиц, показывающих таблицу действий.

Таблица Действия особенная. Всякий раз, когда вы добавляете запись в таблицу Факсы, система также создает запись в таблице Действие со столбцами, которые являются общими во всех таблицах действий. Из этих столбцов столбец Тема является одним из самых интересных.

Вы можете показать все действия, изменив только одну строку в предыдущем примере. Замените Gallery2.Selected.Faxes на Gallery2.Selected.Activities.

Изменение свойства Items для второй коллекции, изменяющее факсы на действия.

Записи поступают из таблицы Действие, но тем не менее вы можете использовать функцию IsType, чтобы определить, какие они имеют виды действий. Опять же, прежде чем использовать IsType с типом таблицы, вы должны добавить источник данных.

Панели данных, показывающие все таблицы, необходимые для функции IsType.

Используя эту формулу, вы можете показать тип записи в элементе управления "Метка" в коллекции:

If( IsType( ThisItem, Faxes] ), "Fax",
    IsType( ThisItem, 'Phone Calls' ), "Phone Call",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

Установите для свойства text формулу, чтобы отображать информацию для факсов, телефонных звонков и других действий.

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

If( IsType( ThisItem, Faxes ), "Fax",
    IsType( ThisItem, 'Phone Calls' ),
       "Phone Call: " &
       AsType( ThisItem, 'Phone Calls' ).'Phone Number' &
       " (" & AsType( ThisItem, 'Phone Calls' ).Direction & ")",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

Развернутое свойство text с дополнительной информацией для звонка.

В результате приложение отображает полный список действий. Поле Тема появляется для всех видов действий, независимо от того, учитывает ли их формула или нет. Для типов действий, о которых вы знаете, вы можете показать их имена типов и специфичную для типов информацию для каждого действия.

Готовый экран с информацией о различных видах действий.

Таблица заметок

До сих пор все примеры В отношении были основаны на действиях, но таблица Заметки представляет другой случай.

При создании таблицы можно включить вложения.

Включение вложений и заметок при создании таблицы.

Если вы установите флажок для включения вложений, вы создадите отношение В отношении с таблицей Заметки, как показано на рисунке для таблицы Учетные записи:

Таблица учетных записей, показывающая отношение с таблице заметок через отношение «один ко многим».

Помимо этой разницы, вы используете подстановку В отношении так же, как вы используете действия. Таблицы, включенные для вложений, имеют отношение один ко многим с таблицей Заметки, как в этом примере:

First( Accounts ).Notes

Примечание

На момент написания этой статьи подстановка В отношении недоступна для таблицы Заметки. Вы не можете читать или фильтровать на основе столбца В отношении, и вы не можете установить столбец с помощью функции Patch.

Однако доступно обратное отношение Заметки "один ко многим", поэтому вы можете отфильтровать список заметок для записи, которая включена для вложений. Вы также можете использовать функцию Relate для добавления заметки в таблицу Заметки записи, но заметка должна быть создана в первую очередь, как в этом примере:

Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note" } ) )

Стороны действия

На момент написания статьи приложения на основе холста не поддерживают стороны действия.

Примечание

Каковы ваши предпочтения в отношении языка документации? Пройдите краткий опрос (обратите внимание, что этот опрос представлен на английском языке).

Опрос займет около семи минут. Личные данные не собираются (заявление о конфиденциальности).