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