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

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

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

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

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

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

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

Как устроен регистр сведений

Регистр сведений состоит из измерений (разрезы хранения, например «Номенклатура» и «Тип цен»), ресурсов (хранимые значения, например «Цена») и реквизитов (дополнительные атрибуты записи). Запись однозначно идентифицируется комбинацией измерений, а для периодического регистра — ещё и датой. Повторная запись с той же комбинацией измерений и периода заменяет предыдущую.

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

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

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

Регистр накопления тоже содержит измерения, ресурсы и реквизиты, но его обязательный системный элемент — регистратор. Каждая запись всегда принадлежит документу: автономных записей без документа-источника не существует. Удаление или распроведение документа автоматически удаляет его движения.

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

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

Сравнение ключевых характеристик

КритерийРегистр сведенийРегистр накопления
Что хранитЗначения в разрезе измеренийДвижения (приход/расход, обороты)
РегистраторНеобязателен (зависит от режима записи)Обязателен всегда
ПериодичностьОпционально, задаётся разработчикомПозиция документа — всегда
Остатки и оборотыНе рассчитываютсяВиртуальные таблицы остатков и оборотов
Замещение записейЗапись с тем же ключом заменяет старуюЗаписи накапливаются, не замещаются
Типичное применениеЦены, курсы валют, штрихкоды, настройкиТовары на складах, деньги, взаиморасчёты

Строка «замещение записей» — самая показательная. Если записать в регистр сведений цену 100, а затем 120 для того же товара и типа цен на ту же дату, останется одна запись со значением 120. Если провести два документа поступления по 100 и 120 единиц в регистр накопления, остаток станет 220 — записи складываются.

Что выбрать под задачу

Регистр сведений

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

Регистр накопления (остатки)

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

Регистр накопления (обороты)

Подходит для аналитических показателей без остатка: продажи, начисления, обращения. Ограничение: нельзя получить остаток на дату.

Как выбрать тип регистра под учётную задачу

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

Проверочный тест: представьте, что пользователь ввёл два документа подряд. Если логично, что значения сложатся (пришло 5 штук, потом ещё 3 — стало 8), нужен регистр накопления. Если логично, что второе значение заменит первое (цена была 100, стала 120), нужен регистр сведений.

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

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

Маршрут выбора

Нужно знать, сколько осталось на складе или на счётеРегистр накопления с видом «Остатки»
Нужен только итог за период без остатка (выручка, количество операций)Регистр накопления с видом «Обороты»
Нужно знать, какое значение действует на дату (цена, курс, ставка)Периодический регистр сведений
Значение устанавливается документом и должно откатываться при распроведенииРегистр сведений, подчинённый регистратору
Значение вводится вручную и не привязано к документамНезависимый регистр сведений

Работа с данными: запросы и виртуальные таблицы

Для периодического регистра сведений в запросах используются виртуальные таблицы «СрезПервых» и «СрезПоследних» с параметром — датой среза. Типовой запрос на актуальную цену выглядит как выборка из РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, Номенклатура = &Товар). Если регистр непериодический, виртуальных таблиц нет, и читается физическая таблица целиком.

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

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

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

Изменение структуры и риски при доработке

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

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

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

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

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

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

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

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

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

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

Два документа по одному объекту
Норма

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

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

Накопление замещает записи или сведения складываются

Отчёт по остаткам на дату
Норма

Остаток получается через виртуальную таблицу быстро

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

Остаток считается перебором всех записей или недоступен

Распроведение документа
Норма

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

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

Остаются «осиротевшие» записи без документа

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

Итог

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

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

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

Можно ли хранить цены товаров в регистре накопления?

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

Чем регистр накопления «Обороты» отличается от «Остатки»?

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

Обязателен ли документ-регистратор для регистра сведений?

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

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

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

Как получить историю изменения цены, если регистр сведений непериодический?

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

Почему запрос к регистру накопления работает медленно?

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