Как устроены регистры 1С:Предприятия 8.3 и зачем каждый из четырёх видов

· 10 мин

Содержание

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

Пользователю регистры нужны, чтобы понять, откуда отчёт взял цифру. Разработчику — чтобы правильно спроектировать учёт и быстро получать данные запросом. Оба взгляда разобраны на примерах из типовых конфигураций БП 3.0 и ЗУП 3.1.

Регистр в 1С как «журнал фактов» учёта

Удобнее всего представить регистр как журнал, в который пишут только факты, без пояснений. «12 марта на склад Основной пришло 50 штук товара А. Основание — поступление № 15». Такая строка называется движением или записью регистра.

У любого регистра есть три типа полей:

  • 📐 Измерения — разрезы, по которым ведут учёт: склад, номенклатура, контрагент, договор.
  • 🔢 Ресурсы — то, что считают: количество, сумма, курс, цена. У регистров накопления и бухгалтерии ресурсы только числовые.
  • 📝 Реквизиты — дополнительная информация к записи, по которой итоги не считаются. Например, комментарий или ответственный.

Почему не хватает одних документов? Чтобы узнать остаток товара на дату, пришлось бы перебрать все приходы и расходы за всю историю базы. Регистр накопления хранит ещё и готовые итоги по периодам. Поэтому остаток на любую дату платформа получает быстро, даже в базе с миллионами строк.

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

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

Вид регистраЧто хранитКак пишетсяПример в типовых
Регистр сведенийЗначения в разрезе измерений, часто во времениДокументом или вручнуюКурсы валют, цены номенклатуры
Регистр накопленияПриход и расход, остатки или оборотыТолько документом-регистраторомТовары на складах, продажи
Регистр бухгалтерииПроводки Дт/Кт по плану счетовТолько документом-регистраторомРегистр «Хозрасчетный» в БП 3.0
Регистр расчётаНачисления и удержания с периодами действияТолько документом-регистраторомНачисления зарплаты в ЗУП 3.1

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

Как посмотреть регистры в пользовательском режиме

  1. Включите команду «Все функции»: Главное меню → Сервис → Параметры, флажок «Отображать команду Все функции».
  2. Откройте Главное меню → Все функции.
  3. Разверните ветку нужного вида: «Регистры сведений», «Регистры накопления» и т. д.
  4. Двойной щелчок по регистру открывает список его записей. Его можно отобрать и вывести в Excel.

Движения конкретного документа удобнее смотреть из самого документа. В БП 3.0 для этого служит кнопка ДтКт в форме документа: она открывает проводки и движения по всем регистрам.

Регистры накопления: остатки, обороты и движения

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

При создании разработчик выбирает вид регистра:

  • 📦 Остатки — для того, что можно «пересчитать на полке»: товары на складе, задолженность, деньги в кассе. Каждое движение имеет вид Приход или Расход.
  • 📈 Обороты — для того, что только накапливается и не имеет остатка: продажи, закупки, выпуск. Вида движения нет.

Пример регистра «Товары на складах» вида Остатки:

ПериодРегистраторВид движенияСкладНоменклатураКоличество
01.03Поступление № 15ПриходОсновнойТовар А50
05.03Реализация № 40РасходОсновнойТовар А12
09.03Перемещение № 3РасходОсновнойТовар А8

Остаток товара А на складе Основной после 9 марта: 50 − 12 − 8 = 30 штук. Именно эту цифру покажет ведомость по товарам.

Как документ пишет движения

В модуле объекта документа в процедуре ОбработкаПроведения формируют набор записей. Упрощённый пример для поступления:

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

	Движения.ТоварыНаСкладах.Записывать = Истина;

	Для Каждого СтрокаТовары Из Товары Цикл
		Движение = Движения.ТоварыНаСкладах.Добавить();
		Движение.ВидДвижения  = ВидДвиженияНакопления.Приход;
		Движение.Период       = Дата;
		Движение.Склад        = Склад;
		Движение.Номенклатура = СтрокаТовары.Номенклатура;
		Движение.Количество   = СтрокаТовары.Количество;
	КонецЦикла;

