Функции SaveData, LoadData и ClearData

Применимо к: приложениям на основе холста

Сохраняет и перезагружает коллекцию из хранилища узла приложения.

Заметка

Эти функции теперь можно использовать при выполнении приложения в веб-браузере в качестве экспериментальной функции. По умолчанию эта функция выключена. Чтобы включить, перейдите в Настройки>Предстоящие функции>Экспериментальные функции>Включены SaveData, LoadData, ClearData в веб-проигрывателе." и включите переключатель. Чтобы отправить отзыв об этой экспериментальной функции, перейдите на форум сообщества Power Apps.

Описание

Функция SaveData сохраняет коллекцию под определенным именем для дальнейшего использования.

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

Функция ClearData очищает хранилище под определенным именем или очищает все хранилище, связанное с приложением, если имя не указано.

Заметка

  • Общее имя между SaveData, LoadData и ClearData — это ключ, а не имя файла. Оно не должно быть сложным, так как имена уникальны для каждого приложения и нет опасности конфликта имен. Имя не должно содержать ни одного из этих символов: *".?:\<>|/.
  • SaveData ограничен 1 МБ данных для Power Apps в Teams и в веб-браузере. Нет фиксированного лимита для Power Apps в мобильном проигрывателе, но существуют практические ограничения, обсуждаемые ниже.
  • Не используйте SaveData для хранения конфиденциальных данных в Интернете, поскольку они будут храниться в виде обычного текста.

Используйте эти функции для улучшения производительности при запуске приложения за счет следующих факторов:

  • Кеширование данных в формуле App.OnStart при первом запуске.
  • Перезагрузка локального кэша при следующих запусках.

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

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

  • Создание приложения в Power Apps Studio.

Чтобы проверить свое приложение, запустите его в Power Apps Mobile на iPhone или устройстве Android.

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

  • Устройство и операционная система.
  • Память, которую использует проигрыватель Power Apps.
  • Сложность приложения с экранами и элементами управления.

Протестируйте свое приложение с ожидаемыми сценариями на типе устройств, на которых, как вы ожидаете, будет работать приложение при хранении больших объемов данных. Ожидается, что обычно будет от 30 до 70 МБ доступной памяти.

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

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

Безопасность данных

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

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

Операционная система и браузер отвечают за изоляцию данных между приложениями Power Apps и другими приложениями на устройстве, а также веб-сайтами. Например, операционная система отвечает за изоляцию данных, хранимых в Microsoft Outlook, от данных, хранимых в Power Apps, a также за изоляцию этих данных от веб-сайтов, таких как Bing.com или PowerApps.com. Встроенные в операционную систему возможности песочницы приложений используются для хранилища SaveData, которое обычно недоступно для пользователя или скрыто от него.

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

Данные могут — или не могут — изолироваться между разными пользователями Power Apps, если пользователь операционной системы один и тот же. Не все проигрыватели Power Apps обрабатывают этот сценарий одинаково. Например, войдя в систему как один и тот же пользователь Windows, в проигрывателе Power Apps пользователь выходит из Power Apps и затем входит как другой пользователь Power Apps. Данные, хранившиеся в приложении до смены пользователя Power Apps пользователя, могут быть доступны второму пользователю Power Apps в том же приложении. Данные также могут быть удалены, и первый пользователь Power Apps больше не сможет получить к ним доступ. Это поведение зависит от проигрывателей Power Apps.

Операционная система может также шифровать данные или вы можете использовать инструмент управления мобильными устройствами, такой как Microsoft Intune. Данные, хранящиеся при воспроизведении приложения в веб-браузере, не зашифрованы.

Синтаксис

SaveData( Collection, Name )
LoadData( Collection, Name [, IgnoreNonexistentFile ])

  • Collection — обязательный аргумент. Коллекция, которую требуется сохранить или загрузить.
  • Name — обязательный аргумент. Название хранилища. Имя должно быть одинаковым для сохранения и загрузки одного набора данных. Пространство имен не используется совместно с другими приложениями. Имена не должны содержать ни одного из этих символов: *".?:\<>|/.
  • IgnoreNonexistentFile — необязательный параметр. Логическое значение, указывающее, что делать, если файл еще не существует. Используйте false (по умолчанию), чтобы возвращать ошибку, и true, чтобы подавить ошибку.

ClearData( [Имя] )

  • Имя — необязательный аргумент. Имя хранилища, ранее сохраненного с помощью SaveData. Если Имя не указано, все хранилище, связанное с приложением, очищается.

Примеры

