Регистр накопления — специализированный объект метаданных 1С:Предприятие для хранения числовых данных в аналитических разрезах с привязкой к периоду. Проще говоря, это электронная книга учёта, в которую документы записывают изменения ресурсов — сколько товара пришло, сколько ушло, сколько денег потрачено. Платформа считает итоги автоматически. Два вида: Остатки — актуальное состояние ресурса, Обороты — изменения за период.
Регистр накопления — объект метаданных, который накапливает числовые данные в аналитических разрезах с привязкой к периоду. Принцип декомпозиции: каждый документ независимо описывает своё влияние на регистр через обработчик ОбработкаПроведения. Принцип автоматизма: платформа кэширует итоги без участия разработчика — считать их вручную не нужно.
Сделайте следующий шаг в карьере
Подберите обучение, которое поможет освоить новые компетенции
Регистр накопления в 1С состоит из четырёх типов компонентов.
| Компонент |
Роль |
Пример |
Тип данных |
|---|---|---|---|
| Измерения | Аналитические разрезы учёта | Склад, Номенклатура | СправочникСсылка |
| Ресурсы | Числовые показатели — что накапливается | Количество, Сумма | Число |
| Реквизиты | Дополнительные поля, не суммируются | Номер документа | Любой тип |
| Период | Дата и время записи движения | — | Дата |
| Регистратор | Ссылка на документ-источник движения | — | ДокументСсылка |
Ресурсы суммируются автоматически при запросе. Реквизиты только хранятся — в агрегации не участвуют.
Два вида регистра имеют принципиально разную физическую модель хранения в СУБД. Выбор вида определяет, какие виртуальные таблицы будут доступны и как строится запрос.
| Параметр |
Остатки |
Обороты |
|---|---|---|
| ВидДвижения | Приход / Расход | Отсутствует |
| Таблица _AccumRgT | Создаётся | Не создаётся |
| Сальдо | Есть (текущий остаток) | Нет |
| Виртуальные таблицы | .Остатки, .Движения, .ОстаткиИОбороты | .Обороты, .Движения |
| Split Totals | Поддерживается | Не применяется |
| Оптимизация | _AccumRgT — итоги на начало месяца | Только _AccumRg |
| Применение | Склад, касса, взаиморасчёты | Выручка, начисления |
| Типичная конфигурация | 1С:Бухгалтерия, 1С:ERP | 1С:ЗУП, 1С:ERP |
Регистр остатков хранит кумулятивное сальдо: каждое движение помечается как Приход (увеличение) или Расход (уменьшение ресурса). Физически данные распределены по трём таблицам СУБД: _AccumRg — детальные движения, _AccumRgT — агрегаты на начало каждого месяца, _AccumRgTn — буфер механизма Split Totals. При расчёте остатка на конкретную дату платформа выбирает ближайший срез из _AccumRgT и идёт вперёд (forward) или назад (rollback) — в зависимости от того, какой путь короче по числу строк. Типичные задачи: остатки на складе, денежные средства, взаиморасчёты, резервирование товара.
Регистр оборотов накапливает только величину изменения ресурса за период — без начального и конечного сальдо. Понятие ВидДвижения здесь отсутствует: каждая запись просто прибавляет значение к ресурсу. Физически данные хранятся только в _AccumRg — таблица _AccumRgT не создаётся. Доступные виртуальные таблицы: .Обороты и .Движения. Применяется там, где нужен объём за период: выручка, объём продаж, себестоимость в 1С:ERP, начисления в 1С:ЗУП. Выбирать регистр оборотов не стоит, если в запросе нужен остаток на текущий момент.
Регистры накопления — основной инструмент количественного и суммового учёта в 1С:Предприятие. Основные области применения:
Без регистров накопления отчёты по движению ресурсов пришлось бы строить прямым сканированием таблиц документов — на больших базах это значительно медленнее.
В режиме разработки: Конфигуратор → дерево Метаданные → Регистры накопления. В пользовательском режиме путь зависит от конфигурации.
Пользовательский режим: Администрирование → Обслуживание → Регистры накопления. Режим разработки: Конфигуратор → Метаданные → Регистры накопления. Типовые регистры 1С:ЗУП: НачисленияПоСотрудникам (Обороты), УдержанияПоСотрудникам (Обороты), ЗарплатаКВыплате (Остатки — актуальный долг по выплатам).
Путь пользователя (если функция активирована): Главное → Все функции → Регистры накопления. Путь разработчика: Конфигуратор → Метаданные → Регистры накопления. Типовые регистры 1С:Бухгалтерии предприятия: ХозрасчётныеОбороты, НДСПредъявленный.