КонецПроцедуры

Поле Регистратор заполнять не нужно: платформа подставит ссылку на документ сама. Флаг Записывать = Истина говорит платформе записать набор после выхода из процедуры.

Как получить остаток запросом

Для регистра вида Остатки платформа даёт виртуальные таблицы Остатки, Обороты и ОстаткиИОбороты. Для оборотного регистра — только Обороты.

ВЫБРАТЬ
	ТоварыОстатки.Номенклатура,
	ТоварыОстатки.КоличествоОстаток
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки(&НаДату, Склад = &Склад) КАК ТоварыОстатки

Условие Склад = &Склад стоит в параметрах виртуальной таблицы, а не в ГДЕ. Так платформа отбирает данные до расчёта остатков, а не после. На больших базах разница во времени бывает в десятки раз.

Регистры сведений: справочная информация во времени

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

Ключевая настройка — периодичность:

  • Непериодический — одна запись на комбинацию измерений, без истории. Подходит для настроек и соответствий.
  • В пределах секунды / дня / месяца / квартала / года — у каждой записи есть период. Можно узнать значение на любую дату.
  • В пределах позиции регистратора — для регистров, подчинённых документу, когда на одну секунду приходится несколько записей.

Вторая настройка — режим записи:

РежимКто пишетКогда выбирать
НезависимыйПользователь вручную, обработка, кодКурсы, настройки, адреса, соответствия
Подчинение регистраторуТолько документ при проведенииЦены, установленные документом, кадровые события

В режиме «Подчинение регистратору» записи живут вместе с документом. Отменили проведение — записи удалились.

Срез последних

Самый частый вопрос к периодическому регистру: какое значение действовало на дату. Для этого есть виртуальная таблица СрезПоследних:

ВЫБРАТЬ
	Курсы.Валюта,
	Курсы.Курс,
	Курсы.Кратность
ИЗ
	РегистрСведений.КурсыВалют.СрезПоследних(&Дата, Валюта = &Валюта) КАК Курсы

Если курс загружали 1, 5 и 10 числа, запрос на 7 число вернёт значение от 5 числа. Есть и обратная таблица СрезПервых — первое значение после даты, она нужна реже.

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

Регистры бухгалтерии и план счетов

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

Особенности, которых нет у других регистров:

  • 🔀 Корреспонденция. При включённом свойстве запись имеет две стороны — СчетДт и СчетКт, как привычная проводка. Без корреспонденции запись одна, с признаком дебета или кредита.
  • 🗂 Субконто. Аналитика задаётся не измерениями регистра, а видами субконто в плане счетов. У счёта 60 это контрагент, договор и документ расчётов, у счёта 41 — номенклатура и склад. Максимальное число субконто на счёт задаётся в плане счетов. В БП 3.0 оно равно трём.
  • ⚖️ Балансовые ресурсы. Ресурс «Сумма» балансовый: дебет и кредит проводки равны. Количество и валютная сумма — забалансовые, они указываются для каждой стороны отдельно.

В 1С:Бухгалтерии 3.0 все проводки живут в одном регистре «Хозрасчетный». ОСВ, карточка счёта, анализ субконто — это отчёты по нему. Налоговый учёт по налогу на прибыль ведётся в том же регистре, через отдельные ресурсы сумм НУ, ПР и ВР.

Виртуальные таблицы регистра бухгалтерии: Остатки, Обороты, ОстаткиИОбороты, ОборотыДтКт, ДвиженияССубконто. Последняя возвращает проводки в привычном виде, со всеми субконто в одной строке.

ВЫБРАТЬ
	Остатки.Субконто1 КАК Контрагент,
	Остатки.СуммаОстатокКт КАК Долг
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Остатки(
		&НаДату,
		Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщиками), ,
	) КАК Остатки

Этот запрос показывает кредитовое сальдо по счёту 60.01 в разрезе контрагентов на дату.

Регистры расчёта и учёт взаиморасчётов

