Записки программиста 1с

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

Регистры сведений в 1с-это новый объект конфигурации, которые появились в версии программного продукта 1С:Предприятие 8 (в широко распространенной в нашей стране системе 1С:Предприятие 7.7 их не было).

Регистры сведений необходимы для хранения различной информации, к которой требуется обращаться из той или иной конфигурации. Данная информация храниться в разрезе измерений, также она может изменяться во времени. Эта информация хранится в регистре в виде записей. На запись нельзя сделать ссылку из информационной базы. В регистре может быть только одна запись с определенной комбинацией измерений и периодом.

Регистры сведений может характеризоваться режимом записи:

  • Независимый
  • Подчинение регистратору

При выборе режима “Подчинение регистратору” запись жестко привязана к документу-регистратору. В этом случае запись в регистратор выполняется через документ-регисратор.

При другом режиме (“Независимой”) запись подчиняется так называемым ведущим измерениям.

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

1.год;

2.день;

3.минуту.

Изучение регистров сведений выполним в процессе решения практического примера.

Одним из ярких представителей регистров сведений является регистр ЦеныНоменклатуры. Этот регистр является периодическим с периодом один день. Заполнение регистра происходим при помощи регистратора: Документа Установка цен.

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

Документ установка цен номенклатуры будет заполнять регистр цены. Создание движения нами разбиралось в статье о документе.(Ссылка).

Изменим документ РасходнаяНакладная добавив в него Реквизит ВидЦены.

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

На форме документа для столбца Номенклатура в Событии при изменении создадим функцию получение цены. Цена будет извлекаться запросом из регистра сведений Цены. Параметрами в нашем запросе будут Номенклатура и ВидЦены.

Запрос для извлечения данных из регистра сведений 1с будет выглядеть так:

запрос.Текст="ВЫБРАТЬ
             |	ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0) КАК Цена
             |ИЗ
             |	РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
             |ГДЕ
             |	ЦеныСрезПоследних.Номенклатура = &Номенклатура
             |	И ЦеныСрезПоследних.ВидыЦен = &ВидЦены";

Запись в регистры сведений

Запись в регистры сведений в 1с можно выполнить одним из двух способов:

  1. При помощи Менеджера записи.
&НаСервере
Процедура Команда1НаСервере()
        движ=регистрысведений.Цены.СоздатьМенеджерЗаписи();
	Движ.Номенклатура=объект.Номенклатура;
	Движ.ВидыЦен=Объект.ВидЦены;
	Движ.Цена=Объект.ЦенаИзм;
	Движ.Период=Объект.ДатаИзм;
	Движ.Записать();


КонецПроцедуры 

2.При помощи набора записей

Сообщить("Начинаем запись в регистр сведений");
	//создаем набор записей регистра сведений	
НаборЦен = РегистрыСведений.Цены.СоздатьНаборЗаписей();
//устанавливаем отбор по измерениям и периоду
НаборЦен.Отбор.Номенклатура.Установить(объект.Номенклатура);
//НаборЦен.Отбор.Цена.Установить(объект.ЦенаИзм);
НаборЦен.Отбор.Период.Установить(объект.ДатаИзм);
 
//добавляем новую запись
НоваяЦена = НаборЦен.Добавить();
НоваяЦена.Номенклатура = объект.Номенклатура;
//НоваяЦена.ТипЦен = СсылкаНаТипЦен;
НоваяЦена.Период = объект.ДатаИзм;
НоваяЦена.Цена =объект.ЦенаИзм;
 
//записываем набор записей
попытка НаборЦен.Записать();
	сообщить("Успешная запись");
исключение
	сообщить("Запись не произведена");
конецпопытки;

Отчеты на основе Регистра Сведений

Все регистры в 1с предназначены для быстрого извлечения информации и построения отчетов. Создадим отчет по регистру Цены и Справочнику Номенклатура.

ВЫБРАТЬ
	ЦеныСрезПоследних.Номенклатура.Ссылка КАК Ссылка,
	ЦеныСрезПоследних.Цена КАК Цена
ИЗ
	РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
		ПО (ЦеныСрезПоследних.Номенклатура = ЦеныСрезПоследних.Номенклатура.Ссылка)
ГДЕ
	ЦеныСрезПоследних.Номенклатура = &Номенклатура
	И ЦеныСрезПоследних.ВидыЦен = &ВидыЦен

Итак, нами рассмотрены основные синтаксические конструкции применяемые при работе с регистрами сведений.

Добавить комментарий

Ваш адрес email не будет опубликован.