Для чего применяются виртуальные таблицы
Виртуальные таблицы — это специальный механизм платформы 1С для быстрого получения данных из регистров накопления. Они физически не хранятся в базе данных, а формируются платформой «на лету» на основе реальных таблиц движений и итогов.
Преимущества использования:
- Простой синтаксис запросов вместо сложных соединений к реальным таблицам
- Автоматическая работа с итогами (быстрее вычисления)
- Исключение ошибок разработчика при работе с регистрами
- Скорость работы запроса
Виды виртуальных таблиц регистров накопления
Набор виртуальных таблиц зависит от вида регистра накопления:
| Вид регистра | Виртуальные таблицы |
|---|---|
| Остатки | Остатки, Обороты, ОстаткиИОбороты |
| Обороты | Обороты (только одна) |
Виртуальная таблица Остатки
Назначение — получение остатков ресурсов регистра на определённую дату (на начало момента времени).
Особенности:
- Строит остатки на начало секунды, указанной в параметре
Период(дата не включается) - Для получения остатков включительно с датой используйте тип Граница
- При работе с остатками всегда добавляйте 1 секунду к периоду, если нужна дата включительно
Параметры:
| Параметр | За что отвечает |
|---|---|
| Период | Момент времени, на который считаем остатки (тип: Дата, МоментВремени, Граница) |
| Условие | Отбор по измерениям регистра (например, Организация = &ВыбОрг) |
В условии можно использовать только измерения регистра, не реквизиты и не ресурсы.
Виртуальная таблица Обороты
Назначение — получение оборотов ресурсов регистра за период (сумма движений).
Особенности:
- Работает только по таблице движений (без использования итогов)
- Включает начало и конец периода
- Доступна для обоих видов регистров (остатки и обороты)
Параметры:
Для примера — при периодичности Месяц обороты суммируются по месяцам.
Виртуальная таблица ОстаткиИОбороты
Назначение — получение остатков и оборотов одновременно в одном запросе. Дает возможность получить начальный и конечный остаток, приход, расход и обороты за период.
Особенности:
Параметры:
При периодичности Авто система сама подберёт периодичность (не менее 3 и не более 12 значений периодов).
Примеры запросов:
// Остатки на дату
ВЫБРАТЬ
Остатки.Товар,
Остатки.Склад,
Остатки.КоличествоОстаток
ИЗ
РегистрНакопления.ТоварныеЗапасы.Остатки(&Период, Товар = &Товар) КАК Остатки
// Обороты за месяц
ВЫБРАТЬ
Обороты.Товар,
Обороты.КоличествоОборот
ИЗ
РегистрНакопления.ТоварныеЗапасы.Обороты(
&НачалоПериода, &КонецПериода, Месяц, , Организация = &Орг) КАК Обороты
// Остатки и обороты вместе
ВЫБРАТЬ
ООб.Период,
ООб.Товар,
ООб.КоличествоНачальныйОстаток,
ООб.КоличествоОборот
ИЗ
РегистрНакопления.ТоварныеЗапасы.ОстаткиИОбороты(
&НачалоПериода, &КонецПериода, Месяц, , Организация = &Орг) КАК ООб