Регистр сведений в 1С 8.3

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

Регистр сведений позволяет хранить некую информацию в разрезе измерений. Можно сказать, что это некий многомерный массив, где на пересечении каждого измерения хранится какое-то значение. Например, можно хранить цены на товары в разрезе товаров и типов цен:

ТоварТип ценЦена
ШкафОптовая1000
ШкафРозничная2000
ТумбочкаОптовая500
ТумбочкаРозничная1200

На закладке Данные можно настроить состав измерений и ресурсов регистра сведений. Ресурсы — это как раз та самая информация, которая хранится в разрезе измерений:

Регистр сведений

При сохранении конфигурации базы данных будет создана таблица с тремя колонками: Товар, ТипЦен и Цена.

В пользовательском режиме можно добавлять в регистр новые записи:

Регистр сведений

При этом нельзя добавить две записи с одинаковым значением измерений. Если попытаться добавить еще одну цену на шкаф для оптовой цены, то при записи будет выброшено исключение: «Запись с такими ключевыми полями существует!»:

Запись с такими ключевыми полями существует

Контроль уникальности записей выполняется при записи и при изменении состава измерений в конфигураторе. Если удалить у регистра сведений измерение Тип цен и попытаться обновить конфигурацию базы данных, то при реструктуризации базы данных будет выдана ошибка «Имеются записи с одинаковыми измерениями», потому что после удаления измерения Тип цен стало по две записи с товарами Шкаф и Тумбочка:

Имеются записи с одинаковыми измерениями

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

Запрет незаполненных значений

Если попытаться добавить запись с пустым товаром, то будет выброшено исключение «Запись не верна! Значение поля «Товар» не может быть пустым!»:

Запрет незаполненных значений

Флаг Ведущее у измерения регистра сведений означает, то данная запись имеет смысл пока существует элемент базы данных, ссылка на который хранится в данном измерении. Если удалить из базы данных товар Шкаф, то автоматически из регистр сведений будут удалены все записи, где в измерении Товар был указан Шкаф. Если бы данный флаг не был установлен, то записи остались бы в регистре с битой ссылкой.

А также в карточке товара появляется гиперссылка для быстрого перехода к регистру сведений с отбором по текущему товару:

Ведущее измерение

Флаг Основной отбор используется при регистрации записей в плане обмена и будет рассмотрен в соответствующей главе.

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

Реквизиты регистра сведений

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

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

Периодический регистр сведений

На закладке Основные есть свойство Периодичность. Если там выбрать значение отличное от Непериодический, то в таблицу регистра будет автоматически добавлено поле Период. Периодичность бывает:

  • В пределах секунды
  • В пределах дня
  • В пределах месяца
  • В пределах квартала
  • В пределах года
Периодический регистр сведений

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

Периодический регистр сведений

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

С помощью периодических регистров сведений можно хранить историю изменения ресурсов регистра.

Регистр сведений подчиненный регистратору

На закладке Основные в свойстве Режим записи можно установить значение Подчинение регистратору:

Регистр сведений подчиненный регистратору

В этом случае в таблицу регистра будет добавлено еще три колонки:

  • Регистратор
  • Номер строки
  • Активность

В роли регистратора всегда выступает документ. Список возможных документов-регистраторов указывается на закладке Регистраторы. Если не указать ни один документ, то при сохранении конфигурации базы данных будет ошибка: «РегистрСведений.ЦеныНаТовары: Ни один из документов не является регистратором для регистра».

Создадим новый документ УстановкаЦенНаТовары и отметим его как регистратор:

Регистр сведений подчиненный регистратору

Теперь нельзя вручную добавлять новые записи в регистр. Записи должны формироваться документами-регистраторами при проведении. Добавим в обработку проведения документа УстановкаЦенНаТовары следующий код:

Проведем один документ:

Установка цен

И посмотрим на записи в регистре сведений:

Установка цен

В поле регистратор была записана ссылка на документ-регистратор. Поле Номер строки заполняется автоматически цифрами по порядку, начиная с единицы. При этом номера строк уникальны только в пределах одного регистратора. То есть если провести еще один документ, то в регистре будет добавлены записи с новым регистратором, номера строк снова будут равны 1 и 2:

Установка цен

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

Периодичность по позиции регистратора

Рекомендации при проектировании структуры регистра

  1. При записи регистра сведений записываются все ресурсы. Не нужно проектировать структуру таким образом, что один ресурс меняется каждый день, а второй два раза в год. Лучше вынести второй ресурс в отдельный регистр сведений.
  2. Получение данных из нескольких ресурсов одного регистра сведений выполняется быстрее, чем получение одного ресурса из нескольких регистров.
  3. Запись в несколько ресурсов одного регистра сведений выполняется быстрее, чем запись одного ресурса в несколько регистров.

Подписывайтесь на группу ВКонтакте , где я публикую ссылки на новые статьи с данного сайта, а также интересные материалы с других ресурсов по программированию в 1С
Понравилась статья? Поделиться с друзьями:
Используя этот сайт, Вы даете согласие на использование cookies. На данном этапе Вы можете отказаться от использования cookies, настроив необходимые параметры в своем браузере.
ok