Формула Описание Результат
SaveData( LocalCache, "MyCache" ) Сохранение коллекции LocalCache на устройство пользователя под названием "MyCache", подходит для функции LoadData, чтобы извлечь данные позже. Данные сохраняются на узле приложения под именем «MyCache».
LoadData( LocalCache, "MyCache" ) Загружает коллекцию LocalCache с устройства пользователя под именем "MyCache", ранее сохраненную вызовом функции SaveData. Данные загружаются из узла приложения под именем «MyCache».
ClearData( "MyCache" ) Очищает хранилище под именем «MyCache». Любые данные, хранящиеся под этим именем, больше не будут доступны через LoadData. Данные удаляются из узла приложения под именем «MyCache».
ClearData() Очистите все хранилище, связанное с этим приложением. На данные, хранящиеся в других приложениях, это не повлияет. Все данные удаляются с узла приложения.

Простой пример автономной работы

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

Заметка

В этом примере для захвата изображений используется элемент управления камерой. Поскольку SaveData ограничено 1 МБ данных при работе в Teams или веб-браузере, этот пример не будет работать с несколькими изображениями. Кроме того, в зависимости от камеры это может не работать даже с одним изображением. Используйте устройство для работы с этим полным примером или удалите элемент управления камерой и часть изображения из этого примера для запуска в Teams или в веб-браузере.

  1. Создайте пустое приложение на основе холста с макетом планшета. Для более подробной информации читайте создание приложения из шаблона и выберите Макет планшета в пункте Пустое приложение.

  2. Добавьте элемент управления Text input (Ввод текста) и элемент управления Camera (Камера) и расположите их примерно так, как показано:

    Элементы управления Text input и

  3. Добавьте элемент управления Button.

  4. Дважды щелкните элемент управления кнопки, чтобы изменить текст кнопки на Add Item (или измените свойство Text).

  5. Установите для свойства OnSelect элемента управления кнопки эту формулу, которая будет добавлять элемент в нашу коллекцию:

    Collect( MyItems, { Item: TextInput1.Text, Picture: Camera1.Photo } )
    

    Добавлен элемент управления кнопки с текстом

  6. Добавьте другой элемент управления Button.

  7. Дважды щелкните элемент управления кнопки, чтобы изменить текст кнопки на Сохранить данные (или измените свойство Text).

  8. Установите для свойства OnSelect элемента управления кнопки эту формулу, чтобы сохранить нашу коллекцию на локальном устройстве:

    SaveData( MyItems, "LocalSavedItems" )
    

    Добавлен элемент управления кнопки с текстом

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

  9. Добавьте третий элемент управления Button.

  10. Дважды щелкните элемент управления кнопки, чтобы изменить текст кнопки на Загрузить данные (или измените свойство Text).

  11. Установите для свойства OnSelect элемента управления кнопки эту формулу, чтобы загрузить нашу коллекцию из локального устройства:

    LoadData( MyItems, "LocalSavedItems" )
    

    Добавлен элемент управления кнопки с текстом

  12. Добавьте элемент управления Gallery (Коллекция) с вертикальным макетом, который включает в себя области изображения и текста:

    Выбор варианта коллекции, выбран вариант

  13. При появлении запроса выберите коллекцию MyItems как источник данных для этой коллекции. Это задает для свойства Items элемента управления Gallery (Коллекция):

    Выбор коллекции источника данных. Элемент управления image в шаблоне коллекции должен по умолчанию иметь свойство Image как ThisItem.Picture и элементы управления label должны иметь по умолчанию свойства Text как ThisItem.Item. Проверьте эти формулы, если после добавления элементов в следующих шагах вы ничего не видите в коллекции.

  14. Расположите элемент управления справа от других элементов управления:

    Коллекция перемещена в правую часть экрана.

  15. Сохраните приложение. Если это был первый раз, когда оно было сохранено, нет необходимости публиковать его. Если это не первый раз, опубликуйте приложение после сохранения.

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

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

  17. Введите имя и сфотографируйте предмет.

  18. Нажмите кнопку Добавить элемент. Повторите добавление элементов пару раз, чтобы загрузить свою коллекцию.

    Приложение работает с тремя добавленными элементами.

  19. Выберите кнопку Сохранить данные. Это сохранит данные в вашей коллекции на локальном устройстве.

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

  21. Снова запустите приложение. Коллекция в памяти снова будет отображаться как пустая в коллекции.

    Приложение снова работает без добавленных элементов.

  22. Выберите кнопку Загрузить данные. Коллекция будет снова заполнена из сохраненных данных на вашем устройстве, и ваши предметы вернутся в коллекцию. Коллекция была пуста до того, как эта кнопка вызвала функцию LoadData; не было необходимости вызывать функцию Collect или ClearCollect перед загрузкой данных из хранилища.

    Приложение работает с тремя элементами, восстановленными после вызова функции LoadData.

  23. Снова выберите кнопку Загрузить данные. Сохраненные данные будут добавлены в конец коллекции, а в коллекции появится полоса прокрутки. Если вы хотите заменить, а не добавить, используйте сначала функцию Clear ,чтобы очистить коллекцию перед вызовом функции LoadData.

    Приложение работает с шестью элементами, восстановленными после вызова функции LoadData дважды.

Более сложный пример автономного режима

Подробный пример см. в статье о простых возможностях автономной работы.