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