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