Регистр сведений по сути своей ближе всего к справочнику.
Однако есть ряд важных отличий, некоторые из которых перечислены ниже.
Во-первых регистр сведений не имеет ссылочной структуры, то есть у его записей нет уникальной ссылки, попросту свойства «Ссылка», поэтому на запись регистра сведений нельзя ссылаться.
Во-вторых регистр сведений имеет назначаемый разработчиком состав ключевых реквизитов, называемых измерениями.
Комбинация ключевых реквизитов однозначно идентифицирует запись, то есть двух или более записей с одинаковыми значениями ключевых реквизитов не может быть по-определению.
То есть, к примеру, в регистре сведений, хранящем информацию о длительности рабочих дней с реквизитами «Дата» и «Длительность», реквизит «Дата» будет ключевых, а «Длительность» нет, поскольку в регистре сведений должна быть только одна запись для каждой даты.
В-третьих возможен режим записи в регистр сведений с подчинением регистратору.
То есть записи в регистр сведений будут выполняться документами и при отмене проведения этих документов в случае автоматического удаления движений эти записи будут удаляться.
И в-четвертых регистр сведений может быть периодическим.
То есть информация в нем может быть различной на разные моменты времени.
Классический пример — это курсы валют, сегодня курс один, завтра курс той же самой валюты может быть другой.
Именно поэтому информацию, меняющуюся во времени, нужно хранить в регистре сведений, поскольку методы работы с регистром сведений позволяют использовать агрегатные таблицы «Срез первых» и «Срез последних», в которых можно получить записи, действующие на заданный момент времени.
Ну и напоследок ответ на вопрос, как осуществлять чтение и запись регистра сведений.
Чтение регистра сведений лучше всего осуществлять с помощью запроса.
Работа с запросами является отдельной темой и в рамках данной статьи не рассматривается.
Однако можно читать записи и без запроса с помощью нескольких методов объекта «РегистрСведенийМенеджер».
Методы «Выбрать» и «ВыбратьПоРегистратору» позволяют получить выборку записей с учетом заданного отбора.
Метод «Получить» позволяет получить одну запись, для которой в параметрах метода передается отбор по всем ключевым реквизитам.
Методы «ПолучитьПервое» и «ПолучитьПоследнее» позволяют получить соответственно первую или последнюю запись периодического регистра сведений, удовлетворяющую заданному в параметрах метода отбору.
Методы «СрезПервых» и «СрезПоследних» позволяют получить соответственно срез первых или последних записей, удовлетворяющих заданному в параметрах метода отбору.
Кроме этих методов есть еще два метода, «СоздатьМенеджерЗаписи» и «СоздатьНаборЗаписей», с помощью которых можно создать соответсвенно объект «РегистрСведенийМенеджерЗаписи» или «РегистрСведенийНаборЗаписей», после чего задать значения всех или некоторых ключевых реквизитов и с помощью метода объекта «Прочитать» выполнить чтение в объект записей из базы, удовлетворяющих присвоенным значениям ключевых реквизитов.
В итоге получаем объект, содержащий нужные нам одну или несколько записей.
Запись же в регистр сведений производится с помощью уже упомянутых методов «СоздатьМенеджерЗаписи» и «СоздатьНаборЗаписей» объекта «РегистрСведенийМенеджер».
Можно либо создать объект, после чего заполнить реквизиты записи или список записей и записать объект с помощью метода «Записать».
Либо создать объект, задать значения всех или некоторых ключевых реквизитов, чтобы с помощью метода объекта «Прочитать» выполнить чтение в объект записей из базы, удовлетворяющих присвоенным значениям ключевых реквизитов, после чего выполнить метод «Очистить», после чего уже выполнить метод «Удалить» или заполнить реквизиты записи или список записей и записать объект с помощью метода «Записать».
Как добавить запись в непериодический независимый регистр сведений?
| 1 2 3 4 5 6 7 8 9 10 11 | НаборЗаписей = РегистрыСведений.ЗначенияСвойств.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура);  НаборЗаписей.Отбор.Свойство.Установить(ТекущееСвойство); НоваяЗапись = НаборЗаписей.Добавить();  НоваяЗапись. Номенклатура = ТекущаяНоменклатура;  НоваяЗапись.Свойство = ТекущееСвойство;  НоваяЗапись.Значение = ТекущееЗначение; НаборЗаписей.Записать(); | 
Как считать содержимое непериодического независимого регистра сведений «СобственныеКонтрагенты»?
 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | НаборЗаписей = РегистрыСведений.СобственныеКонтрагенты.СоздатьНаборЗаписей();  НаборЗаписей.Прочитать(); // Перебрать записи в цикле…  Для Каждого Запись из НаборЗаписей Цикл  РегистрКонтрагент = Запись.Контрагент;  РегистрВидСвязи = Запись.ВидСвязи;  РегистрОбъект = Запись.Объект;  КонецЦикла; // … или выгрузить записи в таблицу значений.  ТаблицаЗаписей = НаборЗаписей.Выгрузить(); ВЫБРАТЬ    *   ИЗ    РегистрыСведений.СобственныеКонтрагенты | 
