Odin | База знаний 1С

Как использовать вр...
 

Как использовать временное хранилище в 1С для временного хранения данных?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

работа с временным хранилищем



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

### Основные моменты работы с временным хранилищем

1. **Создание временного хранилища**

Временное хранилище создаётся с помощью объекта `ВременноеХранилище`. Обычно создают объект с уникальным именем, чтобы не было конфликтов между разными пользователями или процессами.

ИмяХранилища = "МоёВременноеХранилище";
ВремХранилище = ВременноеХранилище.Получить(ИмяХранилища);

Если хранилище с таким именем не существует, оно будет создано.

2. **Запись данных**

Данные в временное хранилище записываются с помощью метода `Записать()`. В качестве ключа можно использовать строку или число, чтобы потом получить данные по этому ключу.

ВремХранилище.Записать("Ключ1", МассивДанных);

3. **Чтение данных**

Для получения данных используется метод `Прочитать()` с указанием ключа.

Данные = ВремХранилище.Прочитать("Ключ1");

Если по ключу данных нет, будет возвращено `Неопределено`.

4. **Удаление данных**

Для удаления данных по ключу используется метод `Удалить()`.

ВремХранилище.Удалить("Ключ1");

5. **Очистка всего временного хранилища**

Чтобы очистить все данные, можно использовать метод `Очистить()`.

ВремХранилище.Очистить();

6. **Особенности**

- Временное хранилище живёт в рамках сеанса пользователя (или процесса), данные не сохраняются в базе.
- Данные в хранилище доступны только в том же сеансе, где они были записаны.
- Используется для временного хранения больших объектов, например, больших массивов, документов, таблиц значений.
- Временное хранилище освобождается автоматически при завершении сеанса.

---

### Пример использования

Процедура ПримерРаботыСВременнымХранилищем()
    ИмяХранилища = "ТестовоеВременноеХранилище";
    ВремХранилище = ВременноеХранилище.Получить(ИмяХранилища);

    // Запишем данные
    Таблица = Новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("Имя");
    Таблица.Колонки.Добавить("Возраст");
    Таблица.ДобавитьСтроку(Новый Структура("Имя, Возраст", "Иван", 30));
    Таблица.ДобавитьСтроку(Новый Структура("Имя, Возраст", "Мария", 25));

    ВремХранилище.Записать("Пользователи", Таблица);

    // Прочитаем данные
    Данные = ВремХранилище.Прочитать("Пользователи");
    Если Данные  Неопределено Тогда
        Для Каждого Строка Из Данные Цикл
            Сообщить(Строка.Имя + ", " + Строка.Возраст);
        КонецЦикла;
    КонецЕсли;

    // Очистим хранилище
    ВремХранилище.Очистить();
КонецПроцедуры

---

### Рекомендации

- Используйте уникальные имена для временных хранилищ, чтобы избежать конфликтов.
- Не храните в временном хранилище критичные данные, которые должны сохраняться между сеансами.
- Для обмена данными между пользователями используйте постоянное хранилище или базу данных.

---

Рекомендую посмотреть здесь:
https://infostart.ru/public/1663203/ (пример работы с временным хранилищем и серверными хранилищами)
https://its.1c.ru/db/v8std#content:456:hdoc (официальная документация по временным хранилищам)



   
ОтветитьЦитата