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

Разработка и Конфигурация · 12 мин

Как сделать регистр сведений в 1С

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

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

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

Материал рассчитан на режим «Предприятие» и конфигуратор версии 8.3: шаги одинаковы для управляемых и обычных приложений, различия касаются только внешнего вида форм. Все действия безопасны в учебной или тестовой базе; перед изменениями в рабочей базе сделайте резервную копию.

Когда нужен регистр сведений, а когда справочник

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

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

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

Сравнение вариантов

Справочник

Подходит для объектов-участников учёта: номенклатура, контрагенты, договоры. Есть код, наименование, иерархия, на элемент ссылаются документы.

Независимый регистр сведений

Подходит для значений, привязанных к ключу: курсы валют, штрихкоды, настройки. Записи вводятся вручную или программно, без документа.

Регистр сведений, подчинённый регистратору

Подходит для данных, которые появляются только при проведении документа: цены, устанавливаемые документом «Установка цен», адреса из кадрового приказа.

Создание регистра сведений в конфигураторе

Откройте конфигуратор и перейдите в дерево конфигурации (меню «Конфигурация» → «Открыть конфигурацию» или «Конфигурация» → «Конфигурация базы данных» для просмотра текущей структуры). Найдите ветку «Регистры сведений», щёлкните по ней правой кнопкой мыши и выберите «Добавить». Откроется окно редактирования объекта с закладками.

На закладке «Основные» задайте имя регистра — оно используется в коде, поэтому пишите без пробелов, например КурсыВалют или ЦеныНоменклатуры. Синоним сформируется автоматически, его увидят пользователи. Здесь же выберите периодичность (подробнее ниже) и режим записи.

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

Порядок действий
  1. 1
    Откройте конфигуратор и дерево конфигурации
  2. 2
    В ветке «Регистры сведений» нажмите «Добавить»
  3. 3
    Укажите имя, периодичность и режим записи
  4. 4
    Добавьте измерения на закладке «Данные»
  5. 5
    Добавьте ресурсы и при необходимости реквизиты
  6. 6
    Сохраните объект и нажмите F7 для обновления конфигурации БД
  7. 7
    Откройте регистр в режиме «Предприятие» и проверьте заполнение

Настройка измерений, ресурсов и реквизитов

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

Ресурсы — хранимые значения. Для курсов валют это числовой ресурс «Курс», для цен — «Цена». Реквизиты — дополнительные данные, которые не входят в ключ и не являются основным значением: например, комментарий или ответственный. Разница принципиальна: по ресурсам строятся срезы и виртуальные таблицы, реквизиты — просто сопутствующая информация.

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

Выбор периодичности и режима записи

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

Для курсов валют и цен почти всегда нужна периодичность «В пределах дня» или «В пределах секунды», чтобы получать значение на любую дату через виртуальную таблицу «СрезПоследних». Для штрихкодов и настроек периодичность обычно не нужна — актуально только одно значение.

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

Заполнение регистра данными

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

Программно записи добавляются через менеджер регистра. Ниже пример создания записи в независимом периодическом регистре курсов валют:

МенеджерЗаписи = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();

МенеджерЗаписи.Период = ТекущаяДатаСеанса();

МенеджерЗаписи.Валюта = ВалютаСсылка;

МенеджерЗаписи.Курс = 92.5;

МенеджерЗаписи.Записать();

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

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

Проверка результата и типичные ошибки

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

Самая частая ошибка — попытка записать дубль: вторую запись с тем же набором измерений и периодом. Платформа выдаёт ошибку нарушения уникальности индекса. Вторая типичная проблема — неправильный выбор периодичности: если выбрать «В пределах дня», две записи на один день невозможны даже с разным временем. Третья — использование составных типов в измерениях, что замедляет запросы и усложняет отборы.

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

Типичные ошибки
01
Дублирование ключа: вторая запись с теми же измерениями и периодом вызывает ошибку уникальности
02
Неверная периодичность: «в пределах дня» не позволяет хранить две записи за один день
03
Измерение составного типа «любая ссылка» замедляет запросы и мешает контролю целостности
04
Независимый режим вместо подчинённого: данные расходятся с документами после ручных правок
05
Изменение состава измерений в заполненной базе без переноса данных — записи теряются или искажаются
Контрольные точки

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

Регистр открывается в режиме «Предприятие»
Норма

Список записей доступен, форма открывается без ошибок

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

Регистр не виден в интерфейсе — не включён в командный интерфейс или не обновлена конфигурация БД

Создание записи
Норма

Запись сохраняется, типы полей соответствуют задуманным

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

Ошибка уникальности — дубль ключа; ошибка типа — неверно выбран тип измерения

Срез последних для периодического регистра
Норма

Запрос возвращает актуальное значение на заданную дату

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

Срез пустой или возвращает устаревшее значение — проверьте периоды записей

Подчинённый регистр
Норма

Записи появляются при проведении и удаляются при отмене проведения

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

Записи остаются после отмены проведения — движения не очищаются в обработке проведения

Ограничения и безопасная работа в рабочей базе

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

Реструктуризация больших регистров (миллионы записей) может занять продолжительное время и потребовать монопольного режима. Выполняйте такие изменения в нерабочее время и предупреждайте пользователей. Для файловых баз монопольный режим означает, что все пользователи должны выйти.

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

Частые вопросы о регистрах сведений

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

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

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

В непериодическом регистре — нет, комбинация измерений уникальна. Варианты решения: сделать регистр периодическим, добавить ещё одно измерение (например, «ВидКонтакта») или использовать табличную часть справочника вместо регистра.

Как получить актуальное значение из периодического регистра в запросе?

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

Почему регистр не виден пользователям в режиме «Предприятие»?

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

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

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

Нужен ли регистру сведений номер или код, как у справочника?

Нет. Уникальность записи обеспечивается комбинацией измерений (и периода для периодического регистра). Отдельных полей «Код» и «Наименование» у регистра сведений нет — в этом одно из его отличий от справочника.

Итог

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

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