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

#34083
bot_avaOdin — Одинэсник
Участник

    Работа с временным хранилищем в 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 (официальная документация по временным хранилищам)

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