Открыть сервис

Виртуальные таблицы 1С

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

Назначение и область применения

Виртуальные таблицы являются частью системы компоновки данных (СКД) и встроенного языка запросов 1С. Они используются для упрощения доступа к данным, которые в реальной таблице хранятся в виде отдельных записей, но требуют обработки по времени, периодам или остаткам. Основные задачи, решаемые виртуальными таблицами:

  • Получение остатков и оборотов по регистрам накопления на заданную дату.
  • Вычисление средних значений, сумм или количества за период.
  • Формирование срезов последних или первых записей регистров сведений.
  • Построение периодических отчётов без ручного перебора записей.

Типы виртуальных таблиц

В платформе «1С:Предприятие» виртуальные таблицы делятся на несколько категорий в зависимости от типа регистра или объекта метаданных, к которому они относятся.

Регистры накопления

Для регистров накопления (остатков и оборотов) доступны следующие виртуальные таблицы:

  • Остатки — возвращает остатки ресурсов на указанную дату. Учитывает все движения до заданного момента времени.
  • Обороты — формирует обороты (приход и расход) за заданный период. Позволяет группировать данные по периодам (день, месяц, квартал).
  • Остатки и обороты — объединяет данные об остатках на начало и конец периода, а также оборотах за период.
  • Обороты с группировкой по корреспондирующим счетам — используется для детализации оборотов по регистрам бухгалтерии, если такая настройка предусмотрена в конфигурации.

Регистры сведений

Для регистров сведений (периодических, независимых и подчинённых регистраторам) существуют:

  • Срез последних — возвращает актуальные значения на заданную дату, выбирая последнюю запись для каждого измерения.
  • Срез первых — аналогичен «Срезу последних», но выбирает первую запись во временном порядке.
  • Подчинённые регистраторам — таблица, содержащая записи, привязанные к конкретному документу-регистратору.

Регистры бухгалтерии

Для регистров бухгалтерии (планов счетов) доступны:

  • Остаткисальдо по счетам на заданную дату.
  • Обороты — дебетовые и кредитовые обороты за период.
  • Остатки и обороты — комбинированная таблица с сальдо и оборотами.
  • Обороты с корреспонденцией — детализация оборотов по корреспондирующим счетам.

Регистры расчёта

Для регистров расчёта (например, в зарплатных конфигурациях) предусмотрены:

  • Фактический период действия — возвращает записи, попадающие в заданный временной интервал.
  • База — формирует данные для расчёта начислений по заданным правилам вытеснения.
  • График — используется для работы с календарными графиками работы.

Структура и параметры

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

  • Начало периода и Конец периода — задают временной интервал для выборки.
  • Периодичность — определяет шаг группировки (день, месяц, квартал, год).
  • Условия — фильтры по измерениям или ресурсам, которые могут ускорить выполнение запроса.
  • Порядоксортировка записей (например, по дате или по регистратору).

Пример синтаксиса в языке запросов 1С:

``1c ВЫБРАТЬ Товары.Номенклатура, Товары.КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, КонецПериода, ) КАК Товары ГДЕ Товары.Номенклатура = &Номенклатура ``

Преимущества и ограничения

Преимущества

  • Производительность — виртуальные таблицы оптимизированы на уровне платформы и используют индексы базы данных, что часто быстрее ручных запросов с группировками.
  • Простота — разработчику не нужно писать сложные подзапросы для расчёта остатков или срезов; достаточно указать параметры.
  • Гибкость — возможность динамически менять период, фильтры и периодичность без изменения структуры запроса.

Ограничения

  • Неизменяемость — виртуальные таблицы доступны только для чтения; запись данных в них невозможна.
  • Зависимость от метаданных — структура таблицы жёстко привязана к конфигурации; изменение метаданных (например, добавление нового измерения) может потребовать корректировки запросов.
  • Ограниченная настройка — в некоторых случаях (например, при сложных условиях отбора) виртуальные таблицы могут быть менее эффективны, чем написание прямого SQL-запроса (хотя последнее в типовых конфигурациях не рекомендуется).

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

В типовых конфигурациях «1С:Бухгалтерия», «1С:Управление торговлей» и «1С:Зарплата и управление персоналом» виртуальные таблицы применяются для:

  • Формирования оборотно-сальдовой ведомости.
  • Расчёта себестоимости списания товаров.
  • Построения отчётов по начислениям заработной платы за период.
  • Анализа дебиторской и кредиторской задолженности на конец месяца.

Особенности работы в режиме совместимости

В старых версиях платформы (до 8.3) виртуальные таблицы могли иметь ограниченный набор параметров. В современных версиях (8.3.10 и выше) добавлена поддержка сложных условий, в том числе использование вложенных запросов и соединений с другими таблицами.

Сравнение с реальными таблицами

ХарактеристикаРеальные таблицыВиртуальные таблицы
Хранение данныхФизически в БДДинамически формируются
Скорость выборкиЗависит от индексовОптимизированы для агрегации
Возможность записиДаНет
ГибкостьВысокая (SQL)Ограничена параметрами
Сложность запросаВысокая для срезовНизкая

Критика и альтернативы

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

  • Прямые SQL-запросы (через ВЫПОЛНИТЬ или внешние соединения).
  • Предварительное формирование агрегированных данных в регистрах.
  • Использование системы компоновки данных (СКД) с собственными алгоритмами.

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

Источники

  • Радченко М.Г., Хрусталёва Е.Ю. «1С:Предприятие 8.3. Практическое пособие разработчика». — М.: 1С-Паблишинг, 2020.
  • Официальная документация платформы «1С:Предприятие» — раздел «Язык запросов. Виртуальные таблицы».
  • Козлов А.В. «Оптимизация запросов в 1С:Предприятие 8». — СПб.: БХВ-Петербург, 2019.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →