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

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

Периодические регистры сведений в 1С: устройство, настройка и применение

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

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

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

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

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

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

Режимы периодичности и подчинение регистратору

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

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

Сравнение режимов записи

Независимый регистр

Подходит для справочных данных, которые вводят вручную: курсы валют, ставки, нормы. Плюс — простое редактирование, минус — нет связи с документами-основаниями.

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

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

Как устроены измерения, ресурсы и реквизиты

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

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

Как получить актуальное значение: срез последних в запросе

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

ВЫБРАТЬ

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

Курсы.Курс

ИЗ

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

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

1c
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&П, Валюта = &В)"); Запрос.УстановитьПараметр("П", КонецДня(ДатаДокумента)); Запрос.УстановитьПараметр("В", ВалютаUSD);

Пошаговая настройка периодического регистра в конфигураторе

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

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

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

Типичные ошибки и ограничения

Типичные ошибки
01
Две записи с одинаковым периодом и измерениями — платформа не даст сохранить дубликат, а при загрузке из внешних источников это вызывает ошибки обмена.
02
Срез последних в цикле вместо одного запроса — обращение к виртуальной таблице на каждую строку документа резко замедляет обработку.
03
Изменение периодичности или состава измерений в заполненном регистре — реструктуризация может занять много времени и потребовать монопольного доступа.
04
Хранение быстро меняющихся остатков в регистре сведений — для остатков предназначены регистры накопления, регистр сведений не умеет итоги.
05
Отсутствие индексации по измерениям, используемым в отборах среза, — запросы начинают сканировать всю таблицу.

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

Как проверить корректность данных

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

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

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

Возвращает по одной записи на каждую комбинацию измерений с ожидаемым значением

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

Несколько строк на одну комбинацию или пустой результат при наличии записей

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

Проведение создаёт записи, отмена проведения полностью их удаляет

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

После отмены проведения в регистре остаются «осиротевшие» строки

Скорость запроса со срезом
Норма

Запрос с отбором по измерениям выполняется быстро на рабочем объёме данных

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

Запрос заметно тормозит даже с отбором — проверьте индексы и параметры виртуальной таблицы

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

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

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

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

Как выбрать объект

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

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

Итог

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

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

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

Чем срез последних отличается от среза первых?

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

Можно ли записать два значения на один день?

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

Как быстро посмотреть содержимое регистра без отчётов?

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

Почему запрос со срезом последних работает медленно?

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

Что произойдёт с записями при отмене проведения документа-регистратора?

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

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

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