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

Если вы программист , администратор или аналитик, работающий с конфигурациями типа УТ 11, БП 3.0 или ЗУП 3.1, понимание этой разницы критично. Например, добавление лишнего реквизита в регистр накопления может замедлить обработку данных на 30-40%, а неправильное использование ресурсов — исказить итоги в отчётах. Далее мы разберёмся, как эти элементы устроены «под капотом», где их правильно применять, и какие подводные камни ждут при ошибках.

1. Что такое реквизит в 1С: определение и назначение

Реквизит — это атрибут объекта конфигурации (справочника, документа, регистра и т.д.), который хранит дополнительную информацию о нём. Например, в справочнике Номенклатура реквизитами могут быть Артикул, Вес или Производитель. Главная особенность реквизитов — они привязаны к конкретной записи и описывают её свойства.

Реквизиты делятся на два типа:

  • 📌 Стандартные — заложены в платформу по умолчанию (например, Наименование или Код в справочниках).
  • 🔧 Дополнительные — создаются разработчиком для расширения функционала (например, СрокГодности для номенклатуры).

Важно: реквизиты не участвуют в агрегации данных (подсчёте сумм, количеств и т.п.). Их задача — хранить статичную или слабо изменяющуюся информацию. Например, если в документе ПоступлениеТоваров добавить реквизит ТемператураХранения, платформа не будет автоматически суммировать или анализировать это значение в отчётах.

💡

Чтобы ускорить работу с реквизитами, используйте индексирование. В свойствах реквизита установите флаг Индексировать — это ускорит поиск по нему в больших справочниках (от 10 000 записей).

2. Ресурсы в 1С: зачем они нужны и как работают

Ресурсы — это специальные поля, которые используются исключительно в регистрах (накопления, сведений, бухгалтерии) для хранения данных, подлежащих агрегации. В отличие от реквизитов, ресурсы участвуют в расчётах итогов, фильтрации и группировке. Например, в регистре накопления ТоварыНаСкладах ресурсами будут Количество и Сумма — платформа автоматически суммирует их при формировании отчётов.

Ключевые особенности ресурсов:

  • 📊 Агрегируются: платформа сама подсчитывает суммы, средние значения, максимумы/минимумы по ресурсам.
  • 🔄 Изменяются динамически: при проведении документов значения ресурсов обновляются (например, при поступлении товара увеличивается Количество).
  • 📈 Используются в виртуальных таблицах: ресурсы формируют основу для отчётов типа ОстаткиТоваров или ПродажиПоКонтрагентам.

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

📊 Как часто вы используете ресурсы в своих конфигурациях?
Постоянно, это основа моих регистров
Только для стандартных отчётов
Рядом, но предпочитаю реквизиты
Никогда не работал с ними

3. Сравнение реквизитов и ресурсов: таблица ключевых различий

Критерий Реквизит Ресурс
Где используется Любые объекты конфигурации (справочники, документы, регистры) Только в регистрах (накопления, сведений, бухгалтерии)
Агрегация данных ❌ Нет ✅ Да (суммы, количества, средние значения)
Изменяемость Может быть статичным (например, Артикул) или редко изменяемым Динамически обновляется при проведении документов
Пример использования Поле Производитель в справочнике Номенклатура Поле Количество в регистре ТоварыНаСкладах
Влияние на производительность Минимальное (если не индексировать большие справочники) Высокое (неправильные ресурсы замедляют пересчёт итогов)

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

  1. Если сделать ресурс реквизитом — придётся вручную писать код для подсчёта итогов (например, суммировать Количество по всем записям регистра).
  2. Если сделать реквизит ресурсом — платформа будет тратить время на ненужную агрегацию (например, пытаться суммировать Артикул).
💡

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

4. Когда использовать реквизиты, а когда — ресурсы

Выбор между реквизитом и ресурсом зависит от логики работы данных. Вот чек-лист для принятия решения:

☑️ Как выбрать между реквизитом и ресурсом

Выполнено: 0 / 4

Примеры из реальных конфигураций:

  • 📦 В документе РеализацияТоваров поле СуммаДокумента должно быть ресурсом в регистре накопления Продажи, чтобы автоматически суммироваться в отчётах.
  • 🏷️ В справочнике Контрагенты поле ИНН — это реквизит, так как оно не участвует в расчётах.
  • 📅 В регистре сведений ГрафикРаботы поле ЧасыРаботыресурс, потому что по нему строятся отчёты о загрузке сотрудников.

