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

Справочники и Данные · 13 мин

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

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

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

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

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

Что такое справочник и как он устроен

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

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

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

Что такое регистр сведений и как он устроен

Регистр сведений — это объект для хранения данных в разрезе заданных измерений. Запись регистра состоит из измерений (ключей), ресурсов (хранимых значений) и реквизитов (дополнительных характеристик записи). Например, регистр «Цены номенклатуры» может иметь измерения «Номенклатура» и «Тип цен», а ресурс — «Цена».

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

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

Сравнение по ключевым параметрам

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

ПараметрСправочникРегистр сведений
Что хранитПеречень объектов (сущности)Значения в разрезе измерений
ИдентификацияУникальная ссылка, кодНабор измерений (+ период)
Ссылка из документаДа, напрямуюНет, только по значениям измерений
Хранение историиНет (только текущее состояние)Да, для периодических регистров
Иерархия и группыДаНет
ПодчинённостьВладелец — другой справочникРегистратор — документ
Табличные частиДаНет

Обратите внимание на строку про ссылки: это самое принципиальное отличие. Реквизит документа может иметь тип «СправочникСсылка», но не может напрямую ссылаться на строку регистра сведений. Если бизнес-логика требует выбирать сущность в документе — это почти всегда справочник.

Как выбрать объект под конкретную задачу

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

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

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

Как выбрать объект

Сущность выбирается в документах и нужна ссылка на неёСоздавайте справочник
Нужно хранить значение с историей по датам (цена, курс, ставка)Используйте периодический регистр сведений
Значение привязано к объекту, но история не нужна (текущий адрес, статус)Подойдёт непериодический регистр сведений
Записи должны создаваться и удаляться вместе с документомРегистр сведений, подчинённый регистратору
Нужна иерархия групп или табличные частиТолько справочник — регистр сведений этого не поддерживает

Когда справочник — ошибочный выбор

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

Когда регистр сведений — ошибочный выбор

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

Периодичность и хранение истории

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

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

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

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

Производительность и объём данных

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

Справочники тоже работают быстро, но их назначение другое — обеспечить ссылочную целостность и удобный выбор. Хранить в справочнике сотни тысяч «записей-значений» (например, историю цен элементами справочника) — антипаттерн: выборка по дате потребует перебора, а ссылочная модель будет использоваться не по назначению.

Типичные ошибки и как их избежать

Большинство проблем возникает не из-за незнания синтаксиса, а из-за неверного моделирования данных. Ниже собраны ошибки, которые чаще всего встречаются в самописных и доработанных конфигурациях.

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

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

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

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

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

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

Выбор сущности в документе
Норма

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

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

Приходится вводить значение строкой или искать запись регистра вручную

История изменений значения
Норма

Запросом или срезом последних получаем значение на любую прошлую дату

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

После изменения значения старое недоступно нигде

Целостность при удалении
Норма

Платформа запрещает удаление элемента справочника, если на него есть ссылки

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

Значение можно удалить, и документы остаются с «битыми» данными

Отсутствие дублирования
Норма

Каждое значение хранится в одном месте

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

Одно и то же вводится и в карточку, и в регистр, данные расходятся

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

Итог

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

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

Частые вопросы

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

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

Что выбрать для хранения адресов контрагентов?

Стандартный подход — регистр сведений с измерением «Контрагент» (ссылка на справочник) и ресурсами для полей адреса, либо табличная часть справочника, если адресов немного и история не нужна. Если требуется хранить историю смены адресов, выбирайте периодический регистр сведений — табличная часть историю не сохраняет.

Можно ли превратить справочник в регистр сведений без потери данных?

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

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

Подчинённый справочник хранит самостоятельные объекты (например, договоры контрагента), на которые можно ссылаться, и у каждого элемента есть владелец. Регистр сведений с измерением-ссылкой хранит значения, привязанные к объекту (например, ставку дисконтирования контрагента). Если нужны ссылки из документов — подчинённый справочник; если просто значения по ключу — регистр.

Какую периодичность выбрать для регистра сведений?

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

Где хранить штрихкоды номенклатуры — в справочнике или регистре?

Обычно в непериодическом регистре сведений с измерением «Номенклатура» и ресурсом «Штрихкод» (или наоборот, с измерением «Штрихкод» для быстрого поиска по коду). Такой подход позволяет хранить несколько штрихкодов для одного товара и быстро находить товар по отсканированному коду, не перегружая карточку номенклатуры.