К статье
Практический материал

Разработка и Конфигурация · 12 мин

Регистр накопления в 1С: что это такое и как он работает

Регистр накопления 1С простыми словами: виды остатков и оборотов, измерения и ресурсы, проведение документов, типичные ошибки и примеры настройки.

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

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

Без регистров накопления учёт в 1С был бы невозможен: документы фиксируют факты хозяйственной жизни, а регистры превращают эти факты в числа, по которым строятся отчёты, проводятся сверки и принимаются управленческие решения. Понимание устройства регистров нужно и бухгалтеру, проверяющему расхождения, и разработчику, проектирующему новый раздел учёта.

Из чего состоит регистр накопления

Структура регистра определяется в конфигураторе и включает четыре группы полей. Измерения — это разрезы учёта, «координаты» показателя: склад, номенклатура, контрагент, организация. Именно по измерениям платформа группирует итоги. Ресурсы — числовые значения, которые накапливаются: количество, сумма, количество в упаковках. Ресурс всегда числовой.

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

Важное следствие: набор измерений нельзя менять «на лету» в рабочей базе без последствий. Добавление нового измерения в заполненный регистр приведёт к тому, что старые записи получат пустое значение этого измерения, и итоги в разрезе нового разреза «развалятся». Проектировать структуру нужно до запуска учёта.

Виды регистров: остатки и обороты

Платформа предлагает два вида регистров накопления, и выбор между ними — первое проектное решение. Регистр остатков хранит движения с видом «Приход» или «Расход» и автоматически поддерживает таблицу итогов, из которой остаток на любую дату получается мгновенно. Классические примеры: «Товары на складах», «Взаиморасчёты с покупателями», «Денежные средства».

Регистр оборотов не хранит вид движения и не считает остаток — он просто суммирует значения ресурсов за период. Подходит для показателей, где понятие «остатка» бессмысленно: объём продаж, выработка сотрудников, количество оказанных услуг. Запрос «продажи за квартал» к оборотному регистру дешевле и быстрее, чем вычисление оборота через разницу остатков.

Остатки или обороты

Регистр остатков

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

Регистр оборотов

Подходит для накопительной статистики: продажи, выработка, пробег. Нельзя получить остаток на дату, зато обороты за период считаются быстрее и структура проще.

Частая проектная ошибка — использовать регистр остатков там, где нужен оборотный, и наоборот. Если по регистру строится контроль «нельзя списать больше, чем есть», — это однозначно остатки. Если нужен только отчёт «сколько продали за месяц» — остатки избыточны и лишь замедляют проведение документов.

Как документ делает движения по регистру

Связь документа и регистра настраивается в конфигураторе: у документа на закладке «Движения» отмечаются регистры, по которым он проводится. Формирование записей происходит в обработчике ОбработкаПроведения модуля объекта. Типовой код выглядит так: для каждой строки табличной части создаётся запись в коллекции движений, заполняются измерения, ресурс и вид движения.

bsl
Процедура ОбработкаПроведения(Отказ, Режим)
  Движения.ОстаткиТоваров.Записывать = Истина;
  Для Каждого СтрокаТовара Из Товары Цикл
    Движение = Движения.ОстаткиТоваров.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    Движение.Период = Дата;
    Движение.Склад = Склад;
    Движение.Номенклатура = СтрокаТовара.Номенклатура;
    Движение.Количество = СтрокаТовара.Количество;
  КонецЦикла;
КонецПроцедуры

Флаг Записывать = Истина обязателен: без него коллекция движений не будет записана в базу, даже если записи добавлены. Это одна из самых частых причин «документ проводится, а движений нет». В типовых конфигурациях вместо прямого цикла часто используются механизмы проведения с запросами к табличной части — принцип тот же, но код устойчивее к изменениям структуры.

При отмене проведения платформа автоматически удаляет все движения документа по всем регистрам. При перепроведении — сначала удаляет старые, затем записывает новые. Поэтому ручная правка записей регистра напрямую (через обработки) — рискованный приём: ближайшее перепроведение документа затрёт ручные изменения.

Как получить остатки и обороты запросом

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

// Пример: остатки по складу на текущий момент

ВЫБРАТЬ

Номенклатура,

КоличествоОстаток

ИЗ

РегистрНакопления.ОстаткиТоваров.Остатки(, Склад = &Склад)

Ключевой нюанс производительности: отборы по измерениям нужно передавать в параметры виртуальной таблицы, а не в секцию ГДЕ основного запроса. Отбор в параметрах выполняется до соединения таблиц и работает в разы быстрее на больших объёмах. Условие в ГДЕ заставит платформу сначала вычислить итоги по всем значениям измерения, а потом отбросить лишние.

Контроль остатков и типовые сценарии

Главное прикладное применение регистра остатков — запрет списания «в минус». В типовых конфигурациях контроль реализуется в обработке проведения расходного документа: до записи движений выполняется запрос остатков с учётом движений самого документа, и при нехватке выставляется Отказ = Истина с сообщением пользователю о дефиците по конкретной номенклатуре.

