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


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

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

Регистр сведений, фактически, представляет собой массив дан­ных, необходимый, чтобы реализовать функцию, которая может выдать необходимую информацию по определенному набору ар­гументов. Аргументы функции называются измерениями, а ре­зультат функции - ресурсами. В приведенном выше примере ре­гистр "ЦеныКонкурентов" будет содержать измерения "Конку­рент" и "Товар", и ресурс "Цена". Ресурсов может быть больше чем один: например, можно хранить оптовую и розничную цены.

Для разворота этой информации во времени используется поле "Период" регистра. Оно не вносится в качестве измерения, а до­бавляется системой автоматически при создании периодического регистра.

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

Если регистр не периодический, то поле "Период" для него не создается. В приведенном примере регистр "ЦеныКонкурентов" может быть непериодическим, если мы не хотим хранить историю изменения цен, а хотим иметь только актуальные цены. Тогда функция регистра сможет ответить на вопрос "какая сейчас цена у такого-то конкурента на такой-то товар", но не сможет ответить на вопрос "какая была цена у такого-то конкурента на такой-то товар в начале года".


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

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

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

Эти два варианта влияют на способ внесения информации, а не на основную логику работы регистра.

Документ, которым вносится запись в регистр сведений, называ­ется регистратором.

Регистры, записываемые независимо, могут свободно редактиро­ваться вручную или средствами встроенного языка. При этом ес­ли измерение такого регистра назначено как "ведущее" и значени­ем измерения является ссылка на объект базы данных, то будет считаться, что запись регистра имеет смысл, только пока сущест­вует этот объект. Например, если назначить ведущим измерение "Конкурент", то считается, что запись имеет смысл только как информация по данному конкуренту. Соответственно, при удале­нии конкурента записи по нему будут удалены автоматически.

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

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


Содержание раздела