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

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

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

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

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

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

В типовых конфигурациях («Управление торговлей», «Бухгалтерия предприятия», «ERP») регистры накопления используются повсеместно: «ТоварыНаСкладах», «ВзаиморасчетыСКонтрагентами», «Продажи», «ДенежныеСредства». Понимание их устройства необходимо и разработчику, создающему собственный учётный механизм, и консультанту, разбирающему расхождения в отчётах.

Из чего состоит регистр накопления

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

Каждая запись регистра обязательно привязана к документу-регистратору и содержит период (дату движения). У регистров остатков есть ещё одно служебное поле — вид движения: приход или расход. Система автоматически рассчитывает итоги по комбинациям измерений, поэтому отчёт «остатки по складу» строится мгновенно, без перебора всех строк.

Два вида регистров: остатки и обороты

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

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

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

Регистр оборотов

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

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

Остатки

Нужно знать значение на произвольную дату и контролировать его (остатки товара, долг клиента). Цена — более тяжёлая структура и контроль при проведении.

Обороты

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

Как документы записывают данные в регистр

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

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

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

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

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

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

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

Контроль остатков и отрицательные остатки

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

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

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

Как проверить состояние регистра

Остатки на текущую дату
Норма

Нет отрицательных значений по ресурсам

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

Минус по складу или номенклатуре — ищите документ с нарушенной последовательностью

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

Суммы движений равны суммам табличной части

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

Движений нет или суммы расходятся — документ не проведён либо проведён с ошибкой

Итоги отчёта и оборотно-сальдовой логики
Норма

Приход минус расход равен конечному остатку

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

Разница без объяснимых причин — возможны ручные операции по регистру

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

Большинство проблем с регистрами возникает не из-за платформы, а из-за проектных решений и нарушений методики. Ниже — ошибки, которые встречаются чаще всего.

Типичные ошибки
01
Избыток измерений: добавляют «на всякий случай» характеристику, партию, заказ — итоги раздуваются, проведение и отчёты тормозят.
02
Оборотный регистр вместо остаточного: потом оказывается, что нужен контроль остатков, а получить его из оборотов нельзя — приходится создавать новый регистр и мигрировать данные.
03
Ручная правка движений через корректировку без анализа причины: расхождение маскируется, но при следующем перепроведении возвращается.
04
Проведение документов задним числом без восстановления последовательности: отрицательные остатки на промежуточные даты и неверный расчёт себестоимости.
05
Чтение остатков запросом без виртуальной таблицы Остатки: полное сканирование таблицы движений вместо чтения итогов.

Как читать данные регистра в запросах и отчётах

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

Типовой запрос остатков на дату выглядит так: ВЫБРАТЬ Номенклатура, КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад). Виртуальная таблица принимает параметры отсечения по периоду и отбор по измерениям — отбор лучше передавать именно в параметры виртуальной таблицы, а не в секцию ГДЕ, чтобы ограничить вычисляемый диапазон.

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

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

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

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

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

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

Почему документ проведён, а в отчёте по регистру его нет?

Проверьте три вещи: движения документа («Ещё» → «Движения документа»), попадает ли документ в отбор отчёта (организация, склад, период) и актуальность итогов, если отчёт построен на них. Частая причина — документ проведён, но движения по нужному регистру не формируются из-за условий в коде проведения.

Что делать с отрицательными остатками в старых периодах?

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

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

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

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

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

Итог

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

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