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