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