База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как использовать временное хранилище в 1С для временного хранения данных? › RE: Как использовать временное хранилище в 1С для временного хранения данных?
Работа с временным хранилищем в 1С — это удобный способ временно сохранять данные в памяти сеанса пользователя без записи их в базу данных. Временное хранилище используется для хранения больших объемов данных, которые не нужно сохранять постоянно, например, для передачи между формами, временного кеширования или обмена данными между процедурами.
### Основные моменты работы с временным хранилищем
1. **Создание временного хранилища**
Временное хранилище создаётся с помощью объекта ВременноеХранилище. Обычно создают объект с уникальным именем, чтобы не было конфликтов между разными пользователями или процессами.
|
1 2 |
ИмяХранилища = "МоёВременноеХранилище"; ВремХранилище = ВременноеХранилище.Получить(ИмяХранилища); |
Если хранилище с таким именем не существует, оно будет создано.
2. **Запись данных**
Данные в временное хранилище записываются с помощью метода Записать(). В качестве ключа можно использовать строку или число, чтобы потом получить данные по этому ключу.
|
1 |
ВремХранилище.Записать("Ключ1", МассивДанных); |
3. **Чтение данных**
Для получения данных используется метод Прочитать() с указанием ключа.
|
1 |
Данные = ВремХранилище.Прочитать("Ключ1"); |
Если по ключу данных нет, будет возвращено Неопределено.
4. **Удаление данных**
Для удаления данных по ключу используется метод Удалить().
|
1 |
ВремХранилище.Удалить("Ключ1"); |
5. **Очистка всего временного хранилища**
Чтобы очистить все данные, можно использовать метод Очистить().
|
1 |
ВремХранилище.Очистить(); |
6. **Особенности**
— Временное хранилище живёт в рамках сеанса пользователя (или процесса), данные не сохраняются в базе.
— Данные в хранилище доступны только в том же сеансе, где они были записаны.
— Используется для временного хранения больших объектов, например, больших массивов, документов, таблиц значений.
— Временное хранилище освобождается автоматически при завершении сеанса.
—
### Пример использования
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Процедура ПримерРаботыСВременнымХранилищем() ИмяХранилища = "ТестовоеВременноеХранилище"; ВремХранилище = ВременноеХранилище.Получить(ИмяХранилища); // Запишем данные Таблица = Новый ТаблицаЗначений; Таблица.Колонки.Добавить("Имя"); Таблица.Колонки.Добавить("Возраст"); Таблица.ДобавитьСтроку(Новый Структура("Имя, Возраст", "Иван", 30)); Таблица.ДобавитьСтроку(Новый Структура("Имя, Возраст", "Мария", 25)); ВремХранилище.Записать("Пользователи", Таблица); // Прочитаем данные Данные = ВремХранилище.Прочитать("Пользователи"); Если Данные Неопределено Тогда Для Каждого Строка Из Данные Цикл Сообщить(Строка.Имя + ", " + Строка.Возраст); КонецЦикла; КонецЕсли; // Очистим хранилище ВремХранилище.Очистить(); КонецПроцедуры |
—
### Рекомендации
— Используйте уникальные имена для временных хранилищ, чтобы избежать конфликтов.
— Не храните в временном хранилище критичные данные, которые должны сохраняться между сеансами.
— Для обмена данными между пользователями используйте постоянное хранилище или базу данных.
—
Рекомендую посмотреть здесь:
https://infostart.ru/public/1663203/ (пример работы с временным хранилищем и серверными хранилищами)
https://its.1c.ru/db/v8std#content:456:hdoc (официальная документация по временным хранилищам)