Разработка конфигураций в платформе 1С:Предприятие 8 невозможна без грамотного проектирования структуры хранения данных. Одним из ключевых объектов метаданных, обеспечивающих хранение изменяющейся во времени информации, является периодический регистр сведений. Этот инструмент позволяет фиксировать состояние данных на конкретную дату и время, что критически важно для ведения истории цен, курсов валют или остатков товаров.
В отличие от непериодических аналогов, данный тип регистра требует особого подхода к настройке структуры и проведения движений. Платформа автоматически контролирует уникальность записей с учетом временной метки, предотвращая дублирование данных в один и тот же момент времени. Понимание принципов работы этого объекта — фундамент для создания стабильных и производительных решений.
Далее мы подробно разберем процесс создания регистра, выбор типа периодичности и настройку его основных свойств в конфигураторе.
Выбор типа периодичности и назначение регистра
Перед началом создания объекта необходимо четко определить бизнес-задачу, которую он будет решать. Периодический регистр сведений предназначен для хранения данных, которые меняются во времени. Основное различие между типами регистра заключается в granularity (детализации) учета времени.
Существует два основных типа периодичности, доступных разработчику при создании объекта. Выбор между ними зависит от того, насколько часто меняются данные и требуется ли хранить историю изменений внутри одного дня.
- 📅 Внутридневная — позволяет хранить несколько записей для одного дня с разными значениями времени (часы, минуты, секунды). Идеально подходит для биржевых котировок или логов событий.
- 📆 В пределах дня — хранит только одну запись на конкретную дату. Время в таких записях всегда обнуляется. Используется для курсов валют, цен номенклатуры или штатного расписания.
Неправильный выбор типа периодичности может привести к усложнению кода или потере важной исторической информации. Если вы выберете "В пределах дня", система не позволит добавить вторую запись за то же число, даже с разным временем.
⚠️ Внимание: Изменить тип периодичности у уже созданного и наполненного данными регистра невозможно без потери структуры. Перед созданием убедитесь в требованиях заказчика к глубине истории.
Создание объекта в конфигураторе 1С
Процесс создания нового регистра начинается в дереве метаданных конфигуратора. Вам необходимо найти ветку "Регистры сведений", вызвать контекстное меню и выбрать пункт "Добавить". Откроется окно редактирования свойств нового объекта.
В открывшейся форме первым делом присвойте объекту понятное имя, используя префикс вашей конфигурации (например, СпрЦеныНоменклатуры). Имя должно отражать суть хранимых данных, чтобы другие разработчики могли легко ориентироваться в структуре.
Далее установите галочку Периодический. Сразу после этого станет активным поле выбора типа периодичности, о котором мы говорили выше. Также здесь можно задать синоним, который будет отображаться в пользовательском интерфейсе.
☑️ Проверка перед сохранением
Обратите внимание на параметр Режим записи. По умолчанию он установлен в значение "Автономный", что означает независимость записей друг от друга. Однако для некоторых задач может потребоваться подчинение регистратору, если регистр используется для проведения документов.
Настройка измерений и ресурсов
Структура регистра сведений состоит из двух основных частей: измерений и ресурсов. Измерения формируют уникальность записи, а ресурсы хранят полезные данные (числа, строки, ссылки), которые могут меняться.
При проектировании структуры важно помнить правило: чем меньше измерений, тем выше производительность выборки. Добавляйте в измерения только те поля, по которым будет осуществляться отбор или группировка данных в отчетах.
| Элемент структуры | Назначение | Пример типа данных |
|---|---|---|
| Период | Автоматическое поле времени | Дата (скрыто) |
| Измерение | Уникальный ключ (части) | Справочник.Номенклатура |
| Ресурс | Хранимое значение | Число (15, 2) |
| Ресурс | Дополнительная информация | Справочник.Валюты |
Для добавления новых полей используйте нижнюю панель окна редактирования регистра. Выберите тип добавляемого элемента (Измерение или Ресурс), укажите имя и тип данных. Для ресурсов можно задать длину и точность, если выбран числовой тип.
Ограничения типов данных
В качестве измерений и ресурсов можно использовать практически любые типы данных 1С, кроме самих регистров. Однако использование составных типов с большим количеством вариантов может снизить производительность индексов.
Использование подчинения регистратору
Особый режим работы периодического регистра — подчинение регистратору. В этом случае период записи жестко привязывается к дате и времени проведения документа-регистратора. Это характерно для документов "Поступление товаров" или "Реализация".
При включении этого режима в свойствах регистра появляется список документов, которые могут делать движения. Период записи в таблице регистра будет автоматически совпадать с моментом проведения документа.
Такой подход упрощает контроль целостности данных: нельзя создать движение в регистре вручную или из другого документа, не входящего в список разрешенных. Это обеспечивает строгую аудируемость операций в системе.
⚠️ Внимание: При подчинении регистратору ручное создание записей через консоль запросов или обработки запрещено. Все изменения должны проходить только через документы-источники.
Если ваш регистр используется для справочной информации (например, курсы валют), которая загружается отдельной обработкой, режим подчинения обычно не используется. В таком случае записи создаются независимо от документов.
Работа с данными через запросы
Получение актуальных данных из периодического регистра требует использования специальных конструкций языка запросов. Самый распространенный сценарий — выборка последних известных значений на конкретную дату.
Для этого используется ключевое слово КАК ПЕРИОД или функция КОНЕЦПЕРИОДА. Платформа 1С оптимизирует такие запросы, используя специальные индексы по периоду и измерениям.
ВЫБРАТЬ
ЦеныНоменклатуры.Номенклатура,
ЦеныНоменклатуры.Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
ЦеныНоменклатуры.Период МЕЖДУ НАЧАЛОПЕРИОДА(&Дата) И КОНЕЦПЕРИОДА(&Дата)
Использование виртуальной таблицы СрезПоследних или СрезПервых позволяет еще больше упростить код и ускорить выполнение. Эти виртуальные таблицы автоматически выбирают нужную запись без явного указания сложных условий отбора по времени.
Используйте виртуальные таблицы "СрезПоследних" для получения актуальных данных. Это не только сокращает код запроса, но и позволяет платформе 1С применять оптимальный план выполнения.
Особенности индексации и производительности
Производительность работы с периодическими регистрами напрямую зависит от правильной настройки индексов. По умолчанию система создает индекс по периоду и основным измерениям, но для сложных отчетов этого может быть недостаточно.
В свойствах каждого измерения и ресурса есть флаг Ведущее и возможность настройки дополнительных индексов. Ведущее измерение обычно используется для связи со справочниками и должно быть проиндексировано в первую очередь.
Если вы часто делаете отборы по конкретному ресурсу (например, ищете все товары с ценой выше определенной), стоит рассмотреть создание дополнительного индекса, включающего этот ресурс. Однако помните, что каждый лишний индекс замедляет запись данных.
⚠️ Внимание: Интерфейсы конфигураций и возможности конфигуратора могут обновляться. Всегда сверяйте актуальные настройки индексов в документации к вашей конкретной версии платформы 1С.
Баланс между скоростью чтения и записи — главный принцип настройки индексов. Не создавайте индексы "на всякий случай", ориентируйтесь на реальные сценарии использования отчетов.
Частые ошибки при проектировании
Разработчики часто сталкиваются с типичными проблемами при внедрении периодических регистров. Одна из самых распространенных ошибок — использование излишне детальной периодичности там, где достаточно даты.
Другая ошибка заключается в отсутствии контроля за дублированием записей при загрузке данных из внешних источников. Если не настроить уникальность properly, в базе могут появиться конфликты, которые придется исправлять обработками.
Также стоит избегать хранения в одном регистре сведений, которые меняются с разной частотой. Лучше разбить их на несколько регистров, чем пытаться уместить все в одну таблицу с избыточными измерениями.
Проблема "разрастания" таблиц
Периодические регистры могут расти очень быстро. Обязательно настройте регламентные задания для удаления устаревших записей, если история за 10 лет не нужна для работы.
В чем разница между регистром сведений и регистром накопления?
Регистр сведений хранит состояние объекта на момент времени (справочная информация), а регистр накопления хранит обороты и остатки (движение ресурсов). Сведения не суммируются, а накапливаются.
Можно ли изменить периодичность регистра после создания?
Нет, тип периодичности (внутридневная или в пределах дня) закладывается при создании и не подлежит изменению. Потребуется создать новый регистр и перенести данные.
Как удалить старые записи из периодического регистра?
Для этого используются обработки удаления движений или прямые запросы к таблице регистра в режиме предприятия с правами администратора базы данных.
Что такое "Ведущее измерение" и зачем оно нужно?
Ведущее измерение указывает на то, что запись в регистре не может существовать без связанного элемента справочника. Это обеспечивает целостность ссылок и удаляет записи при удалении элемента.