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