Что такое регистр сведений в 1С и зачем он нужен
Содержание
Регистр сведений — это прикладной объект конфигурации 1С, таблица для хранения справочных и настроечных данных в разрезе нескольких координат. Проще говоря, это ячейки, где каждое значение однозначно привязано к набору условий: какая номенклатура, какая валюта, на какую дату.
Он не хранит движения денег или остатков — для этого есть регистр накопления. Задача регистра сведений другая: держать «карточку значений», которую удобно быстро получить по ключу. Цены, курсы, ставки НДС, ответственные лица, настройки пользователей — почти всё это лежит именно здесь.
Регистр сведений в 1С простыми словами
Представьте таблицу курсов валют. У неё три «шапки»: валюта, дата, курс. По валюте и дате вы находите одно число — курс. Нельзя, чтобы на одну дату у доллара было два разных курса.
Вот это и есть регистр сведений:
- 📌 координаты (валюта, дата) — по ним ищем;
- 📊 значения (курс, кратность) — то, что храним;
- 🔒 уникальность — на один набор координат одна запись.
Отличие от обычного справочника — в многомерности и в контроле уникальности по ключу. Справочник хранит список объектов, регистр сведений — значения на пересечении координат.
Из чего состоит регистр сведений
Структура регистра сведений собирается из трёх типов полей, которые вы задаёте сами, плюс служебные поля платформы.
Измерения
Измерения (Dimensions) — это координаты, по которым ищут запись. Именно комбинация измерений (плюс период и регистратор, если они есть) образует уникальный ключ.
Пример для регистра «Цены номенклатуры»:
- измерение
Номенклатура; - измерение
ТипЦен.
Пара «номенклатура + тип цен» задаёт строку однозначно.
Ресурсы
Ресурсы (Resources) — это то, ради чего регистр создан, сами хранимые значения. Для цен ресурс — Цена, для курсов — Курс и Кратность.
Одно измерение может иметь несколько ресурсов. Уникальность на ресурсы не распространяется — два разных набора координат могут хранить одинаковую цену.
Реквизиты
Реквизиты (Attributes) — дополнительная информация к записи, которая не участвует в поиске и не влияет на уникальность. Например, Комментарий или Автор изменения. Нужны редко.
Если сомневаетесь, куда положить поле: ищут по нему — измерение; это результат — ресурс; просто пометка — реквизит.
Периодичность регистра сведений
Периодичность отвечает на вопрос «нужно ли хранить историю значений во времени». Настраивается свойством Периодичность в конфигураторе.
| Вариант | Когда применять |
|---|---|
| Непериодический | Значение одно и не меняется во времени (настройки пользователя) |
| В пределах дня | Курсы валют, цены на дату |
| В пределах месяца | Плановые показатели по месяцам |
| В пределах года | Годовые лимиты, ставки на год |
| По позиции регистратора | Когда запись жёстко привязана к документу |
Если регистр периодический, платформа добавляет служебное поле Период. Оно входит в уникальный ключ: на одну дату — одна запись по данным координатам.
Смена периодичности у заполненного регистра может «схлопнуть» записи и потерять историю — сначала тест на копии базы.
Независимый и подчинённый регистратору регистр сведений
Ключевая развилка при проектировании — режим записи. От него зависит, кто управляет данными регистра.
Регистратор (ссылка на документ) и Номер строки. Проводим документ — строки пишутся, отменяем — удаляются автоматически.Кратко разница:
- 🟢 Независимый — записи вводятся руками или обработкой, регистратора нет. Удобно править прямо в списке.
- 🔵 Подчинённый регистратору — записи пишет документ при проведении. Вручную такой регистр обычно не редактируют.
У подчинённого регистра в уникальный ключ добавляется регистратор, а поля Период в явном виде нет — период берётся от документа-регистратора.
Контроль уникальности записей
Это свойство, которое отличает регистр сведений от простой таблицы. Уникальный ключ складывается так:
- измерения +
- период (если регистр периодический) +
- регистратор (если подчинён регистратору).
Две записи с одинаковым ключом невозможны. Попытка записать дубль либо перезапишет старую запись, либо вызовет ошибку — в зависимости от способа записи.
Частая путаница: ресурсы и реквизиты в ключ НЕ входят. Если вам нужно, чтобы одно и то же измерение хранило два значения на одну дату, — значит, не хватает ещё одного измерения.
Формы регистра сведений
Пользователь видит регистр сведений через формы. Платформа умеет генерировать их автоматически, но их можно и нарисовать вручную.
Форма списка
Показывает все записи таблицей: колонки измерений, ресурсов, период. Отсюда данные фильтруют, сортируют, а для независимого регистра — добавляют и правят.
Форма записи
Открывает одну строку для редактирования. Удобна, когда полей много и таблица становится широкой.
Есть ещё форма набора записей — она работает с группой строк, отобранных по отбору (например, все цены одного документа). Нужна в основном разработчику.
Регистр сведений и регистр накопления: в чём разница
Новички часто путают эти два объекта. Разница — в назначении.
| Признак | Регистр сведений | Регистр накопления |
|---|---|---|
| Что хранит | Значения на координатах | Приход/расход, обороты |
| Пример | Курс валюты, цена | Остатки товара, взаиморасчёты |
| Итоги | Не считает суммы | Считает остатки и обороты |
| Уникальность | Есть, по ключу | Нет, движения складываются |
Правило простое: нужно «сколько всего накопилось» — регистр накопления; нужно «какое значение действует» — регистр сведений.
Примеры регистров сведений
Чтобы структура улеглась, разберём типовые конфигурации регистра по числу измерений.
Со множеством измерений. «Цены номенклатуры»: измерения Номенклатура и ТипЦен, ресурс Цена, периодичность в пределах дня. Классика.
С одним измерением. «Курсы валют»: измерение Валюта, ресурсы Курс и Кратность.
Без измерений вообще. «Настройки учёта» на всю базу: измерений нет, есть только ресурсы. Такой регистр хранит ровно одну строку — глобальные параметры.
С измерением типа дата. Изредка дату делают именно измерением (не через периодичность) — например, производственный календарь
, где Дата — координата, а ВидДня — ресурс.
Как посмотреть данные регистра сведений
Обычному пользователю регистры чаще всего доступны так:
- Раздел
Все функции(включается вПараметры→Отображать команду «Все функции»). - Ветка
Регистры сведений. - Выбрать нужный регистр — откроется форма списка.
Разработчик видит их в конфигураторе в ветке Регистры сведений, а данные читает запросом через таблицы РегистрСведений.<Имя> и виртуальную .СрезПоследних().
Функциональные возможности регистра сведений
Несколько свойств, которые расширяют базовое поведение:
- 🔗 Ведущее измерение — при удалении объекта, на который ссылается ведущее измерение, запись регистра удаляется автоматически.
- ⚡ Индексирование измерения — ускоряет отбор по этому полю в больших регистрах.
- 🎯 Быстрый выбор — предлагает значения списком без открытия отдельной формы.
- 📷 Срез последних / срез первых — виртуальные таблицы, отдающие актуальное значение на дату. Главный инструмент чтения периодического регистра.
Именно СрезПоследних() отвечает на вопрос «какая цена действует на эту дату» — берёт последнюю запись не позже указанного момента.
Типичные ошибки и как их избежать
- ❌ Путают ресурс и измерение. Положили цену в измерения — получили лишнюю координату и «размноженные» записи. Ищут по полю → измерение, хранят → ресурс.
- ❌ Забыли про уникальность. Ждут две записи на одну дату по одним координатам, а платформа перетирает первую. Не хватает ещё одного измерения.
- ❌ Периодический вместо накопительного. Пытаются считать в регистре сведений остатки. Для оборотов и остатков — регистр накопления.
- ❌ Меняют периодичность на боевой базе. Данные схлопываются. Сначала копия и тест.
- ❌ Правят подчинённый регистратору регистр руками. Следующее проведение документа всё перезапишет. Меняйте документ, а не регистр.
Видео по теме
Видео по теме
Частые вопросы
Чем регистр сведений отличается от справочника?
Что такое измерения и ресурсы простыми словами?
Зачем нужна периодичность?
Период, и по одним координатам можно держать разные значения на разные даты — например, курс валюты по дням.В чём разница между независимым и подчинённым регистром сведений?
Регистратор.Можно ли хранить две записи на одну дату по одним координатам?
Как получить актуальное значение на дату?
СрезПоследних(). Она возвращает последнюю запись не позже указанного момента — например, цену или курс, действующие на нужную дату.