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

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

Регистр сведений в 1С: что это и как с ним работать

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

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

Ключевая особенность регистра сведений в том, что он хранит данные, которые не являются самостоятельными объектами учёта, а дополняют их. Курс валюты сам по себе не документ и не элемент справочника — это характеристика валюты на конкретный момент времени. Именно для таких данных платформа 1С предлагает регистры сведений как оптимальный по скорости и структуре механизм.

Работа с регистрами сведений встроена практически во все типовые конфигурации: «Управление торговлей», «Бухгалтерия предприятия», «Зарплата и управление персоналом». Понимание устройства этого объекта нужно и разработчику, который проектирует собственные механизмы, и администратору, и продвинутому пользователю, который хочет корректно вести цены, адреса или настройки обмена данными.

Из чего состоит регистр сведений

Структура регистра сведений определяется тремя группами полей: измерения, ресурсы и реквизиты. Измерения — это разрезы, в которых хранится значение. Например, в регистре «Цены номенклатуры» измерениями будут «Номенклатура» и «Тип цен». Ресурсы — это сами хранимые значения, в данном случае поле «Цена». Реквизиты — дополнительная информация к записи, которая не участвует в уникальности строки: например, комментарий или автор изменения.

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

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

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

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

Вид регистраОсобенностьТиповой пример
Независимый непериодическийОдно значение на ключ, редактируется напрямуюШтрихкоды номенклатуры
Независимый периодическийИстория значений, запись вручную или кодомКурсы валют
Подчинённый регистраторуЗаписи создаются документом, у строки есть регистраторЦены номенклатуры (устанавливаются документом)

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

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

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

Нужна история изменения значения во времениВыбирайте периодический регистр с подходящей периодичностью
Значение должно устанавливаться документом с возможностью отменыИспользуйте режим подчинения регистратору
Данные правятся вручную как справочная информацияПодойдёт независимый непериодический регистр
Нужен быстрый поиск по значению, а не по ключуДобавьте индексирование нужного реквизита или пересмотрите состав измерений

Чем регистр сведений отличается от справочника

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

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

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

Справочник или регистр сведений

Справочник

Самостоятельные объекты учёта, на которые ссылаются документы. Ограничение: хранение истории изменений требует отдельных механизмов.

Регистр сведений

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

Табличная часть объекта

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

Как создать и настроить регистр сведений в конфигураторе

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

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

Создание регистра сведений
  1. 1
    В конфигураторе откройте ветку «Регистры сведений» и добавьте новый объект
  2. 2
    Задайте имя, синоним, периодичность и режим записи (независимый или подчинён регистратору)
  3. 3
    На закладке «Данные» добавьте измерения, ресурсы и при необходимости реквизиты с корректными типами
  4. 4
    Настройте роли и права доступа, включите регистр в нужные подсистемы
  5. 5
    Обновите конфигурацию базы данных и проверьте создание записи в режиме предприятия

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

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

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

bsl
// Чтение актуального курса валюты через срез последних
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Курсы.Курс ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&Период, Валюта = &Валюта) КАК Курсы";
Запрос.УстановитьПараметр("Период", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("Валюта", ВалютаСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
    Курс = Выборка.Курс;
КонецЕсли;

Типичные ошибки и их последствия

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

Типичные ошибки
01
Запись набора без отбора — очищается весь регистр, данные теряются безвозвратно
02
Лишние измерения — невозможно записать два значения, которые по логике должны сосуществовать, и наоборот, недостаток измерений приводит к затиранию нужных данных
03
Хранение в ресурсе ссылочного объекта, по которому потом строятся отборы в запросах — запросы работают медленно из-за соединений
04
Ручная правка регистра, подчинённого регистратору — записи расходятся с документами, отчёты показывают противоречивые данные
05
Игнорирование среза последних и чтение периодического регистра полным перебором — резкое падение производительности на больших таблицах

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

Как проверить, что регистр работает правильно

После создания или доработки регистра полезно пройти короткий контроль: создать тестовую запись, прочитать её запросом, проверить уникальность ключа и поведение при повторной записи. Для периодических регистров дополнительно проверяется срез последних на дату до первой записи (должен вернуть пустой результат) и на дату после (должен вернуть последнее значение).

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

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

Повторная запись с тем же ключом
Норма

Значение перезаписывается, дубликатов нет

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

Появляются две строки с одинаковым ключом или ошибка уникальности там, где она не нужна

Срез последних на прошлую дату
Норма

Возвращается значение, актуальное именно на эту дату

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

Возвращается текущее значение или пустой результат при наличии истории

Проведение документа-регистратора
Норма

В регистре появляются движения со ссылкой на документ

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

Записи не создаются или остаются после отмены проведения

Права пользователя
Норма

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

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

Регистр недоступен в меню или доступен для правки всем

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

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

Частые вопросы о регистрах сведений

Можно ли восстановить случайно очищенный регистр сведений?

Только из резервной копии базы. Платформа не ведёт корзину удалённых записей регистров, поэтому перед массовыми операциями записи и обновлениями конфигурации архив обязателен. В клиент-серверном варианте дополнительно может помочь журнал транзакций СУБД, если он настроен.

Чем периодический регистр отличается от регистра с датой в реквизите?

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

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

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

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

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

Сколько измерений можно добавить в регистр сведений?

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

Виден ли регистр сведений обычному пользователю?

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

Итог

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

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