К статье
Практический материал

Разработка и Конфигурация · 10 мин

Оборотный регистр накопления в 1С: что это и как его использовать

Что такое оборотный регистр накопления в 1С, чем он отличается от регистра остатков, когда его выбирать и как настроить. Практические примеры и типичные ошибки.

Регистр накопления — один из ключевых объектов метаданных в 1С, предназначенный для хранения количественных и суммовых показателей, которые изменяются документами. Платформа поддерживает два вида таких регистров: остатки и обороты. Оборотный регистр накопления хранит не текущее значение показателя на дату, а сумму движений за выбранный период — приход, расход или просто оборот по измерениям.

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

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

Чем оборотный регистр отличается от регистра остатков

Главное различие — в наборе виртуальных таблиц и способе хранения итогов. Регистр остатков хранит итоги на начало каждого периода (месяца) и позволяет запросом получить остаток на любую дату. Оборотный регистр хранит только суммарные обороты за период в разрезе измерений, и понятия «остаток» у него нет вовсе.

У регистра остатков движения делятся на приход и расход (вид движения), и итог вычисляется как приход минус расход. В оборотном регистре вид движения отсутствует: каждая запись просто добавляет значение ресурса к обороту. Если нужно отразить и поступление, и выбытие, их записывают с разным знаком или в разные ресурсы.

КритерийРегистр остатковОборотный регистр
Что хранитОстаток на датуСумму движений за период
Вид движенияПриход / РасходОтсутствует
Виртуальные таблицыОстатки, ОстаткиИОбороты, ОборотыОбороты
Типовой примерТовары на складахПродажи, обороты по счетам
Получение остатка на датуДа, быстроНет

Как устроен оборотный регистр: измерения, ресурсы, реквизиты

Структура оборотного регистра состоит из трёх групп полей. Измерения — это разрезы аналитики, по которым накапливаются данные: товар, контрагент, склад, период. Ресурсы — числовые показатели, которые суммируются: количество, сумма, сумма без НДС. Реквизиты — дополнительная информация о записи, не участвующая в итогах: номер заказа, менеджер, комментарий.

Периодичность регистра задаёт шаг, с которым хранятся итоги оборотов: в пределах месяца, квартала, года или без итогов. Чем мельче периодичность, тем быстрее строятся отчёты за короткие интервалы, но тем больше места занимают итоговые таблицы. Для большинства задач достаточно месячной периодичности.

Важно понимать: виртуальная таблица «Обороты» всегда группирует данные по измерениям и суммирует ресурсы за указанный интервал. Если в запросе не задать период, платформа вернёт обороты за всё время ведения учёта.

Когда выбирать оборотный регистр, а когда — регистр остатков

Критерий выбора один: нужен ли остаток на произвольную дату. Если бизнес-вопрос звучит как «сколько сейчас» или «сколько было на конец дня» — нужен регистр остатков. Если вопрос звучит как «сколько за период» — оборотный регистр подходит лучше и работает эффективнее.

Типичные задачи оборотного регистра: продажи по товарам и клиентам, взаиморасчёты в разрезе документов оплаты (где интересны именно обороты), начисления и удержания сотрудников, обороты по статьям бюджета, статистика производства. Во всех этих случаях отчёты строятся за период, и остаток на дату либо не нужен, либо получается из другого регистра.

Маршрут решения

Как выбрать вид регистра

Нужно знать остаток товара, денег или задолженности на любую датуИспользуйте регистр накопления с видом «Остатки»
Нужны только суммы за период: продажи, начисления, обороты по статьямИспользуйте оборотный регистр — он проще и быстрее
Нужны и остатки, и обороты по одним даннымРегистр остатков: его виртуальная таблица ОстаткиИОбороты даст оба показателя
Обороты нужны в разрезе, которого нет в регистре остатковСоздайте отдельный оборотный регистр с нужными измерениями

Как создать и настроить оборотный регистр

Создание выполняется в конфигураторе: в дереве конфигурации откройте ветку «Регистры накопления», добавьте новый объект и в свойствах установите вид регистра «Обороты». Затем задайте измерения (например, Номенклатура и Контрагент), ресурсы (Количество, Сумма) и периодичность.

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

