- •Назначение
- •6.2. Непериодические регистры сведений
- •6.3. Периодические регистры сведений
- •6.4. Реквизиты регистра сведений
- •6.5. Режим записи
- •6.6. Приемы программирования регистров сведений
- •Описание менеджера регистра сведений
- •Описание набора записей регистра сведений
- •Выборка из регистра сведений
- •Описание менеджера записи регистра сведений
- •Модуль набора записей
- •6.4. Формы регистра сведений
6.3. Периодические регистры сведений
В базе данных часто требуется хранить не только текущие сведения, а «помнить» историю изменения значений, например, нужно знать курсы валют на каждую дату, историю изменения должности сотрудника для отчета Карьера, историю цен на товары и т.д.
Для решения подобных задач создается периодический регистр сведений, и тогда хранящаяся в нем информация будет развернута во времени. Система автоматически добавляет в периодический регистр сведений системное измерение Период типа «дата», что позволяет получать не только текущие сведения об объекте, но также на любой момент времени.
Для периодического реквизита при создании указывается периодичность из следующих возможных значений:
• в пределах секунды,
• в пределах дня,
• в пределах месяца,
• в пределах квартала,
• в пределах года,
• по позиции регистратора (доступен, если режим записи у регистра - «Подчинение регистратору»).
Будьте внимательны при установке периодичности. Это напрямую влияет на возможность извлечения данных средствами встроенного языка, так как нельзя будет получить значение с периодичностью меньшей, чем установленная.
Самый простой пример периодического регистра сведений - КурсыВалют. Этот регистр сведений хранит курсы всех валют на каждый день.
Пример 1. Регистр сведений «Курсы валют», заполняемый в форме самого регистра.
Данные в такой регистр сведений также вводятся интерактивно.
С помощью метода ПолучитьПоследнее можно получить значение курса валюты, действовавшее на определенную дату. Если в регистре сведений записи на эту дату не окажется, то будет возвращено значение на ближайшую предыдущую дату. Например, для валюты USD на дату 02.01.2007 не был введен курс, тогда будет браться курс на ближайшую предыдущую дату, т.е. на 01.01.2007.
Пример 2. Регистр сведений «Цены номенклатуры», заполняемый при проведении документа типовой конфигурации «УстановкаЦенНоменклатуры».
Этот регистр будет хранить текущие цены на товары, например, розничную и оптовую цену.
Сделаем регистр сведений ЦеныНоменклатуры периодическим, чтобы развернуть во времени информацию о ценах на товары с периодичностью «День»:
Измерения: |
Номенклатура |
СправочникСсылка. Номенклатура |
|
Тип цен |
СправочникСсылка.ТипыЦен |
Ресурсы: |
Цена |
число |
Периодичность |
В пределах дня |
|
Таблица записей этого регистра будет такова:
Период |
Номенклатура |
Тип цен |
Цена |
01.01.2012 |
Монитор 19" |
Розничная |
1500,00 |
01.01.2012 |
Монитор 19" |
Оптовая |
1400,00 |
01.01.2012 |
Мышь 2-кноп. |
Розничная |
1,50 |
01.02.2012 |
Монитор 19" |
Розничная |
1350,00 |
01.02.2012 |
Монитор 19" |
Оптовая |
1300,00 |
01.02.2012 |
Мышь 2-кноп. |
Розничная |
1,20 |
Замечание. В периодическом регистре сведений не может существовать две записи с одинаковым набором измерений, периодом и регистратором (для регистров с периодичностью по позиции регистратора).
Некоторые измерения любого (как периодического, так и непериодического) регистра сведений можно назначить ведущими, что возможно только для измерений, которые являются ссылками на объекты базы данных. Это нужно сделать, если записи регистра не имеют смысла без данного объекта. Тогда удаление объекта базы данных приведет к автоматическому удалению записей регистра сведений, ссылающихся на этот объект. Например, записи о курсе валюты не имеют смысла, если сама валюта была удалена.
