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