К статье
Практический материал

Разработка и Конфигурация · 13 мин

Что значит регистр в 1С и как с ним работать

Регистр в 1С — что это такое, чем отличаются регистры сведений, накопления, бухгалтерии и расчёта. Как выбрать вид регистра и избежать типичных ошибок.

Регистр в 1С — это объект конфигурации, предназначенный для накопления и хранения информации в разрезе заданных измерений. Если справочник отвечает на вопрос «что это за объект», а документ фиксирует факт хозяйственной операции, то регистр отвечает на вопрос «сколько, когда и в каком разрезе». Именно регистры образуют основу учёта: остатки товаров, взаиморасчёты, остатки на счетах, начисления сотрудникам — всё это хранится в регистрах.

Ключевая особенность регистра — данные в него почти всегда попадают при проведении документов. Документ «Приходная накладная» сам по себе не увеличивает складской остаток: он записывает движения в регистр накопления, и уже по этим движениям система рассчитывает остатки. Такое разделение позволяет перепроводить документы, отменять операции и строить отчёты за любой период без ручного пересчёта.

Разработчик или администратор, не понимающий устройство регистров, неизбежно сталкивается с проблемами: отчёты показывают неверные остатки, документы проводятся медленно, а при попытке получить данные «на дату» приходится пересчитывать всю историю. Поэтому понимание видов регистров и принципов их работы — базовый навык для любого, кто настраивает или дорабатывает конфигурации 1С.

Что такое регистр простыми словами

Представьте регистр как таблицу учёта, где каждая строка — это запись о каком-то событии или значении. У этой таблицы есть колонки трёх типов: измерения (в разрезе чего храним данные — товар, склад, контрагент), ресурсы (что храним — количество, сумма) и реквизиты (дополнительная информация, по которой не строятся итоги). Правильный выбор измерений и ресурсов определяет, насколько удобно будет получать данные в дальнейшем.

Например, регистр «Остатки товаров» может иметь измерения «Номенклатура» и «Склад» и ресурс «Количество». Тогда система в любой момент ответит на вопрос «сколько единиц конкретного товара лежит на конкретном складе». Если забыть добавить измерение «Склад», остатки будут считаться только в целом по компании, и разделить их по местам хранения уже не получится без переделки структуры и переноса данных.

Четыре вида регистров в 1С

Платформа 1С:Предприятие предоставляет четыре вида регистров, каждый из которых решает свой класс задач. Выбор вида — первое решение при проектировании учёта, и ошибка на этом этапе дорого обходится: поменять вид существующего регистра без потери данных нельзя.

Вид регистраЧто хранитТипичное применение
Регистр сведенийЗначения в разрезе измерений, без итоговКурсы валют, цены номенклатуры, адреса контрагентов
Регистр накопленияОстатки или обороты по ресурсамОстатки товаров, взаиморасчёты, продажи
Регистр бухгалтерииПроводки по плану счетовБухгалтерский и налоговый учёт
Регистр расчётаРасчётные записи с периодом действияНачисление зарплаты, расчёт отпускных

Регистр сведений

Регистр сведений хранит значения «как есть», без суммирования. Классический пример — курсы валют: на каждую дату записано значение курса, и никакие итоги по нему не нужны. Регистры сведений бывают периодическими (запись привязана к дате, можно узнать значение на любой момент) и непериодическими. Отдельный важный случай — независимый регистр сведений, куда данные вводятся вручную или загружаются, без документов-регистраторов.

Регистр накопления

Регистр накопления — рабочая лошадка учётных систем. Он бывает двух видов: «Остатки» и «Обороты». Регистр остатков хранит приходы и расходы и позволяет мгновенно получить остаток на любую дату — именно так устроен складской учёт. Регистр оборотов накапливает только суммарные обороты за период: например, объём продаж по месяцам, где понятие «остатка» бессмысленно.

Регистры бухгалтерии и расчёта

Регистр бухгалтерии жёстко связан с планом счетов и поддерживает дебет/кредит, субконто и валютный или количественный учёт. Регистр расчёта применяется в зарплатных конфигурациях: он умеет учитывать период действия начисления, вытеснение одних видов расчёта другими (больничный вытесняет оклад) и зависимость от базы. Это самые специализированные виды, и самостоятельно их проектируют редко — обычно используют типовые механизмы.

Какой вид регистра выбрать

Регистр сведений

Подходит для значений без итогов: цены, курсы, настройки, статусы. Не подходит для учёта количества и денег в движении.

Регистр накопления (остатки)

Подходит, когда нужен остаток на любую дату: товары, деньги, долги. Требует дисциплины приходных и расходных движений.