bsl
Процедура ОбработкаПроведения(Отказ, Режим)
  Движения.Продажи.Записывать = Истина;
  Для Каждого Строка Из Товары Цикл
    Движение = Движения.Продажи.Добавить();
    Движение.Период = Дата;
    Движение.Номенклатура = Строка.Номенклатура;
    Движение.Контрагент = Контрагент;
    Движение.Количество = Строка.Количество;
    Движение.Сумма = Строка.Сумма;
  КонецЦикла;
КонецПроцедуры

После проведения документа проверьте результат: откройте регистр через «Ещё → Регистры накопления» в форме документа или постройте отчёт по виртуальной таблице оборотов. Записи должны появиться с правильным периодом и заполненными измерениями.

Как получить данные: запрос к виртуальной таблице оборотов

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

Пример запроса к регистру «Продажи» за произвольный период:

ВЫБРАТЬ

Продажи.Номенклатура КАК Номенклатура,

СУММА(Продажи.КоличествоОборот) КАК Количество,

СУММА(Продажи.СуммаОборот) КАК Сумма

ИЗ

РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи

СГРУППИРОВАТЬ ПО

Продажи.Номенклатура

Для отчётов на СКД достаточно перетащить виртуальную таблицу оборотов в набор данных — система компоновки сама подставит параметры периода из настроек отчёта. Это самый быстрый способ получить аналитику без ручного программирования.

Типичные ошибки при работе с оборотными регистрами

Самая частая ошибка — попытка получить остаток из оборотного регистра. Разработчик строит запрос, пытается вычислить «остаток на дату» накоплением оборотов с начала времён, и получает медленный и ненадёжный отчёт. Если остаток нужен регулярно — это признак того, что выбран не тот вид регистра.

Вторая группа ошибок связана с измерениями. Избыточное число измерений раздувает итоговые таблицы и замедляет запись, а недостающее измерение делает невозможным нужный разрез отчёта без доработки. Проектируйте измерения исходя из реальных отчётов, которые будут строиться по регистру.

Типичные ошибки
01
Попытка получить остаток из оборотного регистра — отчёт работает медленно или даёт неверные данные; нужен регистр остатков
02
Запись отрицательных значений ресурсов без согласованной методики — обороты в отчётах становятся неочевидными и трудно проверяемыми
03
Добавление измерения «Документ» или «Номенклатура+Документ» без необходимости — резкий рост объёма итогов и замедление проведения
04
Забытый флаг «Записывать» у набора записей — документ проводится без ошибок, но движения в регистре не появляются
05
Использование физической таблицы вместо виртуальной Обороты — отчёт показывает записи, а не суммы за период

Ограничения и производительность

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

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

Контрольные точки

Как проверить результат

Движения документа
Норма

После проведения в регистре есть записи с периодом документа и заполненными измерениями

Тревожный признак

Записей нет или период пустой — проверьте обработчик проведения и флаг Записывать

Запрос к виртуальной таблице Обороты
Норма

Суммы ресурсов за период совпадают с контрольной выборкой по документам

Тревожный признак

Суммы не сходятся — проверьте отборы, границы периода и отменённые проведения

Скорость отчёта
Норма

Отчёт за типовой период строится за приемлемое время без временных таблиц большого объёма

Тревожный признак

Отчёт висит — вероятно, не задан период или запрос идёт к физической таблице

Часто задаваемые вопросы

Можно ли получить остаток из оборотного регистра накопления?

Напрямую — нет, виртуальной таблицы остатков у оборотного регистра нет. Теоретически можно просуммировать все обороты с начала учёта до нужной даты, но это медленно и методически ненадёжно. Если остаток нужен, используйте регистр с видом «Остатки».

Чем оборотный регистр накопления отличается от регистра сведений?

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

Как записать в оборотный регистр и приход, и расход?

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

Нужно ли перепроводить документы после добавления нового ресурса в регистр?

Да. Новый ресурс в уже существующих движениях останется пустым (нулевым). Чтобы заполнить его в исторических данных, документы нужно перепровести или написать обработку, которая заполнит записи регистра напрямую.

Что выбрать для учёта взаиморасчётов с контрагентами?

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

Влияет ли количество измерений на скорость работы?

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

Итог

Что важно запомнить

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