Здесь легко запутаться из-за названия. Регистр расчёта не предназначен для взаиморасчётов с покупателями и поставщиками. Долги контрагентов в оперативном учёте хранят регистры накопления вида Остатки, а в бухгалтерском — счета 60, 62, 76 в регистре бухгалтерии.

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

  • 📅 Период действия. У записи есть даты начала и окончания. Оклад начислен за 1–31 марта, больничный — за 10–14 марта.
  • ⏩ Вытеснение. Больничный вытесняет оклад за свои дни. Платформа считает фактический период действия оклада сама: 1–9 и 15–31 марта.
  • 🧮 База. Отпускные считаются от начислений за прошлые месяцы. Виртуальная таблица БазаНачисления собирает эту базу.
  • 🔁 Перерасчёты. Если задним числом провели больничный, платформа отмечает зависимые записи для перерасчёта.

Регистр расчёта всегда связан с планом видов расчёта (виды начислений и удержаний) и обычно — с регистром сведений графиков работы. Самостоятельно его почти не создают. В типовых конфигурациях он встречается в ЗУП 3.1 и в ERP с блоком зарплаты.

В 1С:Бухгалтерии 3.0 зарплату тоже можно считать, но там нет такой механики вытеснения и перерасчётов, как в ЗУП. Поэтому сложные кадровые случаи, например отзыв из отпуска с перерасчётом, ведут в ЗУП.

Какой регистр выбрать: подсказка разработчику

Когда добавляете свой учёт в расширение или собственную конфигурацию, ответьте себе на три вопроса.

Что нужно хранить?

Чем меньше измерений, тем быстрее регистр. Каждое лишнее измерение множит число строк в таблице итогов. Если поле нужно только для информации, делайте его реквизитом, а не измерением.

Ошибки при работе с регистрами 1С

Отчёт не видит документ. Документ записан, но не проведён, или проведён в другом периоде. Проверьте движения кнопкой ДтКт или через «Все функции».

После изменения структуры регистра данные «поехали». Добавили измерение — старые движения его не заполнили. Документы, которые формируют движения, нужно перепровести. В БП для этого есть обработка «Групповое перепроведение документов» в разделе Операции.

Остатки на дату считаются медленно или неверно. Итоги регистров накопления и бухгалтерии хранятся до определённой даты. Если они повреждены или не пересчитаны, помогает Все функции → Стандартные → Управление итогами. Пересчёт итогов на большой базе идёт долго и нагружает сервер. Делайте его вне рабочего времени, когда пользователи не проводят документы.

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

Отбор в ГДЕ вместо параметров виртуальной таблицы. Запрос работает, но медленно, а для таблиц остатков иногда даёт другие строки. Отбор по измерениям ставьте в параметр «Условие».

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

Не удаляйте записи регистров накопления и бухгалтерии напрямую, обработкой или через конфигуратор. Записи принадлежат документу, и при следующем перепроведении он запишет их снова. Если движения неверные — исправляйте документ.

Частые вопросы

Можно ли записать в регистр накопления без документа?
Нет. У регистров накопления, бухгалтерии и расчёта всегда есть регистратор. Для ручной корректировки создают документ, например «Операция» или «Корректировка регистров».
Чем ресурс отличается от реквизита?
По ресурсам платформа считает итоги и остатки. Реквизит просто хранится в записи, итогов по нему нет, и отобрать по нему остатки виртуальной таблицей нельзя.
Где посмотреть, в какие регистры пишет документ?
В конфигураторе: свойства документа, закладка «Движения» — там отмечены все регистры. В пользовательском режиме — кнопка ДтКт в форме проведённого документа.
Сколько регистров в типовой конфигурации?
Десятки и сотни. Точное число зависит от конфигурации и релиза, его видно в ветке «Регистры» дерева конфигурации.
Можно ли добавить свой регистр, не снимая типовую с поддержки?
Да, в расширении конфигурации можно создать собственный регистр и заполнять его из обработчика проведения, перехваченного в расширении.