Создать новый регистр накопления можно за пять шагов в Конфигураторе.
После создания регистра подключите документ-регистратор: откройте документ → вкладка Движения → выберите созданный регистр.
Движения в регистре создаются при проведении документа-регистратора. Два способа: написать ОбработкаПроведения вручную или воспользоваться Конструктором движений — мастером в Конфигураторе, который генерирует шаблонный код автоматически.
// Разрешить запись движений в регистр (обязательно!)
Движения.ОстаткиТоваров.Записывать = Истина;
// Создать новую строку движения
НовоеДвижение = Движения.ОстаткиТоваров.Добавить();
// Вид движения — только для регистров Остатков
НовоеДвижение.ВидДвижения = ВидДвиженияНакопления.Приход;
// Служебные поля
НовоеДвижение.Период = Дата;
// Измерения
НовоеДвижение.Склад = Склад;
НовоеДвижение.Номенклатура = СтрокаТЧ.Номенклатура;
// Ресурс
НовоеДвижение.Количество = СтрокаТЧ.Количество;
Без строки Записывать = Истина движения не попадут в базу — это типичная ошибка новичков. Конструктор движений генерирует аналогичный шаблон: вкладка Движения документа → выбрать регистр → нажать «Конструктор».
Пора сменить профессию? Начните с понятного плана
Подберите программу под ваш опыт, цели и желаемый формат занятости
ВидДвиженияНакопления.Приход и .Расход доступны только для регистров Остатков — у регистров Оборотов поле ВидДвижения отсутствует. Пример фильтрации движений в запросе:
ГДЕ ОстаткиТоваров.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
Применяется в аналитике, где нужно разделить «сколько пришло» и «сколько ушло» по одному регистру.
Виртуальные таблицы — основной способ получения данных из регистров. Прямые запросы к физической таблице _AccumRg не используют кэш итогов и работают медленнее. Главное правило: условия передавать через параметры виртуальной таблицы, не через ГДЕ — разница в производительности при большом объёме данных существенная.
Синтаксис обращения к виртуальной таблице Остатки:
ВЫБРАТЬ
Остатки.Номенклатура,
Остатки.Количество
ИЗ
РегистрНакопления.ОстаткиТоваров.Остатки(&Период, Склад = &Склад) КАК Остатки
&Период и Склад = &Склад передаются до агрегации: СУБД сначала отбирает строки, затем суммирует. Условие ГДЕ применяется после суммирования всего — это медленнее. Если &Период не передан (пустая дата), платформа вернёт остатки на текущий момент.
ДОПОЛНИТЬ — оператор языка запросов 1С, который заполняет пропущенные комбинации измерений в результате запроса к виртуальной таблице .Обороты. Применяется в отчётах, где нужно показать нулевые строки по всем элементам измерений — даже если за период движений не было. Без ДОПОЛНИТЬ номенклатура без движений просто не попадёт в результат запроса.

Регистр накопления хранит данные в нескольких физических таблицах СУБД (PostgreSQL, MS SQL Server):
Если граница рассчитанных итогов устарела, платформа не может использовать _AccumRgT и сканирует всю таблицу движений — запросы деградируют. Для актуализации: УстановитьПериодРассчитанныхИтогов() + ПересчитатьИтоги() через регламентное задание.
Split Totals (разделение итогов) включают на высоконагруженных регистрах с параллельным проведением. Без него транзакции конкурируют за одну строку _AccumRgT и возникает блокировка TLOCK. С включённым разделением каждая транзакция пишет в случайную строку буфера _AccumRgTn, а регламентное задание периодически сворачивает буфер в основную таблицу.
Хотите разобраться с 1С на практике — от регистров до работы с типовыми конфигурациями? В ProfiFuture можно освоить профессию за 1,5 месяца с господдержкой: 75% стоимости компенсируется образовательной квотой. Смотрите программы 1С программист и Оператор 1С в каталоге программ ProfiFuture.
Регистр накопления хранит числовые данные, которые суммируются — остатки, суммы. Регистр сведений хранит актуальное значение любого типа без накопления: курс валюты, цену. Ключевое отличие: первый суммирует ресурсы, второй хранит последнее значение.
Регистр остатков — если нужен актуальный остаток на любой момент (товар на складе, баланс). Регистр оборотов — если важен объём изменений за период (выручка, начисления). При необходимости обоих используйте виртуальную таблицу .ОстаткиИОбороты.
Платформа не сможет использовать _AccumRgT и вынуждена сканировать всю таблицу движений. Время запросов резко возрастает. Решение: регулярно вызывать УстановитьПериодРассчитанныхИтогов() + ПересчитатьИтоги() через регламентное задание.
Параметры виртуальной таблицы передаются до агрегации — СУБД сначала отбирает строки, затем суммирует. Условие ГДЕ применяется после: платформа суммирует всё, потом фильтрует. При большом объёме данных разница в скорости существенная.
Разделение итогов — механизм для систем с частым параллельным проведением. Без него транзакции конкурируют за одну строку _AccumRgT и возникает блокировка TLOCK. С разделением каждая пишет в случайную строку буфера _AccumRgTn. Регламентное задание периодически сворачивает буфер.
Регистры оборотов накапливают начисления: НачисленияПоСотрудникам, УдержанияПоСотрудникам. Регистр остатков ЗарплатаКВыплате хранит актуальный долг по выплатам. Найти: Администрирование → Обслуживание → Регистры накопления, либо через Конфигуратор.
Путь пользователя: Главное → Все функции → Регистры накопления (если функция активирована). Путь разработчика: Конфигуратор → Метаданные → Регистры накопления. Типовые регистры Бухгалтерии: ХозрасчётныеОбороты, НДСПредъявленный.
Стандартный способ: снять проведение документов-регистраторов — движения удалятся автоматически. Программная очистка: для каждого регистратора вызвать ОтменитьПроведение() или очистить Движения.[Имя] напрямую. После очистки вызвать ПересчитатьИтоги().
В 1С:ERP себестоимость учитывается через регистры оборотов партионного учёта. ТоварыНаСкладах — остатки; СебестоимостьТоваров — накапливает затраты по партиям за период. Оба связаны с документами поступления и реализации.
Технически — через прямое подключение к СУБД. Но это обходит механизм кэширования платформы. Правильный путь — виртуальные таблицы .Остатки и .Обороты, которые автоматически используют _AccumRgT и оптимизируют запрос.
Превратите интерес к теме в новую профессию
Оставьте заявку — поможем выбрать программу и расскажем об условиях обучения
Оставить заявку