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

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

Регистр сведений в 1С: измерения и ресурсы простыми словами

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

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

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

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

Что такое измерения регистра сведений

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

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

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

Что такое ресурсы и чем они отличаются от измерений

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

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

Признак правильного выбора: если значение участвует в идентификации записи («цена чего?» — товара), это измерение; если это само хранимое данное («сколько стоит?» — 1500), это ресурс. Числовые ресурсы в запросах можно суммировать и усреднять, измерения — только группировать.

КритерийИзмерениеРесурс
РольКлюч записи, разрез аналитикиХранимое значение
УникальностьКомбинация не может повторятьсяЗначения могут совпадать у разных записей
ИзменениеТолько через удаление и новую записьСвободно перезаписывается
Типичные типыСсылки на справочники, перечисленияЧисла, строки, даты, булево
Пример (цены)Номенклатура, Тип ценЦена

Реквизиты: третья группа полей

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

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

Периодичность и подчинение регистратору

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

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

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

Как выбрать режим регистра

Данные меняются со временем и нужна история (цены, курсы, оклады)Делайте регистр периодическим
Значение одно на объект и история не нужна (ФИО по умолчанию, настройки)Используйте непериодический регистр
Записи появляются только в результате проведения документовВыбирайте режим подчинения регистратору
Данные загружаются извне или вводятся вручную без документаОставляйте регистр независимым

Как спроектировать структуру регистра: порядок действий

Проектирование начинается с вопроса «в разрезе чего храним данные». Ответ формирует список измерений. Затем определяется, что является хранимым значением — это ресурсы. Всё остальное, что нужно «до кучи», выносится в реквизиты.

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

Порядок проектирования регистра сведений
  1. 1
    Сформулируйте, какую информацию хранит регистр, и в разрезе чего она нужна
  2. 2
    Выпишите разрезы — это кандидаты в измерения
  3. 3
    Определите хранимые значения — это ресурсы
  4. 4
    Решите, нужна ли история: если да — включите периодичность
  5. 5
    Определите, будут ли записи создаваться документами — тогда подчините регистратору
  6. 6
    Проверьте уникальность: попробуйте мысленно создать две записи с одинаковыми измерениями — если это осмысленно, структура неверна

Чтение и запись данных: практические приёмы

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

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

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

Типичные ошибки и как их проверить

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

Типичные ошибки
01
Ресурс добавлен в измерения ради хранения нескольких значений — вместо этого добавьте недостающее измерение-разрез (например, тип цен)
02
История хранится через несколько колонок-реквизитов (Цена1, Цена2) вместо периодического регистра — теряется гибкость и даты изменений
03
Измерение строкового типа без ограничения длины — раздувает индекс и замедляет запись
04
Отборы в запросах строятся по реквизитам вместо измерений — при росте таблицы запросы резко замедляются
05
Независимый регистр заполняется при проведении документов без подчинения регистратору — при отмене проведения остаются «сироты»-записи
Контрольные точки

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

Уникальность ключа
Норма

Повторная запись с теми же измерениями вызывает контролируемую ошибку или осознанно перезаписывается

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

Дублирующиеся записи с одинаковым смыслом накапливаются

Хранение истории
Норма

Срез последних на прошлую дату возвращает корректное старое значение

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

Старое значение безвозвратно затирается новым

Скорость отборов
Норма

Отборы идут по измерениям, запросы выполняются быстро

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

В условиях запросов фигурируют реквизиты, время выполнения растёт с объёмом данных

Удобный приём самопроверки: опишите регистр одной фразой «для каждого [измерения] храним [ресурс]». Если фраза звучит естественно — структура верна. Например: «для каждого сочетания товара и типа цен храним цену». Если фраза не складывается, значит, измерение или ресурс выбраны неверно.
ПЗ
Практическое замечание
Итог

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

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

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

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

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

Сколько измерений может быть у регистра сведений?

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

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

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

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

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

Что такое виртуальные таблицы «СрезПоследних» и «СрезПервых»?

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

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

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