Регистр накопления (обороты)

Подходит для аналитики за период: продажи, выручка, объёмы. Остаток по нему получить нельзя.

Регистр бухгалтерии или расчёта

Подходит для проводок по плану счетов или расчёта зарплаты. Вне этих задач избыточен.

Как данные попадают в регистр

Основной механизм — движения документов. В модуле объекта документа, в обработчике «ОбработкаПроведения», программно формируются записи в регистры. При проведении документа платформа сначала очищает его старые движения, затем записывает новые и пересчитывает итоги. Поэтому повторное проведение документа безопасно: данные не задваиваются, а заменяются.

Чтобы документ мог писать в регистр, регистр должен быть указан в списке движений документа в конфигураторе, а сам регистр должен быть подчинён регистратору (для регистров накопления, бухгалтерии и расчёта это обязательно). Независимые регистры сведений — единственное исключение: в них записи создаются напрямую, без документа.

Как добавить движения документа в регистр накопления
  1. 1
    Откройте конфигуратор и в свойствах документа на вкладке «Движения» отметьте нужный регистр.
  2. 2
    Откройте модуль объекта документа и найдите процедуру ОбработкаПроведения.
  3. 3
    Добавьте запись: Движения.ИмяРегистра.Добавить(), заполните ВидДвижения, Период, измерения и ресурсы.
  4. 4
    Убедитесь, что коллекция движений записывается (по умолчанию платформа делает это автоматически после проведения).
  5. 5
    Перепроведите тестовый документ и проверьте записи через отчёт «Универсальный отчёт» или консоль запросов.

Пример простейшего движения в регистр остатков товаров:

Движение = Движения.ОстаткиТоваров.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

Движение.Период = Дата;

Движение.Номенклатура = СтрокаТовары.Номенклатура;

Движение.Склад = Склад;

Движение.Количество = СтрокаТовары.Количество;

Как получить данные из регистра

Для чтения данных регистров используются виртуальные таблицы — это ключевое понятие. У регистра накопления остатков есть виртуальные таблицы «Остатки», «Обороты» и «ОстаткиИОбороты»; у регистра сведений — «СрезПервых» и «СрезПоследних». Обращаться к физической таблице движений для получения остатков — грубая ошибка: придётся суммировать всю историю, и запрос будет работать медленно.

В запросе это выглядит так: ВЫБРАТЬ Номенклатура, КоличествоОстаток ИЗ РегистрНакопления.ОстаткиТоваров.Остатки(&Дата, Склад = &Склад). Параметры виртуальной таблицы (период, условия) передаются в скобках — платформа использует их для оптимального чтения итогов. Фильтры лучше задавать именно в параметрах виртуальной таблицы, а не в секции ГДЕ: это заметно быстрее на больших объёмах.

Итоги и производительность

Чтобы остатки считались быстро, платформа хранит предрассчитанные итоги — обычно помесячно. Когда вы запрашиваете остаток на дату внутри месяца, система берёт итог на начало месяца и досчитывает движения. Именно поэтому массовое проведение документов задним числом «ломает» производительность: каждое изменение сдвигает актуальность итогов, и их приходится пересчитывать.

Для регистров накопления существует режим итогов «Текущие итоги» — его отключение ускоряет проведение документов, но замедляет получение остатков на текущий момент. В типовых конфигурациях также применяется механизм «Разделение итогов» и регламентное задание пересчёта итогов. Администратору стоит периодически проверять состояние итогов через пункт «Управление итогами» в режиме «Все функции».

Типичные ошибки при работе с регистрами

Большинство проблем с регистрами возникает не из-за платформы, а из-за ошибок проектирования и кода. Ниже — то, что чаще всего встречается на практике.

Типичные ошибки
01
Выбор регистра оборотов там, где нужны остатки: получить остаток на дату становится невозможно, приходится создавать новый регистр и переносить данные.
02
Избыточные измерения: каждое лишнее измерение раздувает таблицу итогов и замедляет проведение, а реально используется одно-два.
03
Запись движений без очистки: если вручную управлять записью и забыть Движения.Записать() или очистку, старые записи остаются и остатки завышаются.
04
Чтение остатков из физической таблицы движений вместо виртуальной таблицы «Остатки»: запросы работают в разы медленнее.
05
Хранение в ресурсе данных, которые не суммируются: например, цена как ресурс регистра накопления даёт бессмысленные итоги — цену следует хранить в регистре сведений.

Как проверить корректность движений

После разработки или доработки проведения полезно пройти контрольные точки: остаток на дату документа должен совпадать с суммой движений, отмена проведения должна полностью убирать записи, а перепроведение не должно менять итог, если данные документа не изменились.

