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