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