Как удалить все записи из независимого регистра сведений?
 
| 1 2 | НаборЗаписей = РегистрыСведений.ТорговоеОборудование.СоздатьНаборЗаписей();  НаборЗаписей.Записать(); | 
Как удалить записи независимого регистра сведений с отбором по конкретной организации?
 
| 1 2 3 | НаборЗаписей = РегистрыСведений.ОбъектыСтроительстваОрганизаций.СоздатьНаборЗаписей();  НаборЗаписей.Отбор.Организация.Установить(УдаляемаяОрганизация);  НаборЗаписей.Записать(); | 
Как добавить запись в периодический независимый регистр сведений?
 
| 1 2 3 4 5 6 7 8 9 10 11 12 | НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Валюта.Установить(ТекущаяВалюта);  НаборЗаписей.Отбор.Период.Установить(ТекущаяДата); НовЗапись = НаборЗаписей.Добавить();  НовЗапись.Валюта = ТекущаяВалюта;  НовЗапись.Период = ТекущаяДата;  НовЗапись.Курс = ТекущийКурс;  НовЗапись.Кратность = ТекущаяКратность; НаборЗаписей.Записать(Истина); | 
Как прочитать (изменить) записи в периодическом независимом регистре сведений?
 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | НаборЗаписей = РегистрыСведений.Валюты.СоздатьНаборЗаписей();  НаборЗаписей.Отбор.Период.Установить(ДатаЗаписи); НаборЗаписей.Прочитать(); Для Каждого Запись Из НаборЗаписей Цикл // Чтение и сообщение данных полей записи.  Сообщить(Строка(Запись.Период) + " " + Строка(Запись.Валюта) + " " + Строка(Запись.Курс)); // Изменение данных полей записи.  Запись.Курс = 0; КонецЦикла; НаборЗаписей.Записать(); | 
Как удалить записи в периодическом независимом регистре сведений?
 
| 1 2 | НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();  НаборЗаписей.Записать(); | 
Как в периодическом независимом регистре сведений «КурсыВалют» удалить все записи по валютам с наименованиями «EUR» и «USD», период которых меньше 01 января 2005 года?
 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Запрос = Новый Запрос;  Запрос.Текст = "ВЫБРАТЬ  | *  |ИЗ  | РегистрСведений.КурсыВалют КАК КурсыВалют  |ГДЕ  | (КурсыВалют.Период >= ДАТАВРЕМЯ(2005, 1, 1)  | ИЛИ  | НЕ(КурсыВалют.Валюта.Наименование ПОДОБНО ""USD"")  | И  | НЕ(КурсыВалют.Валюта.Наименование ПОДОБНО ""EUR""))"; ТаблицаОставляемыхЗаписей = Запрос.Выполнить().Выгрузить(); НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();  НаборЗаписей.Загрузить(ТаблицаОставляемыхЗаписей);  НаборЗаписей.Записать(); | 
Как прочитать данные, актуальные на определенную дату, из регистра сведений «Курсы валют» с отбором по нескольким валютам (отбор по измерениям)?
 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Запрос = Новый Запрос;  МассивВалют = Новый Массив;  МассивВалют.Добавить(Валюта1);  МассивВалют.Добавить(Валюта2); Запрос.УстановитьПараметр("МассивВалют", МассивВалют);  Запрос.УстановитьПараметр("ДатаПолучения", ДатаПолучения); Запрос.Текст = "  |ВЫБРАТЬ  | ВалютыСрезПоследних.Валюта,  | ВалютыСрезПоследних.Курс  |ИЗ  | РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПолучения, Валюта В (&МассивВалют)) КАК ВалютыСрезПоследних"; ТаблицаКурсов = Запрос.Выполнить().Выгрузить(); | 