Контрольные точки

Как проверить результат

Движения после проведения
Норма

Записи появились, измерения и ресурсы заполнены, вид движения корректен

Тревожный признак

Записей нет, пустые измерения или неверный знак количества

Отмена проведения
Норма

Все движения документа удалены, остатки вернулись к прежним значениям

Тревожный признак

Записи остались, остатки завышены

Повторное проведение
Норма

Итог не изменился, движения не задвоились

Тревожный признак

Остатки растут при каждом перепроведении

Отчёт по виртуальной таблице
Норма

Остаток на дату сходится с ручным расчётом по движениям

Тревожный признак

Расхождения, отрицательные остатки без контроля

Когда регистр не нужен: альтернативы

Не любые данные требуют регистра. Если значение относится к одному объекту и не нуждается в аналитике по периодам или итогам, достаточно реквизита справочника или документа. Например, «основной договор контрагента» — это реквизит справочника, а не регистр. Создание регистра там, где хватило бы реквизита, усложняет конфигурацию и замедляет работу.

Признак того, что регистр действительно нужен: требуется получать значение на произвольную дату, суммировать данные по разрезам, строить отчёты по остаткам или оборотам либо отслеживать историю изменений значения. Если хотя бы одно из этих условий выполняется — регистр оправдан.

Маршрут решения

Как выбрать действие

Нужно хранить значение и его историю по датам (цены, курсы, статусы)Создайте периодический регистр сведений
Нужны остатки на любую дату (товары, деньги, долги)Создайте регистр накопления с видом «Остатки»
Нужна аналитика только за период (продажи по месяцам)Используйте регистр накопления с видом «Обороты»
Значение относится к одному объекту и не меняется во времениОбойдитесь реквизитом справочника или документа
Нужны проводки по счетам или расчёт зарплатыИспользуйте типовые регистры бухгалтерии или расчёта конфигурации

При проектировании также учитывайте, что регистры нельзя переименовывать и менять их состав без последствий для доработок и обменов: внешние отчёты, обработки и правила обмена ссылаются на регистры по именам. Изменение структуры действующего регистра требует анализа всех зависимых объектов.

Перед созданием нового регистра в типовой конфигурации проверьте, нет ли уже подходящего типового регистра. Дублирование учёта в собственном регистре при наличии типового приводит к расхождениям данных и лишней работе при обновлениях.
ПЗ
Практическое замечание

Частые вопросы о регистрах в 1С

Чем регистр отличается от справочника?

Справочник хранит перечень объектов с их постоянными свойствами (товары, контрагенты, сотрудники), а регистр — изменяющиеся во времени данные в разрезе этих объектов: остатки, цены, обороты. Справочник отвечает на вопрос «что это», регистр — «сколько и когда».

Можно ли изменить данные регистра вручную?

Независимый регистр сведений редактируется вручную напрямую. Регистры, подчинённые регистратору, вручную править не следует: записи будут перезаписаны при перепроведении документа. Для ручной корректировки остатков в типовых конфигурациях существуют специальные документы корректировки.

Почему отчёт показывает неверные остатки?

Частые причины: документы не проведены или проведены с ошибками, неактуальны итоги регистра, отчёт читает не ту виртуальную таблицу, либо в движениях пустые измерения. Начните проверку с универсального отчёта по регистру и состояния итогов.

Что такое регистратор?

Регистратор — это документ, который создал запись в регистре. У каждой записи подчинённого регистра есть ссылка на регистратор, благодаря чему движения можно отменить отменой проведения документа и отследить, какая операция сформировала остаток.

Чем периодический регистр сведений отличается от непериодического?

Периодический хранит значение с привязкой к дате и позволяет узнать значение на любой момент через «СрезПоследних». Непериодический хранит только текущее значение без истории — он проще и быстрее, но прошлые значения в нём не сохраняются.

Можно ли удалить регистр из конфигурации?

Технически да, но вместе с регистром удалятся все его данные, а ссылки на него в документах, отчётах и коде вызовут ошибки. Перед удалением найдите все зависимые объекты через поиск ссылок в конфигураторе и сделайте резервную копию базы.

Итог

Что важно запомнить

Регистр — основной инструмент накопления данных в 1С. Выбирайте вид регистра по задаче: сведения — для значений, накопления — для остатков и оборотов, бухгалтерии и расчёта — для проводок и зарплаты. Данные пишутся документами, читаются через виртуальные таблицы, а скорость работы зависит от правильно спроектированных измерений и актуальных итогов.