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

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

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

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

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

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

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

Что такое регистр накопления и какую задачу он решает

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

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

Виды регистров накопления: остатки и обороты

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

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

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

Сравнение видов регистров

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Остаток по регистру на дату
Норма

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

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

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

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

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

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

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

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

При проведении записи появляются, при отмене — удаляются

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

Документ проведён, записей нет, или записи остаются после отмены проведения

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

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

Когда регистр накопления не нужен: альтернативы

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

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

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

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

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

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

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

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

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

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

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

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

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

Как быстро найти, какие документы пишут в регистр?

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

Итог

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

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