Разработка и Конфигурация · 13 мин
Периодический и независимый регистр сведений в 1С: в чём разница и как выбрать
Что такое периодический и независимый регистр сведений в 1С: отличия, режимы подчинения, примеры использования, настройка в конфигураторе и типичные ошибки.
Регистр сведений в 1С — это объект метаданных, предназначенный для хранения информации в разрезе заданных измерений без обязательной привязки к документу. Типичные примеры: курсы валют, цены номенклатуры, адреса контрагентов, ставки налогов. В отличие от справочника, регистр сведений позволяет хранить несколько значений для одной и той же комбинации измерений, различая их по периоду или по регистратору.
Два ключевых свойства определяют поведение регистра сведений: периодичность и режим записи (подчинение регистратору). Периодичность отвечает на вопрос «привязано ли значение к моменту времени», а режим записи — на вопрос «кто создаёт запись: пользователь напрямую или документ». Сочетание этих свойств порождает четыре варианта, из которых чаще всего обсуждают два: периодический независимый регистр и простой независимый непериодический регистр.
Путаница возникает из-за того, что термины «периодический» и «независимый» описывают разные оси классификации, а не альтернативы друг другу. Регистр может быть одновременно периодическим и независимым — например, регистр курсов валют в типовых конфигурациях. Ниже разобраны оба свойства по отдельности, даны критерии выбора и показаны типичные ошибки проектирования.
Что такое регистр сведений и как он устроен
Регистр сведений состоит из трёх видов полей. Измерения — это аналитические разрезы, в которых хранятся данные (например, «Валюта» или «Номенклатура»). Ресурсы — сами хранимые значения (курс, цена, ставка). Реквизиты — дополнительные поясняющие атрибуты, которые не участвуют в уникальности записи и не используются для отбора значений при стандартных механизмах получения среза.
Ключевое отличие от справочника: совокупность измерений (плюс период, если регистр периодический) образует уникальный ключ записи. Нельзя создать две записи с одинаковым набором измерений на одну дату — платформа выдаст ошибку нарушения уникальности. Это делает регистр сведений естественным хранилищем для данных вида «для объекта X на дату Y действует значение Z».
Физически записи регистра не имеют ссылочного представления в том смысле, в каком оно есть у справочников и документов. Обращение к данным идёт через наборы записей, менеджеры записи и виртуальные таблицы запросов — срез первых, срез последних и таблицу самого регистра.
Периодический регистр сведений: хранение истории изменений
Периодический регистр сведений добавляет к ключу записи поле «Период» — дату (или дату со временем), к которой относится значение. Благодаря этому одна и та же комбинация измерений может встречаться многократно с разными периодами, и система хранит полную историю изменений значения.
При создании регистра в конфигураторе свойство «Периодичность» принимает значения: непериодический, в пределах секунды, в пределах дня, месяца, квартала или года. Выбор влияет на точность ключа: при периодичности «в пределах дня» две записи с одной датой и одинаковыми измерениями конфликтуют, даже если время разное. Для курсов валют обычно достаточно дня, для технических логов изменений может понадобиться точность до секунды.
Главное преимущество периодичности — виртуальные таблицы «СрезПоследних» и «СрезПервых». Запрос к срезу последних на дату возвращает актуальное значение для каждой комбинации измерений: например, курс каждой валюты, действовавший на указанное число. Это стандартный и быстрый способ получать «текущие» данные без ручного поиска максимальной даты.
Важно понимать семантику: запись периодического регистра означает «значение действует начиная с указанной даты и до следующего изменения», а не «только в этот день». Если курс установлен записью от 10 января и следующая запись от 20 января, то срез последних на 15 января вернёт значение от 10 января.
Независимый регистр сведений: записи без документа
Свойство «Режим записи» у регистра сведений имеет два значения: «Независимый» и «Подчинение регистратору». Независимый регистр заполняется напрямую: пользователем через форму списка или форму записи, либо программно через менеджер записи и наборы записей. Никакой документ для создания записи не требуется.
Регистр, подчинённый регистратору, напротив, формируется движениями документов — по аналогии с регистрами накопления. Каждая запись содержит ссылку на документ-регистратор и удаляется при отмене его проведения. Такой режим выбирают, когда значение должно быть строго привязано к хозяйственной операции: например, установка цен документом «Установка цен номенклатуры» в типовых конфигурациях.
Независимый режим даёт простоту и гибкость: данные можно править вручную, загружать обменами, корректировать без создания документов. Обратная сторона — отсутствие контроля: нет журнала документов, по которому видно, кто и когда установил значение, нет стандартного механизма отмены через распроведение. Для ответственных данных (цен, ставок), где важна история изменений с документальным основанием, подчинение регистратору предпочтительнее.
Независимый регистр или подчинённый регистратору
Подходит для справочных данных и настроек: курсы валют, адреса, параметры учёта. Простая ручная и программная запись, но нет документального контроля изменений.
Подходит для значений, устанавливаемых хозяйственными документами: цены, условия договоров. Изменения оформлены документами, есть отмена через распроведение, но прямая правка затруднена.
Как сочетаются периодичность и независимость
Поскольку это ортогональные свойства, возможны четыре комбинации. Непериодический независимый — простое хранилище «одно значение на комбинацию измерений»: адреса контрагентов, настройки пользователей. Периодический независимый — история значений без документов: курсы валют, загружаемые обработкой. Периодический, подчинённый регистратору, — история, формируемая документами: цены номенклатуры. Непериодический подчинённый встречается реже, но применим, когда документ просто устанавливает текущее значение без истории.
Практический критерий выбора периодичности — ответ на вопрос: «понадобится ли узнать значение на прошедшую дату?» Если да — регистр должен быть периодическим. Переделка непериодического регистра в периодический после накопления данных возможна, но требует конвертации: платформа при изменении свойства может потребовать реструктуризацию, и старые записи получат пустой или единый период, что исказит срезы.
Критерий выбора режима записи — вопрос «должно ли значение иметь документальное основание и отменяться вместе с документом?». Для данных, приходящих извне (курсы ЦБ, справочники из других систем), независимый режим естественен. Для данных, порождаемых внутренними операциями компании, чаще нужен регистратор.
Как выбрать свойства регистра
Как создать и настроить регистр в конфигураторе
Создание выполняется в дереве конфигурации: ветка «Регистры сведений» → «Добавить». На закладке «Основные» задаются имя и синоним, на закладке «Данные» — измерения, ресурсы и реквизиты с типами. Свойство «Периодичность» и «Режим записи» находятся в палитре свойств объекта; для подчинённого режима дополнительно потребуется указать документы-регистраторы на закладке «Регистраторы».
После определения структуры создайте формы: форму списка и форму записи для независимого регистра. Проверьте индексы: платформа автоматически индексирует по измерениям и периоду, но при нестандартных отборах в запросах имеет смысл включить свойство «Индексировать» у нужных измерений. Обновите конфигурацию базы данных и проверьте реструктуризацию — для нового объекта она пройдёт без потерь.
- 1В конфигураторе откройте ветку «Регистры сведений» и добавьте новый объект
- 2Задайте имя, периодичность «В пределах дня» и режим записи «Независимый»
- 3Добавьте измерения (например, «Валюта») и ресурсы (например, «Курс»)
- 4Создайте формы списка и записи, обновите конфигурацию базы данных
- 5Добавьте тестовые записи за разные даты и проверьте запросом срез последних на промежуточную дату
Чтение и запись данных программно
Для независимого регистра запись выполняется через менеджер записи (одна строка) или набор записей с отбором (пакетная операция). Набор записей предпочтителен при массовой загрузке: он записывается одной транзакцией и работает быстрее цикла по менеджерам записей. При записи набора с установленным отбором старые записи, попадающие под отбор, полностью замещаются — это нужно учитывать, чтобы не стереть чужие данные.
Чтение актуальных значений из периодического регистра выполняйте запросом к виртуальной таблице «СрезПоследних» с параметром даты. Избегайте обхода физической таблицы регистра с поиском максимального периода вручную — это медленнее и чревато ошибками при равных датах. Для получения истории изменений используйте основную таблицу регистра с упорядочиванием по периоду.
Типичные ошибки и ограничения
Частая ошибка — выбор непериодического регистра для данных, по которым позже потребовалась история. Конвертация в периодический регистр на живой базе требует миграции данных и переписывания всех запросов, поэтому при сомнениях периодичность лучше предусмотреть сразу. Обратная ошибка — периодический регистр там, где история не нужна: лишний ключ усложняет запись и увеличивает объём хранения.
Вторая группа ошибок связана с ресурсами и реквизитами. Реквизиты не попадают в срез последних как значения в полном смысле и не участвуют в ключе — поле, по которому нужно получать значения и строить отборы, должно быть ресурсом или измерением. Также распространено создание независимого регистра для данных, которые бизнес-процесс требует устанавливать документом: позже приходится добавлять регистратора и переносить записи.
Как проверить корректность настройки
После создания регистра выполните контрольные проверки. Добавьте две записи с одинаковыми измерениями и разными датами, затем постройте запрос к срезу последних на дату между ними: должен вернуться ресурс ранней записи. Попытка добавить вторую запись на ту же дату должна завершиться ошибкой уникальности — это подтверждает правильность ключа.
Для подчинённого регистра проверьте, что проведение документа-регистратора создаёт движения, а распроведение их удаляет. Убедитесь также, что у пользователей настроены права: для независимого регистра нужны права на чтение и изменение самого регистра, для подчинённого — на документы-регистраторы.
Как проверить результат
Возвращается значение ближайшей предыдущей записи
Пустой результат или значение будущей даты
Ошибка нарушения уникальности ключа
Запись сохраняется — значит, ключ сформирован неверно
Движения по регистру удаляются
Записи остаются — регистр не подчинён регистратору или движения не формируются
Ответы на частые вопросы
Может ли регистр сведений быть одновременно периодическим и независимым?
Да, это разные свойства. Периодичность определяет привязку записей к дате, а независимость — способ заполнения без документа. Классический пример такого сочетания — регистр курсов валют: записи привязаны к датам и загружаются напрямую, без документов.
Чем регистр сведений лучше дополнительных реквизитов справочника?
Дополнительные реквизиты хранят одно текущее значение без истории и замедляют карточку объекта при большом числе записей. Регистр сведений даёт историю изменений, быстрые срезы на дату и не перегружает сам справочник. Для периодически меняющихся данных (цены, курсы, ставки) регистр предпочтительнее.
Как получить значение, действовавшее на конкретную дату?
Запросом к виртуальной таблице СрезПоследних с параметром-периодом. Платформа сама найдёт для каждой комбинации измерений запись с максимальной датой, не превышающей указанную. Вручную искать максимальный период по физической таблице не требуется.
Что произойдёт с данными при смене непериодического регистра на периодический?
При обновлении конфигурации выполнится реструктуризация: существующие записи сохранятся, но получат пустой или технический период. Срезы последних на реальные даты могут перестать возвращать эти записи. Перед изменением свойства сделайте резервную копию и подготовьте обработку простановки корректных дат.
Когда нужен регистратор вместо независимого режима?
Когда значение устанавливается хозяйственной операцией и должно отменяться вместе с ней: установка цен, изменение условий договоров, назначение скидок. Регистратор обеспечивает документальное основание, журнал изменений и автоматическую отмену при распроведении документа.
Почему запись набора записей стёрла часть данных регистра?
Набор записей при записи замещает все строки, попадающие под установленный отбор. Если отбор слишком широкий или не установлен вовсе, будут удалены лишние записи. Всегда проверяйте отборы перед вызовом метода Записать() и выполняйте операцию в транзакции.
Что важно запомнить
Периодичность и независимость — два независимых свойства регистра сведений. Периодический регистр хранит историю и даёт срезы на дату; независимый заполняется без документов. Выбирайте периодичность по потребности в истории, а режим записи — по необходимости документального контроля. Перед изменением свойств заполненного регистра делайте резервную копию.