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

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

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

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

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

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

Ниже разобраны структура обоих типов регистров, режимы работы, критерии выбора, типичные ошибки проектирования и способы проверить, что регистр выбран правильно. Материал ориентирован на разработчиков и внедренцев, работающих с конфигуратором 1С:Предприятие 8.

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

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

Структура регистра сведений состоит из измерений (по которым хранится значение), ресурсов (сами значения) и реквизитов (дополнительные данные, не влияющие на уникальность записи). Уникальность записи определяется комбинацией измерений, а для периодического регистра — ещё и периодом. Это значит, что платформа не даст записать две записи с одинаковыми измерениями и периодом — вторая запись либо заменит первую, либо вызовет ошибку в зависимости от способа записи.

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

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

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

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

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

Сравнение по ключевым параметрам

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

ПараметрРегистр сведенийРегистр накопления
Что хранитЗначения (цены, курсы, настройки)Изменения показателей (приход/расход)
РегистраторНеобязателен (есть режим подчинения регистратору)Обязателен всегда
ПериодичностьОпциональная (секунда…год)Позиция документа (дата + ссылка)
ИтогиНе рассчитываютсяОстатки и обороты хранятся платформой
Виртуальные таблицыСрезПервых, СрезПоследнихОстатки, Обороты, ОстаткиИОбороты
Типичный вопрос«Какое значение действует?»«Сколько осталось / сколько прошло за период?»
ПримерыЦены, курсы валют, штрихкоды, ФИО физлицаТовары на складах, взаиморасчёты, продажи

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

Режимы подчинения регистра сведений

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

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

Какой режим регистра сведений выбрать

Независимый непериодический

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

Независимый периодический

Значения с историей, которые меняются вручную или загрузкой: курсы валют, ставки налогов.

Подчинённый регистратору

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

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

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

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

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

Как выбрать действие

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

Практические приёмы работы и проверка результата

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

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

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

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

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

Остаток формируется быстро и сходится с карточкой складского учёта

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

Отчёт выполняется долго — проверьте, рассчитаны ли итоги регистра

Запрос цен через СрезПоследних
Норма

По каждому товару одна строка с актуальной ценой

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

По товару несколько строк с разными датами — срез не применён

Отмена проведения документа
Норма

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

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

Записи остались — регистр независимый, записи нужно корректировать отдельно

Уникальность записей регистра сведений
Норма

По комбинации измерений одна запись на период

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

Дубли с одинаковыми измерениями — признак некорректной программной записи

Типичные ошибки и ограничения

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

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

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

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

Как регистры работают вместе в типовых конфигурациях

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

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

Итог

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

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

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

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

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

Почему запрос к срезу последних работает медленно на большом регистре сведений?

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

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

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

Когда оборотный регистр накопления предпочтительнее остаточного?

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

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

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

Как узнать, рассчитаны ли итоги по регистру накопления?

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