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