Регистры сведений в 1с-это новый объект конфигурации, которые появились в версии программного продукта 1С:Предприятие 8 (в широко распространенной в нашей стране системе 1С:Предприятие 7.7 их не было).
Регистры сведений необходимы для хранения различной информации, к которой требуется обращаться из той или иной конфигурации. Данная информация храниться в разрезе измерений, также она может изменяться во времени. Эта информация хранится в регистре в виде записей. На запись нельзя сделать ссылку из информационной базы. В регистре может быть только одна запись с определенной комбинацией измерений и периодом.
Регистры сведений может характеризоваться режимом записи:
- Независимый
- Подчинение регистратору
При выборе режима “Подчинение регистратору” запись жестко привязана к документу-регистратору. В этом случае запись в регистратор выполняется через документ-регисратор.
При другом режиме (“Независимой”) запись подчиняется так называемым ведущим измерениям.
Регистры сведений, информация в которых изменяется во времени, называются Периодическими. Другими словами для таких регистров необходимо задавать период или промежуток времени:
1.год;
2.день;
3.минуту.
Изучение регистров сведений выполним в процессе решения практического примера.
Одним из ярких представителей регистров сведений является регистр ЦеныНоменклатуры. Этот регистр является периодическим с периодом один день. Заполнение регистра происходим при помощи регистратора: Документа Установка цен.
Документ установка цен номенклатуры будет заполнять регистр цены. Создание движения нами разбиралось в статье о документе.(Ссылка).
Изменим документ РасходнаяНакладная добавив в него Реквизит ВидЦены.
На форме документа для столбца Номенклатура в Событии при изменении создадим функцию получение цены. Цена будет извлекаться запросом из регистра сведений Цены. Параметрами в нашем запросе будут Номенклатура и ВидЦены.
Запрос для извлечения данных из регистра сведений 1с будет выглядеть так:
запрос.Текст="ВЫБРАТЬ
| ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0) КАК Цена
|ИЗ
| РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
|ГДЕ
| ЦеныСрезПоследних.Номенклатура = &Номенклатура
| И ЦеныСрезПоследних.ВидыЦен = &ВидЦены";
Запись в регистры сведений
Запись в регистры сведений в 1с можно выполнить одним из двух способов:
- При помощи Менеджера записи.
&НаСервере
Процедура Команда1НаСервере()
движ=регистрысведений.Цены.СоздатьМенеджерЗаписи();
Движ.Номенклатура=объект.Номенклатура;
Движ.ВидыЦен=Объект.ВидЦены;
Движ.Цена=Объект.ЦенаИзм;
Движ.Период=Объект.ДатаИзм;
Движ.Записать();
КонецПроцедуры
2.При помощи набора записей
Сообщить("Начинаем запись в регистр сведений");
//создаем набор записей регистра сведений
НаборЦен = РегистрыСведений.Цены.СоздатьНаборЗаписей();
//устанавливаем отбор по измерениям и периоду
НаборЦен.Отбор.Номенклатура.Установить(объект.Номенклатура);
//НаборЦен.Отбор.Цена.Установить(объект.ЦенаИзм);
НаборЦен.Отбор.Период.Установить(объект.ДатаИзм);
//добавляем новую запись
НоваяЦена = НаборЦен.Добавить();
НоваяЦена.Номенклатура = объект.Номенклатура;
//НоваяЦена.ТипЦен = СсылкаНаТипЦен;
НоваяЦена.Период = объект.ДатаИзм;
НоваяЦена.Цена =объект.ЦенаИзм;
//записываем набор записей
попытка НаборЦен.Записать();
сообщить("Успешная запись");
исключение
сообщить("Запись не произведена");
конецпопытки;
Отчеты на основе Регистра Сведений
Все регистры в 1с предназначены для быстрого извлечения информации и построения отчетов. Создадим отчет по регистру Цены и Справочнику Номенклатура.
ВЫБРАТЬ
ЦеныСрезПоследних.Номенклатура.Ссылка КАК Ссылка,
ЦеныСрезПоследних.Цена КАК Цена
ИЗ
РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
ПО (ЦеныСрезПоследних.Номенклатура = ЦеныСрезПоследних.Номенклатура.Ссылка)
ГДЕ
ЦеныСрезПоследних.Номенклатура = &Номенклатура
И ЦеныСрезПоследних.ВидыЦен = &ВидыЦен
Итак, нами рассмотрены основные синтаксические конструкции применяемые при работе с регистрами сведений.