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