Разработка и Конфигурация · 10 мин
РС в 1С: что такое регистр сведений и как его использовать
РС в 1С — это регистр сведений. Разбираем, что это за объект, виды регистров, чем отличается от справочника, как создать и использовать на практике.
РС в 1С — это сокращение от «регистр сведений», один из прикладных объектов конфигурации. Он предназначен для хранения информации в разрезе заданных измерений: например, цен товаров по видам цен, курсов валют по датам, адресов контрагентов, штрихкодов номенклатуры. В отличие от справочника, регистр сведений не содержит элементов с кодом и наименованием — он хранит записи, каждая из которых представляет собой набор значений.
Аббревиатуру «РС» постоянно используют разработчики и консультанты в переписке, технических заданиях и комментариях к коду: «данные берутся из РС ЦеныНоменклатуры», «добавить запись в РС». Поэтому понимание этого объекта нужно не только программистам, но и аналитикам, внедренцам и продвинутым пользователям, которые настраивают типовые конфигурации.
Регистр сведений — один из самых востребованных объектов при доработке конфигураций: через него удобно хранить дополнительные характеристики объектов, настройки обменов, соответствия значений между системами. При этом ошибки в проектировании регистра (неправильный выбор измерений, режима подчинения или периодичности) приводят к дублям данных, медленным запросам и невозможности корректно получить актуальные значения.
Из чего состоит регистр сведений
Структуру регистра сведений образуют три группы полей. Измерения — это разрезы, в которых хранятся данные: товар, контрагент, организация, валюта. Совокупность значений измерений (плюс период для периодического регистра) образует уникальный ключ записи — двух записей с полностью совпадающими измерениями в регистре быть не может.
Ресурсы — это сами хранимые значения: цена, курс, процент скидки, адрес. Именно ради ресурсов регистр и существует. Реквизиты — дополнительные поясняющие данные, которые не участвуют в уникальности записи и не возвращаются срезом последних: например, комментарий или автор записи.
При проектировании важно правильно распределить поля между измерениями и ресурсами. Частая ошибка — вынести в измерение поле, которое на самом деле является значением (например, сделать «Цену» измерением). Это приводит к накоплению мусорных записей: каждая новая цена создаёт новую запись вместо обновления существующей.
Виды регистров сведений: периодические и непериодические
Непериодический регистр хранит значения без привязки ко времени: актуально только последнее состояние. Пример — штрихкоды номенклатуры: измерение «Номенклатура», ресурс «Штрихкод». Если штрихкод изменился, старая запись просто заменяется.
Периодический регистр добавляет к ключу записи дату. Это позволяет хранить историю изменений и получать значение на любой момент: курс валюты на дату документа, цену товара на дату продажи, ФИО сотрудника до и после смены фамилии. Периодичность может быть в пределах секунды, дня, месяца, квартала или года — чем крупнее период, тем компактнее хранение, но тем меньше точность.
Режим подчинения регистратору
Отдельная настройка — подчинение регистратору. Независимый регистр заполняется вручную, программно или через обработки, и записи существуют сами по себе. Регистр, подчинённый регистратору, заполняется только движениями документов: каждая запись привязана к документу и удаляется при отмене его проведения. Так устроены, например, цены, устанавливаемые документом «Установка цен номенклатуры».
Сравнение вариантов
Подходит для постоянных соответствий: штрихкоды, настройки обмена, соответствия объектов при интеграции. Истории изменений нет.
Подходит для значений, меняющихся во времени без документа: курсы валют, графики работы. История хранится, запись можно добавить вручную.
Подходит для данных, которые должны изменяться только документами: цены, учётная политика. Записи контролируются проведением и отменой проведения.
Чем регистр сведений отличается от справочника
Справочник хранит объекты учёта с иерархией, кодом, наименованием и предопределёнными элементами. Регистр сведений хранит не объекты, а значения в разрезе других объектов. Если нужно описать сущность, на которую будут ссылаться документы, — это справочник. Если нужно хранить характеристику, зависящую от одного или нескольких объектов, — это регистр сведений.
Типовой пример выбора: адреса контрагентов. Хранить адрес в реквизите справочника «Контрагенты» нельзя, если адресов несколько (юридический, фактический, почтовый). Заводить подчинённый справочник «Адреса» — избыточно и неудобно для запросов. Регистр сведений с измерениями «Контрагент» и «ВидАдреса» и ресурсом «Адрес» решает задачу компактно — именно так устроена контактная информация в типовых конфигурациях.
Как создать регистр сведений в конфигураторе
После создания регистра проверьте его в пользовательском режиме: откройте форму списка, добавьте запись, попробуйте добавить дубль с теми же измерениями — платформа должна выдать ошибку уникальности. Это подтверждает, что ключ записи спроектирован правильно.
Как читать и записывать данные регистра программно
Для записи используется менеджер записи (одна запись) или набор записей (несколько записей сразу). Для чтения актуальных значений периодического регистра применяются виртуальные таблицы СрезПоследних и СрезПервых — они возвращают значения ресурсов на указанную дату без перебора всей истории.
// Получить цену товара на дату через срез последних
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Цены.Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, Номенклатура = &Номенклатура) КАК Цены";
Запрос.УстановитьПараметр("Дата", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("Номенклатура", Товар);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Цена = Выборка.Цена;
КонецЕсли;Типичная ошибка производительности — получать срез последних без параметров отбора, а фильтровать уже в коде. Виртуальная таблица среза строится по всему регистру, и на больших объёмах такой запрос работает медленно. Всегда передавайте отбор по измерениям прямо в параметры виртуальной таблицы.
Типичные ошибки при работе с регистрами сведений
Отдельного внимания заслуживает обмен данными: регистры сведений часто участвуют в синхронизациях, и несовпадение состава измерений между базами приводит к дублям или потере записей. Перед настройкой обмена сверьте структуру регистра в обеих конфигурациях.
Как проверить, что регистр работает правильно
Как проверить результат
Попытка ввести дубль по измерениям вызывает ошибку платформы
В регистре несколько записей с одинаковыми измерениями — срез вернёт случайную
На дату возвращается ожидаемое значение ресурса
Возвращается устаревшее или пустое значение — проверьте периодичность и даты записей
Проведение документа создаёт записи, отмена — удаляет
Записи остаются после отмены проведения или дублируются при перепроведении
Для анализа содержимого регистра в типовых конфигурациях удобно использовать универсальный отчёт или консоль запросов: выведите записи с группировкой по измерениям и посчитайте количество — сразу видно дубли и пропуски.
Что важно запомнить
РС в 1С — регистр сведений, объект для хранения значений в разрезе измерений. Правильный выбор измерений, периодичности и режима подчинения регистратору определяет корректность данных и скорость запросов. Актуальные значения периодических регистров получайте через срез последних с отбором по измерениям.
Частые вопросы о регистрах сведений
Чем регистр сведений отличается от регистра накопления?
Регистр сведений хранит значения в разрезе измерений (цена, курс, адрес), а регистр накопления — количественные показатели с приходом и расходом (остатки товаров, взаиморасчёты). Если нужно знать «сколько осталось» — это регистр накопления, если «какое значение действует» — регистр сведений.
Как получить последнее значение из периодического регистра?
Используйте виртуальную таблицу СрезПоследних с указанием даты и отбора по измерениям. Перебирать записи запросом с сортировкой по периоду не нужно — срез делает это оптимально на уровне платформы.
Можно ли редактировать регистр, подчинённый регистратору, вручную?
Технически записи можно посмотреть, но изменять их вручную бессмысленно: при перепроведении документа-регистратора набор записей полностью перезаписывается. Корректировать такие данные нужно через сами документы.
Почему срез последних возвращает не ту запись?
Чаще всего причина в дублях: в регистре несколько записей с одинаковыми измерениями на один период, или в ключ записи входит лишнее измерение, которое не указано в отборе. Проверьте состав измерений и наличие дублей запросом с группировкой.
Сколько измерений можно добавить в регистр сведений?
Платформа не накладывает жёсткого практического лимита, но каждое измерение входит в уникальный индекс. Больше трёх–четырёх измерений — признак того, что структуру стоит пересмотреть: часть полей, вероятно, должна быть ресурсами или реквизитами.
Нужен ли регистр сведений для хранения одной настройки?
Для единственного значения проще использовать константу. Регистр сведений оправдан, когда значений много и они зависят от измерений: настройка по организациям, пользователям, видам документов.