Примеры проектирования регистра сведений
Измерения, ресурсы, реквизиты
И измерения, и ресурсы, и реквизиты регистра сведений являются реквизитами в широком смысле этого слова. Это составная часть элемента проекта, описывающая одну колонку таблицы базы данных (подробнее). Однако существует ряд дополнительных ограничений на типы значений, которые могут храниться в этих реквизитах.
Общее ограничение — ни измерения, ни ресурсы, ни реквизиты не могут быть множественными . То есть они не могут иметь тип Массив.
Другие ограничения касаются только измерений:
- Измерения типа Строка и Байты должны иметь ограничения по длине.
- Измерения не могут иметь тип ДвоичныйОбъект.Ссылка.
В регистре сведений должно быть хотя бы одно измерение, при этом он может не иметь ни ресурсов, ни реквизитов. Измерения автоматически включаются в основной отбор регистра сведений. Чтобы исключить измерения из основного отбора, следует установить свойство ИспользоватьВОсновномОтборе: Ложь.
Наличие/отсутствие чего-либо
В тех случаях когда в ресурсе требуется хранить значения типа Булево («есть»/«нет», «включено»/«выключено», «используется»/«не используется»), можно обойтись вообще без ресурса. Благодаря тому, что регистр обеспечивает уникальность записей по набору значений измерений, вы не сможете добавить в регистр две записи с одними и теми же «координатами».
Поэтому, например, для учета уборки помещений можно использовать регистр с измерениями Помещение и ДатаУборки. Есть запись на эту дату про это помещение — значит оно убрано. Нет записи — значит помещение не убрано.
Регистр-флажок
Существуют задачи, в которых необходимо иметь в базе данных флажок — переключатель, который не привязан к каким-либо данным, а важен только фактом своего существования.
Для таких задач можно использовать регистр сведений, который может содержать одну единственную запись. Есть запись в этом регистре — «флажок установлен», нет записи — «флажок снят».
Такой регистр будет иметь единственное измерение с типом Неопределено. Тип Неопределено имеет единственное значение — Неопределено. Поэтому в таком регистре может быть всего одна запись.
Регистры с датой и периодические регистры
При проектировании регистров важно понимать разницу между периодическим регистром и регистром, хранящим дату добавления записи.
Если вам просто хочется хранить время или дату, говорящие о том, когда данная запись добавлена или изменена, для этого лучше использовать реквизит типа Дата, Время или ДатаВремя. В этом случае вы не будете связаны никакими ограничениями на указание этих значений: они могут повторяться, могут не иметь никакой периодичности.
- контроль за периодичностью изменения ресурсов, «не чаще, чем раз в ...»;
- получение значения ресурсов на указанную дату, «цены товаров на ...».
Самодостаточность регистров
В тех случаях когда регистр хранит ссылочные данные, например типа имя-справочника.Ссылка, нужно стремиться к тому, чтобы регистр был независим от экземпляров, на которые ссылаются эти данные (от элементов этих справочников).
Любая логика, опирающаяся или анализирующая данные регистра, а также любые отчеты по этому регистру не должны обращаться к полям справочника: им должно быть достаточно данных самого регистра.
Обращение к полям справочника «через точку» приводит к неявному соединению с дополнительными таблицами. Кроме того, в узлах распределенной системы такого справочника может и не быть, если записи регистров мигрируют между узлами, а справочники — нет.