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

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

Как сделать регистр в 1С: пошаговое руководство

Как создать регистр сведений и регистр накопления в 1С: выбор типа, настройка измерений, ресурсов и реквизитов, типичные ошибки и проверка результата.

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

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

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

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

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

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

Сравнение видов регистров

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

Хранит значения (цены, курсы, настройки) в разрезе измерений. Подходит для справочной и исторической информации. Не суммирует данные.

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

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

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

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

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

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

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

Создание регистра сведений в конфигураторе

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

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

Далее перейдите на закладку «Данные» и добавьте измерения — разрезы хранения. Для регистра цен это будет измерение «Номенклатура» с типом «СправочникСсылка.Номенклатура». Затем добавьте ресурс «Цена» с типом «Число» и разумной длиной и точностью, например 15 цифр всего и 2 знака после запятой. Реквизиты добавляйте только для дополнительной описательной информации, которая не участвует в отборах.

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

Создание регистра накопления

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

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

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

Настройка измерений, ресурсов и реквизитов

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

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

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

Типичные ошибки при проектировании
01
Измерение создано с составным типом «все ссылки» — это замедляет запросы и мешает контролю целостности, задавайте конкретный тип
02
Ресурс «Количество» с точностью 0 — дробные остатки (0,5 упаковки) будут округляться и вызывать расхождения
03
Лишние измерения «на всякий случай» — раздувают таблицы итогов и замедляют проведение документов
04
Непериодический регистр для данных с историей — узнать цену на прошлую дату станет невозможно
05
Реквизит вместо измерения — отборы и группировки по этому полю в отчётах будут недоступны или неэффективны

Подчинение регистратору и движения документов

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

Само по себе указание регистратора не создаёт движения — нужна процедура проведения. В модуле объекта документа в обработчике «ОбработкаПроведения» формируются записи. Платформа может помочь: в конструкторе движений (кнопка «Конструктор движений» в модуле документа) выберите регистр и табличную часть, и система сгенерирует типовой код проведения.

Пример простейшего кода проведения для регистра накопления «ОстаткиТоваров»:

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

Движения.ОстаткиТоваров.Записывать = Истина;

Для Каждого СтрокаТовары Из Товары Цикл

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

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

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

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

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

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

КонецЦикла;

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

Всегда устанавливайте Движения.ИмяРегистра.Записывать = Истина перед формированием движений. Без этого флага набор записей не запишется, и документ будет проводиться «молча» — без ошибок, но и без движений. Это одна из самых коварных причин «пропавших» остатков.
ПЗ
Практическое замечание

Проверка результата и работа с регистром в режиме предприятия

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

В режиме предприятия проверьте регистр через пункт «Все функции» (включается в параметрах интерфейса): найдите свой регистр в списке и откройте его. Для регистра накопления проведите тестовый документ и убедитесь, что появились записи с правильным видом движения, измерениями и количеством. Для периодического регистра сведений проверьте, что по кнопке «Перейти» → «История» видны значения на разные даты.

Финальная проверка — отчёт. Создайте простой отчёт на СКД или откройте универсальный отчёт по регистру и сверьте остатки с ожидаемыми. Если остаток не сходится, ищите документы, проведённые до настройки движений: их нужно перепровести, чтобы движения сформировались.

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

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

Записи в регистре после проведения документа
Норма

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

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

Записей нет или измерения пустые — проверяйте флаг Записывать и код проведения

Остатки в отчёте
Норма

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

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

Расхождение — есть документы без движений, требуется перепроведение

Уникальность записей регистра сведений
Норма

Платформа не даёт ввести дубль по комбинации измерений и периода

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

Дубли создаются — проверьте состав измерений и периодичность

Ограничения и когда регистр не нужен

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

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

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

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

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

Можно ли изменить вид регистра накопления с «Остатки» на «Обороты»?

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

Почему документ проводится, но движений по регистру нет?

Чаще всего не установлен флаг Движения.ИмяРегистра.Записывать = Истина в обработчике проведения, документ не отмечен в списке регистраторов регистра, или код формирования движений не выполняется из-за условия. Проверьте эти три места в указанном порядке.

Нужна ли периодичность регистру сведений, подчинённому регистратору?

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

Сколько измерений можно добавить в регистр?

Жёсткого практического лимита, который упрётся разработчик в типовой задаче, обычно нет, но каждое измерение увеличивает объём таблиц итогов и замедляет запросы. Практическое правило: оставляйте только те разрезы, по которым реально строятся отчёты и отборы, обычно это 2–5 измерений.

Итог

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

Вид регистра выбирайте по природе данных: сведения — для значений в разрезе измерений, накопления — для остатков и оборотов. Измерения определяют ключ и итоги, ресурсы — хранимые числа, реквизиты — только описательную информацию. Движения формируются кодом проведения документа с обязательным флагом Записывать. Любые изменения структуры регистра в рабочей базе делайте только после резервной копии и проверки на копии.