В процессе разработки конфигураций в системе 1С:Предприятие 8, архитекторы и программисты часто сталкиваются с необходимостью хранения больших объемов справочной или накопленной информации. Для этих целей идеально подходят регистры сведений, которые позволяют структурировать данные по измерениям и ресурсам, обеспечивая быстрый доступ и выборку. Понимание принципов работы этих объектов является фундаментом для создания эффективных прикладных решений.

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

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

Подготовка к созданию объекта в конфигураторе

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

Найдите в дереве конфигурации ветку Регистры сведений. Обычно она расположена после справочников и документов, но перед регистрами накопления. Нажмите правой кнопкой мыши на эту ветку и выберите пункт Добавить в контекстном меню. Система предложит вам создать новый объект метаданных с уникальным именем.

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

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

💡

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

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

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

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

Если же вам нужно хранить историю, выбирайте Периодический. Этот режим позволяет делать срезы данных на любую дату. Внутри этого режима есть два подтипа: Внутри дня и Внутри месяца. Выбор зависит от granularity (детализации) ваших данных: нужны ли вам изменения в течение одного дня или достаточно фиксировать состояние на конец месяца.

  • 📅 Непериодический: хранит только актуальное состояние, история не ведется.
  • 📈 Периодический (Внутри дня): позволяет фиксировать изменения несколько раз в сутки с точностью до секунды.
  • 🗓️ Периодический (Внутри месяца): оптимизирован для данных, где важна дата, но не важно точное время внутри суток.

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

📊 Какой тип периодичности вы используете чаще всего?
Непериодический
Периодический внутри дня
Периодический внутри месяца
Затрудняюсь ответить

Конфигурирование измерений и ресурсов

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

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

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

Тип поля Назначение Пример данных Влияние на уникальность
Измерение Ключевое поле для поиска Справочник.Номенклатура Да, формирует ключ
Ресурс Хранимая информация Число (15.2) Нет, может повторяться
Реквизит Дополнительные сведения Строка (Комментарий) Нет, служебная информация

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

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

В некоторых случаях регистр сведений должен быть жестко привязан к конкретному документу или справочнику. Для этого используется механизм Подчинения. Если установить галочку Подчиненный, необходимо указать регистратор. Это означает, что записи регистра не могут существовать без ссылки на объект-владелец.

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

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

⚠️ Внимание: Включение итогов для периодических регистров недоступно. Попытка изменить периодичность на "Периодический" при включенных итогах приведет к ошибке сохранения конфигурации.

Технические ограничения подчиненных регистров

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

Заполнение регистра данными и работа в режиме предприятия

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

Перейдите в режим 1С:Предприятие. Найдите в меню раздел Администрирование или НСИ и Администрирование, где часто располагаются инструменты для работы с регистрами. Выберите пункт Регистры сведений и найдите созданный вами объект. Откроется форма списка записей.

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

  • 🔍 Используйте кнопку Настройки в списке для добавления отборов по конкретным измерениям.
  • ✏️ Для редактирования существующей записи выделите её и нажмите Изменить.
  • 🗑️ Удаление записей производится стандартной кнопкой Удалить с подтверждением действия.

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

☑️ Проверка работоспособности регистра

Выполнено: 0 / 5

Использование в запросах и получение срезов

Главная мощь регистров сведений раскрывается при написании запросов. Для получения актуальных данных на конкретную дату используется оператор СрезПоследних или СрезПервых. Это позволяет избежать сложных выборок с группировками и упорядочиванием по дате.

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

ВЫБРАТЬ

ЦеныНоменклатурыСрезПоследних.Номенклатура,

ЦеныНоменклатурыСрезПоследних.Цена

ИЗ

РегистрСведений.ЦеныНоменклатуры.СрезПоследних(

&Период,

Номенклатура В (&СписокНоменклатуры)

) КАК ЦеныНоменклатурыСрезПоследних

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

⚠️ Внимание: При использовании срезов в сложных запросах с большим количеством соединений следите за планом выполнения запроса. Иногда явное указание полей в отборе среза работает быстрее, чем выборка всех записей с последующим фильтром.

💡

Использование виртуальных таблиц срезов (СрезПоследних/СрезПервых) является стандартом разработки в 1С и гарантирует наилучшую производительность при выборке актуальных данных.

Частые ошибки и оптимизация производительности

Одной из распространенных проблем является создание регистров с избыточным количеством измерений. Разработчики часто включают в измерения поля, которые по факту являются ресурсами. Это раздувает ключ кластеризованного индекса и замедляет вставку новых записей.

Другая ошибка — игнорирование типов данных. Использование строковых полей большой длины в качестве измерений может привести к превышению лимитов размера ключа индекса в SQL-сервере. Всегда старайтесь использовать ссылки на справочники вместо длинных строк для идентификации объектов.

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

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

Технически платформа 1С не позволяет изменить периодичность (например, с Непериодического на Периодический) для регистра, в котором уже есть данные. Вам потребуется создать новый регистр, написать обработку для переноса данных и заменить все ссылки в коде конфигурации.

В чем разница между ресурсом и реквизитом регистра?

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

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

Для массовой очистки лучше всего использовать обработку Удаление помеченных объектов (предварительно пометив записи на удаление) или написать специальную внешнюю обработку, выполняющую SQL-запрос DELETE напрямую к таблице регистра (требуется осторожность).

Что делать, если регистр не виден в списке доступных в режиме предприятия?

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

Можно ли использовать регистр сведений для хранения файлов?

Да, если добавить ресурс типа ХранилищеЗначения. Однако для больших объемов файловых данных лучше использовать специализированные механизмы хранения или отдельные таблицы, чтобы не перегружать основную базу данных 1С.