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

В Power Apps большинство приложений на основе холста используют внешние данные, которые хранятся в облачных службах, называемых Источники данных. Типичный пример — это таблица в файле Excel, который хранится в службе OneDrive. Приложения получают доступ к источникам данных с помощью подключений.

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

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

Типы источников данных

Источники данных можно подключить к облачной службе или они могут быть локальными для приложения.

Подключение источников данных

Самые распространенные источники данных — это таблицы, которые можно использовать для получения и хранения информации. Подключения к источникам данных можно использовать для чтения и записи данных в книгах Microsoft Excel, списках, созданных с помощью Microsoft Lists, библиотеках SharePoint, таблицах SQL и во многих других форматах, в которых данные могут храниться в облачных службах, таких как OneDrive, DropBox и SQL Server.

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

Локальные источники данных

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

Эти элементы управления используются в Power Apps при запросе на создание приложения на основе данных. Приложение использует внутреннюю таблицу для хранения и обработки данных, поступающих из источника данных.

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

Типы таблиц

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

Внешние таблицы хранятся в источнике данных для последующего извлечения и совместного использования. Power Apps предоставляет подключения для чтения и записи хранимых данных. В рамках подключения вы можете получить доступ к нескольким таблицам данных. Вы можете выбрать таблицы, требуемые для использования в приложении, каждая из которых становится отдельным источником данных.

Дополнительные сведения о внутренних и внешних таблицах в облачной службе см. в статье Работа с таблицами.

Работа с таблицами

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

  • Источник данных имеет такие же имена столбцов и типы данных, что и в базовой таблице в подключении.

    Замечание

    Для источников данных SharePoint и Excel, содержащих имена столбцов с пробелами, Power Apps заменяет эти пробелы кодом "_x0020_". Например, столбец "Имя столбца" из SharePoint или Excel отображается как "Column_x0020_Name" в Power Apps при отображении в структуре данных или использовании в формуле.

  • Источник данных загружается из службы автоматически при загрузке приложения. Вы можете принудительно обновить данные с помощью функции Refresh.

  • Работая с приложением, пользователи могут создавать, изменять и удалять записи, а также передавать соответствующие изменения в базовую таблицу в службе.

    • Записи можно создавать с помощью функций Patch и Collect.
    • Записи можно изменять с помощью функций Patch, Update и UpdateIf.
    • Записи можно удалять с помощью функций Remove и RemoveIf.
    • Ошибки, возникающие при работе с источником данных, можно просмотреть с помощью функции Errors.
  • Используя функции DataSourceInfo, Defaults и Validate, можно получить сведения об источнике данных, которые позволяют оптимизировать взаимодействие с пользователем.

Создание источников данных

С помощью Power Apps невозможно создать подключенный источник данных или изменить его структуру. Источник данных должен существовать в службе. Например, чтобы создать таблицу в книге Excel, хранимой в OneDrive, сначала требуется создать книгу с помощью Excel Online в OneDrive. Затем вы создаёте подключение к ней из вашего приложения.

Однако источники данных коллекции можно создавать и изменять внутри приложения. Но такие источники данных являются временными.

Отображение одной или нескольких записей

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

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

  • Информация хранится и передается через службу хранения (в данном случае Microsoft Списки или SharePoint Online).
  • За счет подключения приложение получает доступ к этим сведениям. Подключение служит для аутентификации пользователя с последующим получением доступа к данным.
  • При запуске приложения или использовании функции Refresh сведения извлекаются из подключения в источник данных в приложении для локального использования.
  • Формулы используются для чтения сведений и их представления в отображаемых элементах управления. Чтобы отобразить записи источника данных, используйте коллекцию на экране и запишите свойство Items в источник данных: Галерея.Items = DataSource. Вы соединяете элементы управления в галерее и с галереей, используя их свойство Default.
  • Источник данных также является таблицей. Так что вы можете использовать функции Filter, Sort, AddColumns и другие для доработки и расширения источника данных, прежде чем использовать его. Вы также можете использовать функции Lookup, First, Last и другие для работы с отдельными записями.

Изменение записи

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

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

Поток информации для обновления источника данных. На этой схеме показана процедура передачи данных для обновления источника данных:

  • Элемент управления Форма редактирования предоставляет контейнер для карточек ввода, которые состоят из элементов управления пользовательским вводом, таких как текстовое поле ввода или ползунок. Свойства DataSource и Item определяют запись, которую следует изменить.
  • Каждая карта ввода имеет свойство Default, которое задается для поля записи ThisItem формы. Контролы на карте ввода принимают входные значения из параметра по умолчанию. Обычно не нужно менять это значение по умолчанию.
  • Каждая карта ввода предоставляет свойство Update. Это свойство сопоставляет ввод пользователя с конкретным полем записи для обратной записи в источник данных. Обычно не нужно менять это свойство.
  • С помощью элемента управления "Кнопка" или "Изображение" на экране пользователь может сохранить изменения в записи. Для этого формула OnSelect элемента управления вызывает функцию SubmitForm. SubmitForm считывает все свойства Update карточек и записывает их обратно в источник данных.
  • Иногда возникают проблемы. Сетевое подключение может отключиться или проверку может выполнять служба, неизвестная приложению. Свойства Error и ErrorKind элемента управления "Форма" предоставляют эти данные для отображения пользователю.

