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