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