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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сравнение вариантов

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

Нужен, когда требуется текущее состояние: сколько товара на складе сейчас, какой долг клиента на дату. Поддерживает контроль отрицательных остатков.

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

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

Виртуальные таблицы и получение данных

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

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

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

При обращении к виртуальным таблицам период и отборы следует передавать в параметрах виртуальной таблицы, а не в секции ГДЕ основного запроса. Отбор в параметрах выполняется по таблице итогов и работает на порядок быстрее, особенно на больших базах.

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

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

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

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

Итоги, периодичность и производительность

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

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

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

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

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

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

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

Отдельно стоит предупредить о ручной корректировке регистров. Иногда для исправления остатков создают документ «Корректировка регистров» (операция), который пишет движения напрямую. Это допустимый инструмент, но каждая такая запись должна быть обоснована и задокументирована: при следующей сверке именно «ручные» движения вызывают больше всего вопросов.

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

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

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

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

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

Значения совпадают на одну и ту же дату

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

Расхождение — проверьте период отчёта, отборы и актуальность итогов

Отрицательные остатки
Норма

Минусовых остатков нет или они объяснимы (оперативная отгрузка)

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

Массовые минусы — нарушена последовательность проведения или отключён контроль

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

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

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

Движения отсутствуют, дублируются или не совпадают с документом — ошибка в проведении

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

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

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

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

Как выбрать объект метаданных

Нужен остаток на дату или контроль нехваткиРегистр накопления вида «Остатки»
Нужны только суммы за период без текущего состоянияРегистр накопления вида «Обороты»
Значение не накапливается и не зависит от движенийРегистр сведений
Нужны проводки по плану счетовРегистр бухгалтерии

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

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

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

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

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

Почему отчёт по остаткам работает медленно?

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

Что делает пересчёт итогов и когда он нужен?

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

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

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

Что такое вид движения «Приход» и «Расход»?

Это признак записи регистра остатков, определяющий, увеличивает она остаток или уменьшает. Поступление товара — приход, продажа — расход. У регистров оборотов вида движения нет: там суммы просто накапливаются за период.

Итог

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

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