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