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