Примеры проектирования регистра сведений

Измерения, ресурсы, реквизиты

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

Общее ограничение — ни измерения, ни ресурсы, ни реквизиты не могут быть множественными. То есть они не могут иметь тип Массив.

Другие ограничения касаются только измерений:

  • Измерения типа Строка и Байты должны иметь ограничения по длине.
  • Измерения не могут иметь тип ДвоичныйОбъект.Ссылка.

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

Наличие/отсутствие чего-либо

В тех случаях когда в ресурсе требуется хранить значения типа Булево («есть»/«нет», «включено»/«выключено», «используется»/«не используется»), можно обойтись вообще без ресурса. Благодаря тому, что регистр обеспечивает уникальность записей по набору значений измерений, вы не сможете добавить в регистр две записи с одними и теми же «координатами».

Поэтому, например, для учета уборки помещений можно использовать регистр с измерениями Помещение и ДатаУборки. Есть запись на эту дату про это помещение — значит оно убрано. Нет записи — значит помещение не убрано.

Регистр-флажок

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

Для таких задач можно использовать регистр сведений, который может содержать одну единственную запись. Есть запись в этом регистре — «флажок установлен», нет записи — «флажок снят».

Такой регистр будет иметь единственное измерение с типом Неопределено. Тип Неопределено имеет единственное значение — Неопределено. Поэтому в таком регистре может быть всего одна запись.

Регистры с датой и периодические регистры

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

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

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

Самодостаточность регистров

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

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

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