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