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

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

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

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

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

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

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

Что такое реквизит в 1С

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

У справочника «Номенклатура» реквизитами могут быть «Артикул», «Ставка НДС», «Единица измерения». У документа «Реализация товаров» — «Склад», «Договор», «Комментарий». Каждый реквизит описывает один экземпляр объекта целиком: у конкретной номенклатуры один артикул, у конкретного документа один склад шапки.

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

Что такое измерение в 1С

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

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

В регистре накопления «Товары на складах» измерения — «Склад» и «Номенклатура». Именно комбинация «склад + товар» определяет строку в таблице остатков. Добавление лишнего измерения дробит данные на более мелкие разрезы, удаление — агрегирует их.

Главные отличия: сравнительная таблица

Различия удобнее всего видны в сопоставлении по конкретным критериям. Таблица ниже отражает поведение платформы, а не рекомендации «по вкусу».

КритерийИзмерениеРеквизит
Где встречаетсяТолько в регистрахВ справочниках, документах, регистрах и других объектах
РольЗадаёт разрез хранения, «координату» записиХранит дополнительную информацию о записи
Влияние на уникальностьВходит в ключ записи, дубликаты по измерениям запрещеныНе влияет, значения могут повторяться
Обязательность заполненияКак правило, обязательно (проверяется платформой)Определяется настройкой «Проверка заполнения»
ИндексированиеИндексируется автоматически, отборы работают быстроИндексируется только при включении соответствующего свойства
Использование в отчётахОснова группировок и отборов, доступно в виртуальных таблицахОбычное поле выборки, в итогах регистров накопления недоступно
Изменение структурыДобавление/удаление меняет ключ записей, требует осторожностиДобавляется и удаляется относительно безболезненно

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

Где находится ресурс и как он вписывается в картину

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

Пример из регистра сведений «Штрихкоды»: измерение — «Штрихкод», ресурс — «Владелец» (номенклатура), реквизит — «Тип штрихкода». Уникальность обеспечивается штрихкодом; владелец — главное значение; тип — вспомогательная информация.

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

Как выбрать: измерение или реквизит

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

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

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

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

Как выбрать тип поля

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

Практический пример: проектируем регистр цен

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

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

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

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

Частые ошибки и ограничения

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

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

Типичные ошибки
01
Вынос аналитики (организация, склад) в реквизиты — записи разных разрезов затирают друг друга
02
Добавление описательных полей (комментарий, ответственный) в измерения — раздувание регистра дублями
03
Ожидание реквизита в виртуальной таблице остатков регистра накопления — запрос не работает
04
Изменение измерений на заполненном регистре без копии — потеря данных при реструктуризации
05
Хранение числового показателя реквизитом регистра накопления — итоги по нему не считаются

Как проверить, что структура спроектирована верно

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

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

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

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

Попытка записать дубль по измерениям
Норма

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

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

Создаются две записи, различающиеся только реквизитом

Построение отчёта по аналитике
Норма

Отбор и группировка работают напрямую по измерениям

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

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

Изменение пояснительного поля
Норма

Запись обновляется, количество строк не меняется

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

Появляется новая строка с той же аналитикой

Итог

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

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

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

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

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

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

Измерение отвечает на вопрос «в каком разрезе», ресурс — «что храним». В регистре «Товары на складах» склад и номенклатура — измерения, а количество — ресурс. Для регистров накопления только ресурсы участвуют в расчёте итогов и остатков.

Бывают ли измерения у справочников и документов?

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

Почему реквизит регистра накопления не виден в таблице остатков?

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

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

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

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

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