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