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

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

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

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

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

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

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

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

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

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

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

Как измерения формируют ключ записи и периодичность

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

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

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

Как правильно выбрать измерения при проектировании регистра

Начните с формулировки вопроса, на который регистр должен отвечать. Если звучит «какая цена у этого товара по этому виду цен» — измерения очевидны: номенклатура и вид цен. Если вопрос «какой статус у заказа» — достаточно одного измерения «Заказ». Формулировка «в разрезе чего» напрямую переводится в список измерений.

Далее проверьте каждое кандидатное поле на три признака: участвует ли оно в отборах при чтении данных; определяет ли оно уникальность записи; будет ли по нему строиться срез последних. Если ответ на все три вопроса отрицательный — поле следует сделать реквизитом, а не измерением.

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

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

Как выбрать действие

По полю регулярно отбирают записи и оно определяет уникальностьСделайте поле измерением
Поле хранит значение, которое нужно получить в ответеСделайте поле ресурсом
Поле нужно только для справки и не участвует в отборахСделайте поле реквизитом
Нужна история изменения значения по датамВключите периодичность регистра, а не добавляйте дату как измерение

Независимые и подчинённые регистратору регистры: влияние на измерения

Независимый регистр сведений заполняется вручную или программно, и его ключ — только измерения (плюс период для периодических). Такой вариант подходит для данных, которые не привязаны к документам: курсы валют, настройки пользователей, соответствия объектов.

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

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

Как измерения влияют на производительность и запросы

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

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

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

Контрольные точки

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

Уникальность данных
Норма

Невозможно создать две записи с одинаковыми измерениями и периодом

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

Дубли значений для одного объекта, непонятно, какая запись актуальна

Скорость запросов
Норма

Отборы в запросах идут по измерениям и параметрам виртуальных таблиц

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

Условия наложены на реквизиты, отчёты заметно тормозят

Состав полей
Норма

Каждое измерение используется в отборах или ключе

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

Есть измерения, по которым никто никогда не отбирает данные

Типичные ошибки при работе с измерениями

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

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

Третья типичная проблема — использование строки неограниченной длины или составного типа в измерении без необходимости. Это ухудшает индексирование и может приводить к неожиданным проблемам при записи. Строковые измерения всегда задавайте с разумной фиксированной длиной.

Типичные ошибки
01
Добавление лишних измерений — раздувает ключ, замедляет запись и усложняет логику
02
Недостаток измерений — новые значения затирают существующие записи с тем же ключом
03
Поле для отборов оформлено реквизитом — запросы работают медленно, требуется переделка регистра
04
Изменение состава измерений в рабочей базе без миграции — риск потери или рассогласования данных

Практический пример: проектирование регистра «Цены номенклатуры»

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

Решение: регистр сведений периодический, независимый. Измерения — «Номенклатура» (ссылка на справочник) и «ВидЦены» (ссылка на перечисление или справочник). Ресурс — «Цена» (число). Реквизиты — «Ответственный» и «Комментарий». Периодичность — в пределах секунды или дня, в зависимости от частоты изменений.

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

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

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

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

Жёсткого практического лимита, о котором нужно беспокоиться в типовых задачах, нет, но каждое измерение входит в ключ и индексы. На практике регистры с 1–4 измерениями покрывают подавляющее большинство сценариев. Если измерений больше пяти, стоит пересмотреть структуру: возможно, часть полей должна быть реквизитами или данные логичнее разнести по нескольким регистрам.

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

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

Чем измерение отличается от реквизита при выборке данных?

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

Нужно ли делать дату измерением, чтобы хранить историю?

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

Можно ли использовать составной тип для измерения?

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

Как понять, что измерение выбрано неправильно?

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

Итог

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

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