Ошибка в выборе приводит к:

  • ⚠️ Замедлению работы: лишние ресурсы в регистрах увеличивают время пересчёта итогов.
  • ⚠️ Потере функциональности: если сделать ресурс реквизитом, придётся вручную писать код для агрегации.
  • ⚠️ Сложностям при обновлении: неверная структура данных может конфликтовать с типовыми отчётами.
Что будет, если в регистре накопления сделать все поля реквизитами?

Платформа не сможет автоматически формировать остатки и обороты. Например, отчёт ВедомостьПоТоварамНаСкладах покажет пустые итоги, так как не будет данных для суммирования. Придётся писать отдельные запросы с ручным подсчётом, что увеличит нагрузку на сервер.

5. Технические нюансы: как платформа работает с реквизитами и ресурсами

Под капотом 1С:Предприятие обрабатывает реквизиты и ресурсы по-разному:

Реквизиты хранятся в таблицах базы данных как обычные колонки. Например, реквизит Артикул в справочнике Номенклатура будет колонкой в таблице _Reference123 (где 123 — внутренний идентификатор справочника). Доступ к реквизитам осуществляется через механизм ПолучениеДанных или прямые запросы.

Ресурсы хранятся в специальных структурах — виртуальных таблицах регистров. Платформа автоматически поддерживает их актуальность через механизм пересчёта итогов. Например, при проведении документа ПоступлениеТоваров платформа обновляет ресурс Количество в регистре ТоварыНаСкладах и пересчитывает итоги по всем измерениям (складам, номенклатуре).

Ключевые отличия на уровне СУБД:


// Пример запроса к реквизиту (простое чтение)

ВЫБРАТЬ

Номенклатура.Артикул КАК Артикул

ИЗ

Справочник.Номенклатура КАК Номенклатура

// Пример запроса к ресурсу (использует виртуальную таблицу)

ВЫБРАТЬ

ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,

ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток

ИЗ

РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекущаяДата,) КАК ТоварыНаСкладахОстатки

Обратите внимание: виртуальные таблицы ресурсов (.Остатки(), .Обороты()) — это динамические представления, которые платформа строит «на лету». Они не существуют в базе как физические таблицы, что позволяет экономить место на диске.

💡

Чтобы ускорить работу с ресурсами, используйте предопределённые виртуальные таблицы с параметром Периодичность. Например, РегистрНакопления.ТоварыНаСкладах.Остатки(&НачалоДня, &КонецДня, День) вернёт данные с точностью до дня, что быстрее, чем по секундам.

6. Типичные ошибки и как их избежать

Даже опытные разработчики иногда путают реквизиты и ресурсы. Вот самые распространённые ошибки и способы их решения:

Ошибка 1: Использование реквизита вместо ресурса в регистре

🔹 Пример: В регистре накопления Продажи поле СуммаПродажи сделано реквизитом.

🔹 Последствия: Отчёт ВыручкаПоКонтрагентам не покажет суммы — придётся писать ручной запрос с СУММА().

🔹 Решение: Перенести СуммаПродажи в ресурсы регистра.

Ошибка 2: Добавление лишних ресурсов в регистр

🔹 Пример: В регистре ТоварыНаСкладах ресурсами сделаны Количество, Сумма, Вес и Объём.

🔹 Последствия: Пересчёт итогов замедляется в 2-3 раза, так как платформа агрегирует все ресурсы.

🔹 Решение: Оставить только Количество и Сумма как ресурсы, а Вес и Объём вынести в реквизиты.

Ошибка 3: Хранение изменяемых данных в реквизитах документов

🔹 Пример: В документе ЗаказПокупателя поле СтатусОплаты сделано реквизитом, хотя оно меняется при поступлении денег.

🔹 Последствия: При изменении статуса придётся перепровести документ, иначе данные разойдутся.

🔹 Решение: Использовать регистр сведений с ресурсом СтатусОплаты и измерением ДокументРасчётов.

💡

Перед добавлением нового поля в регистр спросите себя: «Нужно ли это поле для расчётов итогов?» Если нет — делайте его реквизитом.

⚠️ Внимание: В конфигурациях на управляемых формах (например, УТ 11 или БП 3.0) неправильное использование ресурсов может привести к ошибкам при фоновом пересчёте итогов. Всегда проверяйте логику работы регистров в Консоли запросов перед обновлением базы.

