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

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

Как создать периодический регистр сведений в 1С

Пошаговая инструкция по созданию периодического регистра сведений в 1С: настройка периодичности, измерений, режима подчинения, заполнение и получение срезов.

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

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

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

Когда нужен именно периодический регистр сведений

Регистр сведений стоит делать периодическим, если значение зависит от даты и важна история его изменений. Классические примеры: курсы валют (меняются каждый день), цены номенклатуры по видам цен, ФИО физического лица (может меняться при смене фамилии), адреса и телефоны контрагентов, процентные ставки, настройки учётной политики организации.

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

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

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

Значение меняется во времени и нужна история (курсы, цены, оклады)Периодический регистр сведений
Значение статично и не имеет истории (штрихкоды, соответствия)Непериодический регистр сведений
Значение вводится документом и должно проводиться вместе с нимПериодический регистр, подчинённый регистратору
Нужны обороты и остатки по количеству или суммеРегистр накопления, а не регистр сведений

Создание регистра в конфигураторе: базовые шаги

Откройте конфигуратор, в дереве конфигурации найдите ветку «Регистры сведений» и добавьте новый объект через контекстное меню. Задайте имя без пробелов (например, КурсыВалют или ЦеныНоменклатуры) и синоним, который увидят пользователи.

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

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

Настройка периодичности

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

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

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

Режим подчинения: независимый или подчинён регистратору

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

Правило выбора простое. Если значение появляется в результате хозяйственной операции, оформленной документом (установка цен документом «Установка цен номенклатуры», назначение оклада кадровым приказом), — используйте подчинение регистратору. Если данные загружаются извне или вводятся напрямую (курсы валют с сайта ЦБ, настройки обмена) — независимый режим.

Независимый vs подчинённый регистратору

Независимый

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

Подчинён регистратору

Записи создаются движениями документа и удаляются при отмене проведения. Обеспечивает целостность, но требует документа-регистратора и обработчика проведения.

Измерения, ресурсы и реквизиты

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

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

Заполнение регистра: вручную, обработкой и программно

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

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

МенеджерЗаписи = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();

МенеджерЗаписи.Период = ТекущаяДатаСеанса();

МенеджерЗаписи.Валюта = ВалютаСсылка;

МенеджерЗаписи.Курс = 92.5;

МенеджерЗаписи.Записать();

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

Типичные ошибки
01
Запись без указания периода — запись уходит на пустую дату и не попадает в срезы на реальные даты
02
Попытка записать дубликат с теми же периодом и измерениями — платформа выдаёт ошибку уникальности; используйте режим замещения или корректируйте существующую запись
03
Хранение значения в реквизите вместо ресурса — поле недоступно в срезе последних
04
Выбор независимого режима для данных документа — при отмене проведения записи остаются и искажают отчёты
05
Слишком много измерений — рост объёма таблицы и замедление запросов

Получение данных: срез последних и срез первых

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

ВЫБРАТЬ

Курсы.Валюта,

Курсы.Курс

ИЗ

РегистрСведений.КурсыВалют.СрезПоследних(&ДатаСреза, ) КАК Курсы

Параметр &ДатаСреза задаёт момент, на который берутся значения; второй параметр — условие отбора по измерениям (например, Валюта = &Валюта). Всегда передавайте дату среза явно: срез без даты строится на максимальную дату и в моментных отчётах может дать неожиданный результат. В построителях отчётов на СКД срезы подключаются как виртуальные таблицы с теми же параметрами.

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

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

Периодичность
Норма

В свойствах регистра выбрана нужная периодичность, записи создаются без ошибок уникальности

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

Невозможно ввести две записи за один день при необходимости — периодичность занижена

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

Запрос к СрезПоследних возвращает актуальные значения на заданную дату

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

Срез пустой или возвращает устаревшие значения — проверьте период записей

Движения документа
Норма

При отмене проведения регистратора записи удаляются

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

Записи остаются после отмены — регистр не подчинён регистратору или движение не очищено

Права, интерфейс и ограничения

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

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

Если значение нужно «на каждый день» в отчёте, а записи есть только на даты изменений, используйте соединение срезов через периоды или постройте запрос с последующим заполнением пропусков в СКД — не создавайте фиктивные ежедневные записи, это раздувает таблицу без пользы.
ПЗ
Практическое замечание

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

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

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

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

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

Почему срез последних возвращает пустой результат?

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

Как записать данные в регистр, подчинённый регистратору, программно?

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

Нужна ли периодичность «в пределах секунды» для цен номенклатуры?

Да, если цены могут устанавливаться несколькими документами в один день — иначе вторая запись за день вызовет ошибку уникальности. Если изменения гарантированно не чаще раза в день, достаточно периодичности «в пределах дня».

Как получить историю изменений значения, а не только последнее?

Обратитесь к физической таблице регистра без виртуальной таблицы: РегистрСведений.КурсыВалют с упорядочиванием по периоду. Виртуальные таблицы срезов нужны только для значений на конкретную дату.

Итог

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

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