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

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

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

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

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

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

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

Что такое измерение регистра

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

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

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

Что такое ресурс регистра

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

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

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

Ключевые отличия в одной таблице

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

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

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

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

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

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

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

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

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

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

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

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

Третья группа ошибок — избыточные измерения. Каждое лишнее измерение дробит итоги и увеличивает таблицу итогов, замедляя проведение документов и получение остатков. Измерение стоит добавлять только тогда, когда по нему реально нужны отдельные итоги.

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

Как различия проявляются в запросах и итогах

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

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

bsl
ВЫБРАТЬ
	ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
	ТоварыНаСкладахОстатки.Склад КАК Склад,
	ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК ТоварыНаСкладахОстатки

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

Что делать, если структуру спроектировали неверно

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

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

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

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

Срез последних по регистру сведений
Норма

По каждой комбинации измерений возвращается одна актуальная запись

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

Возвращаются устаревшие или дублирующиеся значения

Остатки регистра накопления
Норма

Итоги корректно группируются по каждому измерению

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

Часть аналитики недоступна или итоги слипаются

Скорость проведения документов
Норма

Проведение и отчёты работают без заметных задержек

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

Проведение тормозит из-за раздутой таблицы итогов

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

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

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

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

Жёсткий технический лимит существует, но на практике ограничением становится производительность: каждое измерение дробит итоги и увеличивает объём хранимых данных. Обычно в регистре 2–5 измерений. Если хочется добавить седьмое — стоит пересмотреть модель учёта.

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

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

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

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

Что будет, если записать в регистр сведений строку с уже существующей комбинацией измерений?

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

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

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

Итог

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

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