7. Практические примеры: реквизиты и ресурсы в типовых конфигурациях

Рассмотрим, как реквизиты и ресурсы применяются в стандартных конфигурациях :

Пример 1: Регистр накопления ТоварыНаСкладах (УТ 11)

  • 📌 Ресурсы: Количество, Сумма — участвуют в расчёте остатков и оборотов.
  • 📌 Реквизиты: Цена, ПроцентНДС — хранят справочную информацию о партии товара.

Пример 2: Документ ПоступлениеТоваров (БП 3.0)

  • 📌 Реквизиты: Контрагент, Договор, Склад — описывают условия документа.
  • 📌 Ресурсы: В регистре ТоварыНаСкладах (куда документ делает движения) — Количество и Сумма.

Пример 3: Регистр сведений ЦеныНоменклатуры (УТ 11)

  • 📌 Ресурс: Цена — по ней строятся отчёты и прайс-листы.
  • 📌 Реквизиты: ВалютаЦены, ТипЦены — уточняют условия применения цены.

В типовых конфигурациях ресурсы всегда используются для данных, которые:

  1. Нужно суммировать (например, Количество товаров).
  2. Нужно анализировать в динамике (например, Остаток на складе).
  3. Изменяются при проведении документов (например, СуммаДолга контрагента).
⚠️ Внимание: В конфигурациях 1С:ERP и 1С:КА 2.4 некоторые регистры используют сложные ресурсы с несколькими измерениями (например, СуммаВВалюте и СуммаВРублях). При модификации таких регистров обязательно тестируйте пересчёт итогов в ТестЦентре.

FAQ: Частые вопросы о реквизитах и ресурсах в 1С

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

Технически да, но это требует ручной миграции данных. Например, если в регистре ТоварыНаСкладах поле Количество было реквизитом, а стало ресурсом, нужно:

  1. Создать новый ресурс КоличествоНовое.
  2. Написать обработку, которая перенесёт данные из реквизита в ресурс.
  3. Удалить старый реквизит и переименовать новый ресурс.

Важно: перед таким изменением сделайте резервную копию базы!

Почему в отчёте не показываются данные по ресурсу?

Чаще всего это происходит из-за:

  • 🔹 Неправильного периода в виртуальной таблице (например, запрашиваете остатки на дату, когда движений ещё не было).
  • 🔹 Отсутствия движений по регистру (документы не проведены или проводки не сформированы).
  • 🔹 Ошибок в настройках отчёта (неверно указаны измерения или ресурсы).

Проверьте запрос в Консоли запросов с явным указанием периода:

ВЫБРАТЬ

РегистрНакопления.ТоварыНаСкладах.Остатки(&НачалоДня, &КонецДня, ).Количество

Как добавить новый ресурс в существующий регистр?

Алгоритм:

  1. Откройте регистр в конфигураторе (Объекты → Регистры накопления → [Ваш регистр]).
  2. В разделе Ресурсы добавьте новый ресурс (например, Объём).
  3. Обновите конфигурацию базы данных.
  4. Настройте документы, которые должны записывать данные в новый ресурс (добавьте движения).

Важно: после добавления ресурса пересчитайте итоги регистра через Администрирование → Поддержка и обслуживание → Тестирование и исправление → Пересчёт итогов.

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

Да, это стандартная практика. Например, в регистре ТоварыНаСкладах:

  • 📌 Ресурсы: Количество, Сумма — для расчётов.
  • 📌 Реквизиты: ЦенаПоступления, Серия — для справочной информации.

Главное правило: реквизиты не должны дублировать ресурсы (например, не нужно делать реквизит КоличествоЗапасное, если уже есть ресурс Количество).

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

Ресурсы увеличивают нагрузку на систему при:

  • 🔹 Пересчёте итогов: чем больше ресурсов, тем дольше платформа обновляет виртуальные таблицы.
  • 🔹 Запросах с группировкой: если в запросе используются несколько ресурсов, СУБД тратит больше времени на агрегацию.
  • 🔹 Фоновых заданиях: регламентные операции (например, закрытие месяца) работают медленнее.

Рекомендации:

  • 🔸 Используйте не более 5-7 ресурсов в одном регистре.
  • 🔸 Для редко используемых данных создавайте отдельные регистры.
  • 🔸 Настраивайте периодичность пересчёта итогов (например, только по завершении дня).