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