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

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

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

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

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

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

Что такое регистр накопления и зачем он нужен

Физически регистр накопления представляет собой таблицу в базе данных, где каждая строка — это одно движение: кто (документ-регистратор), когда (дата), относительно каких аналитик (измерения) изменил какое числовое значение (ресурс). Например, строка «Приход товара "Кабель ВВГ 3×2,5" на склад "Основной" в количестве 100 метров» — типичная запись регистра «Остатки товаров».

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

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

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

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

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

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

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

Нужно знать, сколько чего-то есть на конкретную дату (склад, касса, долг)Создавайте регистр остатков и используйте движения Приход/Расход
Нужна только статистика за период: продажи, обороты, начисленияСоздавайте оборотный регистр — он легче и быстрее
Нужен и остаток, и детальные обороты по тем же даннымИспользуйте регистр остатков — обороты из него тоже получаются запросом

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

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

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

Как документы формируют движения

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

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

Для Каждого СтрокаТовары Из Товары Цикл

Движение = Движения.ОстаткиТоваров.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

Движение.Период = Дата;

Движение.Номенклатура = СтрокаТовары.Номенклатура;

Движение.Склад = Склад;

Движение.Количество = СтрокаТовары.Количество;

КонецЦикла;

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

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

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

Как получить данные: отчёты и запросы

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

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

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

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

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

Когда регистр накопления не подходит

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

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

Итог

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

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

Частые вопросы

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

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

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

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

Почему отчёт показывает остатки, а документ не проводится с ошибкой контроля?

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

Что делать, если остатки в отчёте не сходятся с движениями документов?

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

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

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