← Назад к вопросам

Где хранятся виртуальные таблицы?

2.0 Middle🔥 141 комментариев
#Запросы и оптимизация#СУБД и хранение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Где хранятся виртуальные таблицы

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

Определение виртуальных таблиц

Виртуальные таблицы — это логические представления данных, сформированные на основе:

  • Запросов к другим таблицам
  • Результатов вычислений
  • Объединения нескольких источников
  • Регистров с специальной логикой

Они НЕ хранятся физически в базе данных как отдельные таблицы.

Где они существуют

В памяти сеанса 1С:

  • При выполнении запроса система формирует результирующий набор
  • Данные временно存ятся в памяти сеанса
  • После завершения запроса данные могут быть выгружены
  • Каждый сеанс имеет свой набор виртуальных таблиц

В памяти базы данных:

  • СУБД может кэшировать результаты запросов
  • На разных уровнях кэширования
  • Но это транзиентное хранилище (временное)

Примеры виртуальных таблиц в 1С

// Виртуальная таблица из запроса
Запрос = Новый Запрос(
    "ВЫБРАТЬ
        Товары.Ссылка КАК Товар,
        Товары.Наименование КАК Наименование,
        СУММА(Остатки.Количество) КАК ОбщееКоличество
    ИЗ
        РегистрНакопления.ОстаткиТоваров.Остатки(, Товар В (&ЛистТоваров)) КАК Остатки
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ
        Справочник.Товары КАК Товары
    ПО
        Остатки.Товар = Товары.Ссылка
    СГРУППИРОВАТЬ ПО
        Товары.Ссылка,
        Товары.Наименование"
);

// Эта таблица виртуальна — результат существует только в памяти
Результат = Запрос.Выполнить();
Таблица = Результат.Выгрузить();

Регистры как виртуальные таблицы

Остатки регистра накопления:

  • Данные хранятся в таблице регистра
  • Но «Остатки» (виртуальная таблица) рассчитывается на лету
  • Система пересчитывает остатки при каждом запросе
  • Не хранится в БД как отдельная таблица
// Виртуальная таблица остатков
Запрос = Новый Запрос(
    "ВЫБРАТЬ
        Товар,
        Склад,
        СУММА(Количество) КАК Остаток
    ИЗ
        РегистрНакопления.ОстаткиТоваров.Остатки(, )
    СГРУППИРОВАТЬ ПО
        Товар, Склад"
);

// Таблица «Остатки» не хранится в БД!
// Она рассчитывается из записей регистра накопления

Внутренние таблицы значений

Таблицы значений в 1С — это тоже виртуальные структуры:

// Таблица значений хранится в памяти программы
Таблица = Новый ТаблицаЗначений();
Таблица.Колонки.Добавить("Товар");
Таблица.Колонки.Добавить("Количество");

// Добавление данных
Строка = Таблица.Добавить();
Строка.Товар = СправочникТовары.ПолучитьСсылку(УИД);
Строка.Количество = 10;

// Эта таблица существует только в памяти
// При выгрузке в БД она становится реальной таблицей

Отличие от реальных таблиц

ХарактеристикаВиртуальныеРеальные
ХранилищеПамять / SQL запросФизические таблицы БД
Время жизниСеанс / ЗапросПостоянно
ИндексированиеНет встроенногоДа, индексы на полях
Быстрота доступаЗависит от запросаБыстро (индексы)
ИзменяемостьТолько пересозданиеПрямое обновление
ПримерыОстатки, расчётыСправочники, документы

Система представлений и VIEW

В реляционных БД существуют VIEW (представления) — это аналог виртуальных таблиц:

-- В PostgreSQL/MSSQL виртуальная таблица = VIEW
CREATE VIEW ОстаткиТоваров AS
SELECT
    Товар,
    Склад,
    SUM(Количество) AS Остаток
FROM ОстаткиРегистра
GROUP BY Товар, Склад;

Когда используются

  • Отчёты — формирование данных для аналитики
  • Остатки регистров — расчёт текущих остатков
  • Промежуточные расчёты — в сложных запросах
  • Таблицы значений в коде — манипуляция данными в памяти
  • Агрегирование и группировка — объединение нескольких источников

Оптимизация работы

  1. Избегайте создания больших виртуальных таблиц — они потребляют память сеанса
  2. Используйте фильтры в запросе — сужайте результирующие наборы
  3. Кэшируйте результаты — если один запрос часто повторяется
  4. Оптимизируйте SQL — используйте индексы реальных таблиц
  5. Выгружайте результаты — из памяти в БД если нужна постоянность

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

Где хранятся виртуальные таблицы? | PrepBro