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