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