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

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

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

Что такое обороты регистра накопления в 1С, чем они отличаются от остатков, как получить обороты запросом и через отчёт, типичные ошибки и практические примеры.

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

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

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

Что именно считается оборотом

Каждый документ-регистратор при проведении записывает в регистр строки движений: вид движения (приход или расход), измерения (номенклатура, склад, контрагент) и значения ресурсов (количество, сумма). Оборот за период — это агрегированная сумма ресурсов по всем таким строкам, сгруппированная по измерениям.

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

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

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

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

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

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

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

Регистр остатков

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

Оборотный регистр

Нужна только активность за период без остатков: продажи, себестоимость, начисления. Хранит меньше данных и быстрее считает обороты.

Как получить обороты запросом

Основной инструмент — виртуальная таблица Обороты регистра накопления. В тексте запроса она указывается как РегистрНакопления.ИмяРегистра.Обороты с параметрами в скобках: начало периода, конец периода, периодичность и условие отбора.

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

Параметры виртуальной таблицы сильно влияют на результат и на производительность. Третий параметр — периодичность — добавляет в выборку поле «Период» и группирует обороты помесячно, поквартально или по дням. Четвёртый параметр — условие — лучше всегда заполнять, если нужен отбор по измерениям: отбор на уровне виртуальной таблицы выполняется быстрее, чем фильтрация результата запроса.

Порядок построения запроса по оборотам
  1. 1
    Определите период и передайте его параметрами &НачалоПериода и &КонецПериода
  2. 2
    Выберите периодичность: Регистратор, День, Месяц или без периодичности
  3. 3
    Задайте условие отбора по измерениям прямо в параметрах виртуальной таблицы
  4. 4
    Выберите поля оборотов: РесурсПриход, РесурсРасход или РесурсОборот
  5. 5
    Выполните запрос и сверьте итог с типовым отчётом по тому же регистру

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

Как посмотреть обороты без программирования

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

Ещё один способ — стандартные отчёты конфигурации, построенные на СКД: «Оборотно-сальдовая ведомость» по регистру или специализированные отчёты вроде «Анализ продаж». В них обороты уже настроены, остаётся задать период и отборы.

Для быстрой проверки отдельного документа удобно смотреть его движения: кнопка «Движения документа» показывает строки, которые документ записал в регистр. Сумма этих строк по ресурсу и есть вклад документа в оборот за период.

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

Платформа хранит предрассчитанные итоги оборотов с определённой периодичностью (по умолчанию — помесячно). Запрос оборотов за период, совпадающий с границами месяцев, выполняется по готовым итогам быстро. Запрос за произвольный интервал внутри месяца заставляет платформу пересчитывать данные по таблице движений — на больших регистрах это заметно медленнее.

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

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

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

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

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

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

Сумма оборота за период
Норма

Совпадает с типовым отчётом по регистру за тот же период и с теми же отборами

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

Расхождение — проверяйте границы периода и отборы

Границы периода
Норма

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

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

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

Приход и расход
Норма

Выведены раздельными полями РесурсПриход и РесурсРасход

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

Одно суммарное поле, по которому нельзя понять направление движения

FAQ

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

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

Почему в запросе по оборотам не попадают документы последнего дня?

Скорее всего, конец периода передан как дата без времени, что платформа трактует как начало дня. Передайте конец дня через функцию КонецДня() или задайте границу с включением последнего момента периода.

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

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

Можно ли получить обороты в разрезе документов-регистраторов?

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

Почему запрос оборотов выполняется медленно?

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

Что делать, если обороты в разных отчётах не сходятся?

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

Итог

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

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