Для более детализированного контроля над процессом можно также использовать функции Patch и Errors. Элемент управления Форма редактирования предоставляет свойство Updates, позволяющее прочитать значения полей в форме. Это свойство можно также использовать для вызова настраиваемого соединителя для подключения, чтобы полностью обойти функции Patch и SubmitForm.

Ратификация

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

  • Немедленный отзыв для пользователя. Лучше всего устранять проблему сразу после ее возникновения, когда она еще свежа в памяти пользователя. Текст, выделенный красным цветом, может появиться при каждом касании или нажатии клавиши. По этому тексту можно понять, что при вводе произошла проблема.
  • Меньше сетевого трафика и меньше задержка пользователя. Чем больше обнаружено проблем в приложении, тем меньше нужно выполнять действий по сети для обнаружения и устранения проблем. Каждое взаимодействие требует времени, в течение которого пользователь должен ждать, прежде чем продолжить работу.

В Power Apps предусмотрено два средства проверки:

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

Обработка ошибок

Теперь, когда вы проверили свою запись, обновите ее с помощью Исправление.

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

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

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

Функция Errors возвращает таблицу сведений об ошибках. Это могут быть сведения о столбце, если ошибку можно отнести к определенному столбцу. Используйте сообщения об ошибках на уровне столбца в контролах меток, расположенных рядом со столбцом на экране редактирования. Используйте сообщения об ошибках на уровне записей, где столбец в таблице ошибок является пустым, возле кнопки Сохранить для всей записи.

Работа с большими источниками данных

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

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

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

Это важно

По умолчанию Power Apps извлекает только первые записи 500 из источника данных. Это ограничение можно увеличить до 2000 записей в параметрах приложения. Если источник данных содержит больше записей, и формула не полностью делегируема, в Power Apps Studio появится желтый треугольник предупреждения делегирования. При появлении этого предупреждения приложение может не возвращать все соответствующие записи во время выполнения. Чтобы избежать потери данных в больших наборах данных, используйте делегированные функции, такие как Filter и Sort с поддерживаемыми источниками данных или рассмотрите возможность использования Microsoft Dataverse, которая имеет более широкую поддержку делегирования.

Определение и разрешение предупреждений делегирования

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

  1. Выберите элемент управления или формулу, обрабатывающую источник данных.
  2. Найдите желтый значок треугольника в Power Apps Studio.
  3. Наведите указатель мыши на треугольник, чтобы прочитать предупреждающее сообщение делегирования.

Чтобы устранить проблемы с делегированием, выполните приведенные далее действия.

  • Замените неотменяемые функции (например, Search для текстовых столбцов в SharePoint) делегированными альтернативами, где это возможно.
  • Переключитесь на Microsoft Dataverse в качестве источника данных для самой широкой поддержки делегирования.
  • Используйте серверные представления (для SharePoint) или хранимых процедур (для SQL) для предварительной фильтрации данных.
  • Чтобы устранить не отмеченные проблемы с делегированием, используйте средство Live Monitor в разделе Расширенные инструменты для проверки отправляемых Power Apps запросов и данных, возвращаемых из каждого источника данных. Для получения дополнительной информации см. статью Отладка canvas приложений с помощью Live Monitor.

Collections

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

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

  • Коллекции можно создавать динамически с помощью функции Collect. Их не нужно предварительно настраивать, как это требуется для источников данных с подключением.
  • Столбцы коллекции можно изменить в любое время, используя функцию Collect.
  • В коллекциях можно использовать повторяющиеся записи. В коллекции может существовать несколько копий одной записи. Функции, такие как Remove, сработают при первом обнаруженном совпадении, если не указан аргумент All.
  • С помощью функций SaveData и LoadData можно сохранить и перезагрузить копию коллекции. Сведения хранятся в безопасном месте, к которому не могут получить доступ другие пользователи, приложения или устройства.
  • С помощью элементов управления Экспорт и Импорт можно сохранить и загрузить копию коллекции в файл, с которым пользователь может взаимодействовать.

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

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

Устранение распространенных проблем с источником данных

По умолчанию Power Apps извлекает только первые 500 записей из источника данных. Если в вашей коллекции отсутствуют записи, скорее всего, у вас возникла проблема с делегированием. Проверьте, нет ли предупреждения в виде желтого треугольника в формуле Элементы вашей коллекции, и убедитесь, что используемая формула фильтра поддерживается для вашего источника данных. См. раздел "Работа с большими источниками данных" для действий по разрешению.

Имена столбцов показывают x0020 в моих формулах

Если в списке SharePoint или таблице Excel имена столбцов содержат пробелы (например, My Column), Power Apps заменяет пробелы на _x0020_ в формулах (например, MyTable.My_x0020_Column). Это ожидаемое поведение. Переименуйте столбец в исходных данных, чтобы удалить пробелы или продолжить использование закодированного имени в формулах.

Изменения источника данных не отображаются в моем приложении

Если базовые данные изменились внешне (например, запись была добавлена в SharePoint), приложение не автоматически обнаруживает изменения во время выполнения. Используйте функцию "Обновить ", чтобы принудительно перезагрузить текущие данные приложения. Например, добавьте кнопку с OnSelect = Refresh(MyDataSource).

Когда следует использовать Patch вместо SubmitForm?

Используйте SubmitForm , если у вас есть элемент управления "Изменить форму ", он обрабатывает проверку, сопоставление полей и отображение ошибок автоматически. Используйте исправление , если необходимо:

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