Виртуальные таблицы 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 →