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

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

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

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

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

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

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

Реквизит — это поле объекта конфигурации, хранящее одно значение заданного типа: строку, число, дату, ссылку на справочник, булево и так далее. Реквизиты есть у справочников (например, «ИНН» у контрагента), у документов («Комментарий», «СуммаДокумента»), у планов счетов, у регистров и почти всех остальных объектов метаданных.

Ключевая особенность реквизита — он описывает объект, но не участвует в автоматическом расчёте итогов. Если у документа «Реализация» есть реквизит «СуммаДокумента», платформа не будет сама суммировать его по периодам: для анализа придётся писать запрос. Итоги в 1С строятся по ресурсам регистров, а не по реквизитам документов.

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

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

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

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

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

Три роли полей в регистре: измерение, ресурс, реквизит

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

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

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

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

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

Типичная ситуация выбора: нужно хранить ставку НДС в движениях документа. Ставка не суммируется по строкам регистра — складывать 20% и 20% бессмысленно. Значит, это реквизит регистра (или измерение, если по ставке строят отдельные итоги). А сумма НДС, наоборот, суммируется — это ресурс.

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

Как выбрать действие

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

Отличия в поведении при проведении и в отчётах

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

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

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

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

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

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

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

Типичные ошибки
01
Суммируемый показатель создан реквизитом регистра — отчёты строятся медленно через таблицу движений вместо итогов
02
Курс или процентная ставка созданы ресурсом регистра накопления — платформа суммирует бессмысленные значения
03
Аналитический разрез создан реквизитом вместо измерения — невозможно получить остатки в нужном разрезе без переделки регистра
04
Изменение структуры регистра на рабочей базе без резервной копии и без плана переноса данных

Как проверить и безопасно изменить структуру

Перед изменением структуры регистра проверьте, какие отчёты и запросы используют его поля. В конфигураторе доступен поиск ссылок на объект метаданных: он покажет модули, где обращаются к ресурсам и реквизитам. Удаление или переименование поля без такого анализа сломает запросы и проведение документов.

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

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

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

Отчёт по регистру после изменений
Норма

Остатки и обороты совпадают с контрольными значениями до изменения

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

Суммы расходятся или появились записи с пустым ресурсом

Проведение документов
Норма

Документы проводятся без ошибок, движения заполняют новый ресурс

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

Ошибки при проведении или пустые значения в новых движениях

Запросы и отчёты
Норма

Все отчёты открываются и показывают корректные данные

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

Ошибки «Поле не найдено» в запросах к старому реквизиту

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

Может ли ресурс быть нечисловым?

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

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

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

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

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

Что выбрать для хранения цены товара: реквизит или ресурс?

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

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

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

Влияет ли количество ресурсов на скорость работы регистра?

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

Итог

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

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