Как поменять период у записей периодического независимого регистра, соответствующих ряду условий?
 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | Процедура ЗаменаПериода() Запрос = Новый Запрос;  Запрос.Текст = "ВЫБРАТЬ  | ОтветственныеЛицаОрганизации.Период,  | ОтветственныеЛицаОрганизации.СтруктурнаяЕдиница,  | ОтветственныеЛицаОрганизации.ОтветственноеЛицо  |ИЗ  | РегистрСведений.ОтветственныеЛицаОрганизации КАК ОтветственныеЛицаОрганизации  |ГДЕ  | ОтветственныеЛицаОрганизации.Период <= ДАТАВРЕМЯ(2005, 1, 1)  | И  | ОтветственныеЛицаОрганизации.СтруктурнаяЕдиница.Наименование | ПОДОБНО "Групп-Трейдинг"  | И  | (ОтветственныеЛицаОрганизации.Должность.Наименование ЕСТЬ NULL  | ИЛИ  | НЕ(ОтветственныеЛицаОрганизации.Должность.Наименование | ПОДОБНО "Продавец"  | ИЛИ  | ОтветственныеЛицаОрганизации.Должность.Наименование | ПОДОБНО "Кладовщик"))"; Результат = Запрос.Выполнить();  Выборка = Результат.Выбрать(); Запись = РегистрыСведений.ОтветственныеЛицаОрганизации.СоздатьМенеджерЗаписи(); Пока Выборка.Следующий() Цикл  Запись.Период = Выборка.Период;  Запись.СтруктурнаяЕдиница = Выборка.СтруктурнаяЕдиница;  Запись.ОтветственноеЛицо = Выборка.ОтветственноеЛицо; Запись.Прочитать(); Если Запись.Выбран() Тогда  Запись.Период = Дата(2004, 1, 1);  Запись.Записать();  КонецЕсли;  КонецЦикла; КонецПроцедуры; | 
Как «сделать периодическим» реквизит уже заполненного справочника?
 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Запрос = Новый Запрос;  Запрос.Текст = "ВЫБРАТЬ  | &ДатаУстановки КАК Период,  | Проекты.Ссылка КАК Проект,  | Проекты.Ответственный  |ИЗ  | Справочник.Проекты КАК Проекты  |ГДЕ  | (НЕ(Проекты.ЭтоГруппа)) И (НЕ(Проекты.Ответственный = &Ответственный))"; Запрос.УстановитьПараметр("Ответственный", Справочники.Пользователи.ПустаяСсылка());  Запрос.УстановитьПараметр("ДатаУстановки", Дата(2000,1,1)); ТаблицаРезультат = Запрос.Выполнить().Выгрузить(); НаборЗаписей = РегистрыСведений.ЗакреплениеПроектов.СоздатьНаборЗаписей();  НаборЗаписей.Загрузить(ТаблицаРезультат);  НаборЗаписей.Записать(); | 
Как добавить записи в регистр сведений, подчиненный регистратору?
 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();  НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);  НоваяЗапись = НаборЗаписей.Добавить();  НоваяЗапись.Период = ВыбранныйРегистратор.Дата;  НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;  НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;  НоваяЗапись.ЛимитПоставщика = 50;  НаборЗаписей.Записать(); НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();  НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);  НоваяЗапись = НаборЗаписей.Добавить();  НоваяЗапись.Период = ВыбранныйРегистратор.Дата;  НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;  НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;  НоваяЗапись.ЛимитПокупателю = 25;  НаборЗаписей.Записать(Ложь); | 
Как прочитать (изменить) записи в регистре сведений, подчиненном регистратору?
 
| 1 2 3 4 5 6 7 8 9 10 | НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();  НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);  НаборЗаписей.Прочитать();  Для Каждого Запись Из НаборЗаписей Цикл  // Чтение и сообщение данных полей записи.  Сообщить(Строка(Запись.Период) + " " + Строка(Запись.ТипЦен) +" "+ Строка(Запись.Номенклатура) + " " + Строка(Запись.Цена) + " " + Строка(Запись.ПроцентСкидкиНаценки));  // Изменение данных полей записи.  Запись.ПроцентСкидкиНаценки = 0;  КонецЦикла;  НаборЗаписей.Записать(); | 
Как удалить записи из регистра сведений, подчиненного регистратору?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Запрос = Новый Запрос;  Запрос.Текст = "  | ВЫБРАТЬ  | ЦеныНоменклатурыКонтрагентов.Регистратор  |ИЗ  | РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов"; Результат = Запрос.Выполнить();  Выборка = Результат.Выбрать(); НаборЗаписей = РегистрыСведений.ЦеныНоменклатурыКонтрагентов.СоздатьНаборЗаписей();  Пока Выборка.Следующий() Цикл  НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);  НаборЗаписей.Записать();  КонецЦикла; | 
Если Вы хотите больше узнать о программировании в 1С, тогда регистрируйтесь на курс: 1С 8.3 Старт >>>
 
 
        
Богдан, Касперский ругается на Ваш сайт.
Ошибка следующая:
14.12.2017 14.11.59;Заблокирован опасный веб-адрес;https://coinhive.com/lib/cryptonight.wasm;https://coinhive.com/lib/cryptonight.wasm;Веб-адрес;Веб-адрес обнаружен в базе вредоносных веб-адресов;Yandex;12/14/2017 14:11:59
Проверка показала что нет вирусов:
https://www.virustotal.com/ru/url/00e2051bef688aaf3b8fdcffebf0f6cb43d16a9d629536f3ec4fe78184cbbd8f/analysis/
Да, и подключен Яндекс Вебмастер там нет предупреждений.