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

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

Что такое оборотный регистр в 1С и как с ним работать

Оборотный регистр 1С: что это, чем отличается от регистра остатков, виды оборотов, настройка в конфигураторе, запросы к виртуальным таблицам и типичные ошибки.

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

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

Механизм встроен в платформу 1С:Предприятие 8 и доступен во всех типовых конфигурациях. Разработчику достаточно выбрать вид регистра при создании объекта метаданных — дальше платформа сама управляет итогами, виртуальными таблицами и хранением данных. Но чтобы использовать его грамотно, нужно понимать отличия от регистра остатков и ограничения оборотного хранения.

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

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

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

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

В каких задачах применяется оборотный регистр

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

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

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

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

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

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

Структура: измерения, ресурсы и реквизиты

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

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

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

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

Создание регистра выполняется в дереве конфигурации, в ветке «Регистры накопления». После добавления объекта нужно задать вид «Обороты», определить измерения и ресурсы, указать документы-регистраторы и настроить проведение. Ниже — типовой порядок действий.

Порядок создания оборотного регистра
  1. 1
    В конфигураторе откройте ветку «Регистры накопления» и добавьте новый объект, например «ПродажиТоваров».
  2. 2
    В свойствах установите вид регистра «Обороты» — это ключевая настройка всей статьи.
  3. 3
    На закладке «Данные» добавьте измерения (Номенклатура, Контрагент) и ресурсы (Количество, Сумма) с типом Число и достаточной разрядностью.
  4. 4
    На закладке «Регистраторы» отметьте документы, которые будут делать движения, например «РеализацияТоваровУслуг».
  5. 5
    В модуле документа в обработке проведения сформируйте движения: заполните набор записей регистра и запишите его.
  6. 6
    Обновите конфигурацию базы данных, проведите тестовый документ и проверьте движения через список регистра или отчёт.

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

bsl
Процедура ОбработкаПроведения(Отказ, Режим)

	Движения.ПродажиТоваров.Записывать = Истина;

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

КонецПроцедуры

Как получить данные: виртуальная таблица «Обороты»

У оборотного регистра есть одна виртуальная таблица — «Обороты». Она принимает параметры начала и конца периода, периодичность детализации и условие отбора, а возвращает измерения и ресурсы с постфиксом «Оборот»: КоличествоОборот, СуммаОборот. Именно через неё строятся практически все отчёты по оборотным регистрам.

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

bsl
ВЫБРАТЬ
	Продажи.Номенклатура КАК Номенклатура,
	СУММА(Продажи.КоличествоОборот) КАК Количество,
	СУММА(Продажи.СуммаОборот) КАК Сумма
ИЗ
	РегистрНакопления.ПродажиТоваров.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи
СГРУППИРОВАТЬ ПО
	Продажи.Номенклатура

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

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

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

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

Ещё одно ограничение касается аналитики: если по регистру нужен отчёт в разрезе дней или недель, виртуальная таблица справляется, но при очень большом числе движений запросы с детальной периодичностью могут выполняться долго. В таких случаях помогают отборы по измерениям прямо в параметрах виртуальной таблицы — они выполняются на уровне СУБД и резко сокращают объём обрабатываемых данных.

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

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

Как проверить, что регистр работает правильно

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

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

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

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

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

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

Записей нет или суммы не совпадают с табличной частью документа

Виртуальная таблица Обороты
Норма

Запрос за период возвращает те же суммы, что и сумма движений по таблице регистра

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

Обороты меньше фактических движений — проверьте границы периода

Отчёт на СКД
Норма

При смене периода в настройках цифры пересчитываются и совпадают с запросом

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

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

Сторнирование и отмена проведения
Норма

При отмене проведения записи исчезают, обороты уменьшаются

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

После отмены проведения обороты не меняются — набор записей не очищается

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

Можно ли превратить оборотный регистр в регистр остатков?

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

Почему в оборотном регистре нет вида движения «Приход/Расход»?

Потому что оборот — это однонаправленное наращивание показателя. Каждая запись просто добавляет значение к суммарному обороту за период. Если по показателю нужны встречные движения, уменьшающие друг друга, это признак того, что нужен регистр остатков.

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

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

Что быстрее: один регистр остатков или два оборотных?

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

Видны ли движения оборотного регистра пользователю без программирования?

Да. Если регистр включён в панели навигации, его список открывается через стандартные функции, а по кнопке «Ещё» в документе доступны движения по регистрам. Для анализа обычно создают отчёт на СКД — это не требует написания кода, достаточно конструктора.

Итог

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

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