Разработка и Конфигурация · 9 мин
Регистр накопления в 1С: что это и как с ним работать
Что такое регистр накопления в 1С, виды остатки и обороты, как создать, провести документ и построить отчёт. Практические примеры и типичные ошибки.
Регистр накопления — это объект метаданных 1С, предназначенный для хранения числовых показателей, которые изменяются во времени: остатков товаров, денежных средств, взаиморасчётов, объёмов продаж. В отличие от справочника, регистр не хранит «карточки», а фиксирует движения — записи о поступлении или расходе, которые формируют документы при проведении.
Ключевая особенность регистра накопления — платформа сама умеет вычислять итоги. На основании движений система автоматически рассчитывает остатки на любую дату или обороты за период, поэтому разработчику не нужно хранить и пересчитывать суммы вручную. Это делает регистр основным инструментом складского, финансового и управленческого учёта в типовых конфигурациях.
Что такое регистр накопления и зачем он нужен
Физически регистр накопления представляет собой таблицу в базе данных, где каждая строка — это одно движение: кто (документ-регистратор), когда (дата), относительно каких аналитик (измерения) изменил какое числовое значение (ресурс). Например, строка «Приход товара "Кабель ВВГ 3×2,5" на склад "Основной" в количестве 100 метров» — типичная запись регистра «Остатки товаров».
Регистры нужны там, где требуется ответ на вопрос «сколько чего-то есть сейчас» или «сколько было за период»: остатки номенклатуры на складах, долги контрагентов, деньги на счетах, объёмы продаж по менеджерам. Без регистров эти данные пришлось бы каждый раз вычислять перебором всех документов, что на больших базах неприемлемо медленно.
Виды регистров: остатки и обороты
Платформа 1С поддерживает два вида регистров накопления, и выбор вида определяет, как система будет считать итоги.
Регистр остатков хранит движения двух типов: «Приход» и «Расход». Итог по такому регистру — это остаток на момент времени: приходы минус расходы. Типичные примеры: «Товары на складах», «Денежные средства», «Взаиморасчёты с контрагентами». Для остатков платформа дополнительно хранит таблицу итогов, что ускоряет получение остатка на дату.
Оборотный регистр хранит только нарастающие значения без деления на приход и расход. Итог — это оборот за период, остаток на дату для него не имеет смысла. Примеры: «Продажи», «Закупки», «Выручка по направлениям». Оборотные регистры компактнее и быстрее, но не отвечают на вопрос «сколько осталось».
| Критерий | Регистр остатков | Оборотный регистр |
|---|---|---|
| Вид движения | Приход / Расход | Не используется |
| Типичный итог | Остаток на дату | Сумма за период |
| Примеры | Товары на складах, деньги | Продажи, закупки |
| Контроль отрицательных остатков | Поддерживается платформой | Неприменим |
Как выбрать вид регистра
Структура регистра: измерения, ресурсы, реквизиты
Измерения — это разрезы аналитики, в которых ведётся учёт: склад, номенклатура, контрагент, организация. Каждая комбинация значений измерений образует отдельную «ячейку» учёта. Важный принцип: чем больше измерений, тем детальнее аналитика, но тем объёмнее таблица и медленнее запись. Добавляйте только те измерения, по которым реально нужны итоги.
Ресурсы — это числовые показатели, которые регистр накапливает: количество, сумма, вес. Именно по ресурсам платформа считает остатки и обороты. Реквизиты — дополнительные атрибуты движения (например, номер накладной поставщика), которые хранятся в записи, но не участвуют в расчёте итогов.
Как документы формируют движения
Записи в регистр попадают только через проведение документа. В конфигураторе у документа на вкладке «Движения» отмечаются регистры, в которые он пишет, а в модуле объекта, в обработчике «ОбработкаПроведения», программно формируются строки движений.
Типовой код проведения выглядит так: для каждой строки табличной части создаётся запись движения, заполняются вид движения, измерения и ресурсы, затем коллекция движений записывается. Пример для прихода товара:
Для Каждого СтрокаТовары Из Товары Цикл
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = СтрокаТовары.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = СтрокаТовары.Количество;
КонецЦикла;
Движения.ОстаткиТоваров.Записывать = Истина;
При отмене проведения документа платформа автоматически удаляет все его движения. Вручную редактировать записи регистра накопления напрямую в таблицах базы нельзя — это нарушит связность данных и итоги.
- 1В конфигураторе добавьте объект «Регистр накопления», выберите вид: остатки или обороты
- 2Задайте измерения (склад, номенклатура) и ресурсы (количество, сумма)
- 3В свойствах документа отметьте регистр в списке движений
- 4В обработчике «ОбработкаПроведения» напишите код формирования движений
- 5Обновите конфигурацию базы данных, проведите тестовый документ и проверьте движения кнопкой «Движения документа»
Как получить данные: отчёты и запросы
Для регистров накопления платформа автоматически создаёт виртуальные таблицы: «Остатки», «Обороты», «ОстаткиИОбороты». В конструкторе запроса они доступны сразу после выбора регистра и позволяют получить итоги без перебора движений. Например, запрос к таблице «ОстаткиТоваров.Остатки(&Период, Склад = &Склад)» вернёт текущие остатки по складу за доли секунды.
В пользовательском режиме данные регистра обычно смотрят через отчёты, построенные на СКД: универсальный отчёт по регистру накопления показывает остатки и обороты в нужных разрезах без программирования. Также движения конкретного документа видны по кнопке «Движения документа» в его форме.
Контроль остатков и типичные ошибки
Для регистров остатков принято контролировать отрицательные остатки: нельзя списать товар, которого нет на складе. В типовых конфигурациях контроль выполняется запросом к виртуальной таблице остатков в момент проведения с учётом новых движений документа. Пропуск этого контроля — частая причина расхождения учёта с реальностью.
Когда регистр накопления не подходит
Если нужно хранить не числовые показатели, а значения, привязанные к объекту и периоду (цены номенклатуры, курсы валют, статусы), правильнее использовать регистр сведений — в том числе периодический. Если нужно хранить сам факт события без агрегации, достаточно документа или регистра сведений.
Ещё одна граница: регистры накопления не предназначены для хранения больших текстов, файлов и сложных иерархических структур. Их сила — именно в быстрых числовых итогах по заданным разрезам.
Что важно запомнить
Регистр накопления хранит движения числовых показателей, которые создают документы при проведении. Выбирайте вид «Остатки», когда нужен остаток на дату, и «Обороты» — для статистики за период. Итоги получайте через виртуальные таблицы, структуру меняйте только после резервного копирования.
Частые вопросы
Чем регистр накопления отличается от регистра сведений?
Регистр накопления хранит числовые показатели и умеет автоматически считать остатки и обороты. Регистр сведений хранит произвольные значения (цены, курсы, настройки) в разрезе измерений и не рассчитывает никаких итогов.
Можно ли добавить запись в регистр без документа?
Штатно — нет: каждое движение обязано иметь регистратор. Если нужно ввести начальные остатки или скорректировать данные, создают специальный документ (например, «Ввод начальных остатков» или «Корректировка регистров»), который и делает записи.
Почему отчёт показывает остатки, а документ не проводится с ошибкой контроля?
Чаще всего контроль в коде проверяет остаток с учётом границы времени документа и уже записанных движений, а отчёт строится на другую дату или без учёта резервов. Сверьте дату документа, измерения в движениях и отборы в отчёте.
Что делать, если остатки в отчёте не сходятся с движениями документов?
Проверьте актуальность итогов: выполните пересчёт итогов по регистру. Затем убедитесь, что нет документов, проведённых «задним числом» после ручного вмешательства. Если расхождение сохраняется — запустите тестирование и исправление информационной базы на копии.
Сколько измерений можно добавить в регистр?
Платформа допускает десятки измерений, но практический предел определяется производительностью: каждое измерение увеличивает объём таблицы итогов и время проведения. Оставляйте только те разрезы, по которым реально строятся отчёты и контролируются остатки.