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

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

Ресурс регистра в 1С: что это и для чего нужен

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

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

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

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

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

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

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

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

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

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

КритерийИзмерениеРесурсРеквизит
РольРазрез учётаУчитываемый показательСправочное примечание
Участвует в итогахОпределяет группировку итоговДа, суммируетсяНет
ПримерНоменклатура, СкладКоличество, СуммаКомментарий, номер партии для справки
Отбор в запросахЭффективно, индексируетсяОбычно не используется для отбораМедленно, без индекса

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

Ресурсы в разных видах регистров

Регистр накопления «Остатки»

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

Регистр накопления «Обороты»

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

Регистр сведений

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

Регистр бухгалтерии

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

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

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

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

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

Куда поместить поле

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

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

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

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

Запросы к виртуальным таблицам «Остатки» и «Обороты» читают именно ресурсы. Если в запросе вы выбираете ресурс, которого нет в регистре, получите ошибку; если поле было создано реквизитом вместо ресурса — виртуальная таблица его просто не вернёт, и итог придётся считать детальным перебором, что на больших объёмах неприемлемо медленно.

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

Как проверить правильность схемы

Отчёт по остаткам
Норма

Остаток по ресурсу получается из виртуальной таблицы мгновенно

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

Приходится суммировать таблицу движений вручную

Группировка по аналитике
Норма

Измерения доступны для группировки и отбора

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

Нужный разрез оказался ресурсом и не группируется

Движения документа
Норма

Каждое движение заполняет все нужные ресурсы

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

Часть ресурсов пустует — итоги занижены

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

Самая распространённая ошибка — объявление аналитики ресурсом или наоборот. Вторая по частоте — незаполнение ресурса в движениях: записи есть, но итоги нулевые, потому что в модуле проведения полю ресурса не присвоено значение. Третья — расхождение знаков: расход записан с плюсом вместо минуса, и остатки уходят в минус или раздуваются.

Типичные ошибки
01
Измерение создано ресурсом — невозможно группировать и отбирать по этому разрезу
02
Ресурс не заполняется в процедуре ОбработкаПроведения — итоги всегда нулевые
03
Неверный вид движения (Приход/Расход) — остатки становятся отрицательными или завышенными
04
Лишние ресурсы «на всякий случай» — раздувание таблиц итогов и замедление проведения
05
Изменение ресурсов в рабочей базе без копии — риск потери данных при сбое реструктуризации

Ещё одна ошибка — попытка хранить в ресурсе регистра накопления ссылочные данные «для удобства». Ресурсы регистра накопления должны быть агрегируемыми показателями; ссылку на документ-основание или комментарий правильно размещать в реквизитах.

Практический пример: регистр «ТоварыНаСкладах»

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

bsl
Движение = Движения.ТоварыНаСкладах.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = СтрокаТовары.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = СтрокаТовары.Количество;
Движение.Сумма = СтрокаТовары.Сумма;

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

Как добавить ресурс регистру
  1. 1
    Откройте регистр в конфигураторе и перейдите на вкладку «Данные»
  2. 2
    Добавьте ресурс, задайте имя и тип (обычно Число с нужной точностью)
  3. 3
    Обновите процедуру проведения документов: заполните новый ресурс в движениях
  4. 4
    Обновите отчёты и запросы, использующие регистр
  5. 5
    Сделайте резервную копию и выполните обновление конфигурации базы данных
  6. 6
    Проверьте итоги на тестовом документе: остатки и обороты должны измениться корректно

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

Может ли регистр обойтись без ресурсов?

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

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

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

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

Можно, но это вызовет реструктуризацию таблиц. Числовой ресурс можно расширить (увеличить длину или точность) относительно безопасно; смена типа на несовместимый может привести к потере значений. Всегда делайте резервную копию и проверяйте результат на копии базы.

Почему отчёт не видит моё поле регистра?

Чаще всего поле создано реквизитом, а не ресурсом. Виртуальные таблицы «Остатки» и «Обороты» возвращают только ресурсы и измерения. Проверьте в конфигураторе, в какой ветке («Ресурсы» или «Реквизиты») находится поле.

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

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

Нужно ли индексировать ресурсы?

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

Итог

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

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