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