Как добавить контроль отрицательных остатков
  1. 1
    В обработке проведения расходного документа сначала сформируйте движения в коллекции (Записывать = Истина).
  2. 2
    Постройте запрос к виртуальной таблице Остатки с отбором по списку номенклатуры и складу документа, учитывая движения регистратора.
  3. 3
    Сравните доступный остаток с требуемым количеством по каждой строке.
  4. 4
    При нехватке выведите сообщение с точным дефицитом и установите Отказ = Истина.
  5. 5
    Проверьте сценарий: проведение документа на количество больше остатка должно блокироваться, на доступное — проходить.

Второй типовой сценарий — восстановление последовательности. Если документы перепроводили задним числом, итоги регистра остаются корректными (платформа пересчитывает их автоматически), но логика, завязанная на момент времени, могла работать с устаревшими остатками. Поэтому после массового перепроведения за прошлый период стоит перепроверить документы, зависящие от контроля остатков.

Третий сценарий — отчёты. Любой отчёт по остаткам или оборотам строится на виртуальных таблицах регистра через СКД или запрос. Если отчёт показывает «пусто», первое, что нужно проверить, — есть ли вообще движения по регистру за выбранный период и не отсекает ли отбор данные.

Типичные ошибки и ограничения

Типичные ошибки
01
Забытый флаг Записывать = Истина — документ проводится без ошибок, но движений в регистре нет, отчёты пустые.
02
Отбор в секции ГДЕ вместо параметров виртуальной таблицы — запросы к остаткам работают медленно на больших базах.
03
Добавление измерения в заполненный регистр без обработки старых данных — итоги в новом разрезе показывают пустые значения.
04
Ручная правка записей регистра — ближайшее перепроведение документа затирает исправления, расхождения возвращаются.
05
Использование регистра остатков для чисто оборотных показателей — лишняя нагрузка при проведении и усложнённые запросы.

Отдельно стоит упомянуть итоги. Платформа хранит рассчитанные итоги по месяцам; при запросе остатка на произвольную дату внутри месяца итог досчитывается по записям. Если регистр не используется в отчётах за старые периоды, администратор может ограничить период хранения итогов — но делать это нужно осознанно, потому что запросы к «отсечённым» периодам резко замедлятся.

Как проверить, что регистр работает правильно

Базовая проверка занимает несколько минут и не требует программирования. Откройте любой проведённый документ, который должен делать движения, и через меню «Ещё» (или кнопку перехода к движениям) посмотрите список движений по регистрам. Если регистра в списке нет — он не отмечен в движениях документа либо обработка проведения не записала коллекцию.

Далее сверьте отчёт с движениями: сформируйте стандартный отчёт по регистру за период и сравните сумму с оборотом по документам. Расхождение чаще всего означает, что часть документов не проведена, проведена с отказом по контролю остатков или движения были удалены вручную.

Контрольные точки

Как проверить результат

Движения проведённого документа
Норма

Регистр присутствует в списке движений, записи с корректными измерениями и количеством

Тревожный признак

Регистра нет в списке или записи пустые — проверяйте обработку проведения

Остаток по отчёту
Норма

Остаток совпадает с приходом минус расход по документам за период

Тревожный признак

Расхождение — ищите непроведённые или отменённые документы

Контроль минуса
Норма

Документ на списание сверх остатка не проводится и выдаёт сообщение

Тревожный признак

Отрицательные остатки появляются — контроль отключён или обходится

Итог

Что важно запомнить

Регистр накопления хранит числовые показатели, которые создаются только проведением документов. Вид «Остатки» — для складов и расчётов с контролем минуса, «Обороты» — для статистики. Остатки читают через виртуальные таблицы с отборами в параметрах, а структуру регистра проектируют до запуска учёта.

Частые вопросы

Чем регистр накопления отличается от регистра сведений?

Регистр сведений хранит значения, которые можно вводить вручную или загружать (курсы валют, цены, адреса), и не суммирует их. Регистр накопления заполняется только документами и предназначен для сложения чисел по разрезам. Если нужно «помнить значение на дату» — это сведения, если «считать сколько всего» — накопления.

Можно ли вручную добавить запись в регистр накопления?

Напрямую в таблицу — нет, записи принадлежат регистраторам. Правильный путь — создать специальный документ-корректировку (в типовых это «Корректировка регистров» или «Операция»), который имеет право делать движения по нужному регистру, и провести его. Тогда исправление задокументировано и видно в отчётах.

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

Сами итоги платформа пересчитывает автоматически, поэтому чаще причина в другом: часть документов не была перепроведена (например, из-за контроля остатков, который теперь не проходит), либо в отчёте задан отбор, отсекающий новые движения. Проверьте журнал документов за период на предмет непроведённых.

Сколько измерений можно добавить в регистр?

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

Нужен ли отдельный регистр для каждого склада или организации?

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

Что делать, если в регистре накопились отрицательные остатки?

Сначала выгрузите отчёт с детализацией до регистратора и найдите документы, уводящие остаток в минус. Затем восстановите хронологию: перепроведите документы по регистру в порядке дат. Если минус «исторический» и исправить документы нельзя, введите корректировочный документ на дату возникновения расхождения, зафиксировав причину в комментарии.