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