Создать менеджер записи 1с

Создать менеджер записи 1с

Регистры сведений в 1С предназначены для хранения произвольных данных в разрезе нескольких измерений и, при необходимости, в разрезе времени. Рассмотрим подробнее работу с этим прикладным объектом.

Предназначение регистра сведений

Регистры сведений в 1С — это прикладные объекты конфигурации для хранения данных в структурированном виде (в разрезе измерений). Например, в регистре сведений можно хранить курсы валют в разрезе валют, цены номенклатуры в разрезе номенклатур, ФИО физических лиц в разрезе физических лиц и т.д.

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

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

Изменение данных в регистре может осуществляться как вручную, так и при помощи документов. Режим записи в регистр определяет разработчик на этапе проектирования:

Физически регистр сведений представляет собой таблицу, в которой хранятся следующие данные:

  • измерения — описывают разрезы, в которых хранится информация;
  • период — поле, используемое для разворота данных по времени. Поле добавляется автоматически при указании свойства «Периодичность», отличного от «Непериодический»;
  • регистратор — поле, используемое для хранения документа, с которым связана запись. Поле добавляется автоматически при указании свойства «Режим записи» в значение «Подчинение регистратору»;
  • ресурсы — непосредственно хранят информацию для комбинации измерений;
  • реквизиты — дополнительная произвольная информация, относящаяся к конкретной записи регистра.

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

Добавление записей

Программно добавить записи в регистр сведений можно при помощи:

  • объекта НаборЗаписей ;
  • объекта МенеджерЗаписи .

Объект МенеджерЗаписи можно использовать только для работы с независимыми регистрами. Причем можно обрабатывать только одну запись. Объект предназначен в основном для интерактивной работы, но программно с ним также можно работать. На системном уровне МенеджерЗаписи использует объект НаборЗаписей .

Общая схема добавления записей в регистр сведений при помощи объекта НаборЗаписей выглядит так:

  1. создание объекта НаборЗаписей ;
  2. наложение отборов на измерения, период (если регистр периодический) и регистратора (если регистр подчинен регистратору);
  3. добавление и заполнение значений полей записей;
  4. запись набора записей.

// Добавление записи в независимый непериодический регистр сведений
НаборЗаписей = РегистрыСведений . ВерсииПодсистем . СоздатьНаборЗаписей (); // Этап 1
НаборЗаписей . Отбор . ИмяПодсистемы . Установить ( ИмяПодсистемы ); // Этап 2
// Этап 3
НоваяЗапись = НаборЗаписей . Добавить ();
НоваяЗапись . ИмяПодсистемы = ИмяПодсистемы ;
НоваяЗапись . Версия = НомерВерсии ;
НаборЗаписей . Записать (); // Этап 4

// Добавление записи в независимый периодический регистр сведений
НаборЗаписей = РегистрыСведений . КурсыВалют . СоздатьНаборЗаписей (); // Этап 1
// Этап 2
НаборЗаписей . Отбор . Валюта . Установить ( Доллар );
НаборЗаписей . Отбор . Период . Установить ( НачалоДня ( ТекущаяДата ()));
// Этап3
НоваяЗапись = НаборЗаписей . Добавить ();
НоваяЗапись . Период = ТекущаяДата ();
НоваяЗапись . Валюта = Доллар ;
НоваяЗапись . Курс = 57.92 ;
НоваяЗапись . Кратность = 1 ;
НаборЗаписей . Записать (); // Этап 4

Общая схема добавления записей в регистр сведений при помощи объекта МенеджерЗаписи выглядит так:

  1. создание объекта МенеджерЗаписи ;
  2. заполнение значений полей записи;
  3. запись записи.

// Добавление записи в независимый непериодический регистр сведений
Запись = РегистрыСведений . ВерсииПодсистем . СоздатьМенеджерЗаписи (); // Этап 1

// Этап 2
Запись . ИмяПодсистемы = ИмяПодсистемы ;
Запись . Версия = НомерВерсии ;

Запись . Записать (); // Этап 3

// Добавление записи в независимый периодический регистр сведений
Запись = РегистрыСведений . КурсыВалют . СоздатьМенеджерЗаписи (); // Этап 1

// Этап 2
Запись . Период = ТекущаяДата ();
Запись . Валюта = Доллар ;
Запись . Курс = 57.92 ;
Запись . Кратность = 1 ;

Читайте также:  Ammyy admin или teamviewer сравнение

Запись . Записать (); // Этап 3

Изменение записей

Изменять существующие записи регистров сведений возможно при помощи объектов НаборЗаписей и МенеджерЗаписи . Ограничения объекта МенеджерЗаписи были описаны в разделе Добавление записей.

Общая схема редактирования записей регистров сведений:

  1. создание объекта НаборЗаписей или МенеджерЗаписи ;
  2. наложение отборов;
  3. чтение записей базы данных, соответствующих наложенным отборам;
  4. редактирование прочитанных записей;
  5. запись отредактированных записей.

// Редактирование записей с использованием объекта НаборЗаписей
НаборЗаписей = РегистрыСведений . КурсыВалют . СоздатьНаборЗаписей (); // Этап 1
// Этап 2
НаборЗаписей . Отбор . Период . Установить ( ДатаКурса );
НаборЗаписей . Отбор . Валюта . Установить ( Доллар );
НаборЗаписей . Прочитать (); // Этап 3
Для Каждого Запись Из НаборЗаписей Цикл
Запись . Курс = 57.84 ; // Этап 4
КонецЦикла;
НаборЗаписей . Записать (); // Этап 5

// Редактирование записей с использованием объекта МенеджерЗаписи
Запись = РегистрыСведений . КурсыВалют . СоздатьМенеджерЗаписи (); // Этап 1
// Этап 2
Запись . Период = ДатаКурса ;
Запись . Валюта = Доллар ;
Запись . Прочитать (); // Этап 3
Если Запись . Выбран () Тогда // Проверка, что запись существует
Запись . Курс = 57.92 ; // Этап 4
Запись . Записать (); // Этап 5
КонецЕсли;

Чтение записей

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

Запрос = Новый Запрос ;
Запрос . Текст =
«ВЫБРАТЬ
| КурсыВалют.Период,
| КурсыВалют.Валюта,
| КурсыВалют.Курс
|ИЗ
| РегистрСведений.КурсыВалют КАК КурсыВалют» ;

Выборка = Запрос . Выполнить (). Выбрать ();
Пока Выборка . Следующий () Цикл
// обход результата выполнения запроса
КонецЦикла;

Для периодических регистров сведений есть возможность получить наиболее поздние записи, период которых меньше указанной даты — срез последних, и наиболее ранние записи, период которых больше указанной даты — срез первых. Для получения среза первых и среза последних запросом необходимо использовать одноименные виртуальные таблицы, в параметрах которых сразу можно задать дату среза и отборы. Отборы, если они необходимы, рекомендуется накладывать именно в параметрах виртуальных таблиц, т.к. это позволяет ускорить выполнение запроса.

// Получение записи, у которой валюта равна значению из переменной «ВыбраннаяВалюта» и период МЕНЬШЕ или равен значению из переменной «ВыбраннаяДата»
Запрос = Новый Запрос ;
Запрос . Текст =
«ВЫБРАТЬ
| КурсыВалютСрезПоследних.Период,
| КурсыВалютСрезПоследних.Валюта,
| КурсыВалютСрезПоследних.Курс
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(&Период, Валюта = &Валюта) КАК КурсыВалютСрезПоследних» ;

Запрос . УстановитьПараметр( «Валюта» , ВыбраннаяВалюта );
Запрос . УстановитьПараметр( «Период» , ВыбраннаяДата );

Выборка = Запрос . Выполнить (). Выбрать ();
Пока Выборка . Следующий () Цикл
// обход результата выполнения запроса
КонецЦикла;

// Получение записи, у которой валюта равна значению из переменной «ВыбраннаяВалюта» и период БОЛЬШЕ или равен значению из переменной «ВыбраннаяДата»
Запрос = Новый Запрос ;
Запрос . Текст =
«ВЫБРАТЬ
| КурсыВалютСрезПервых.Период,
| КурсыВалютСрезПервых.Валюта,
| КурсыВалютСрезПервых.Курс
|ИЗ
| РегистрСведений.КурсыВалют.СрезПервых(&Период, Валюта = &Валюта) КАК КурсыВалютСрезПервых» ;

Запрос . УстановитьПараметр( «Валюта» , ВыбраннаяВалюта );
Запрос . УстановитьПараметр( «Период» , ВыбраннаяДата );

Выборка = Запрос . Выполнить (). Выбрать ();
Пока Выборка . Следующий () Цикл
// обход результата выполнения запроса
КонецЦикла;

Кроме чтения запросом возможно использование методов объектной модели.

Для непериодических регистров сведений:

  • Выбрать ( Отбор >, Порядок >) — выбирает записи с указанным отбором;
  • ВыбратьПоРегистратору ( Регистратор >) — выбирает все записи указанного регистратора;
  • Получить ( Отбор >) — получает ресурсы записи с отбором по всем измерениям.

Для периодических регистров сведений:

  • Выбрать ( НачалоИнтервала >, КонецИнтервала >, Отбор >, Порядок >) — выбирает записи с указанным отбором, у которых период находится между и ;
  • ВыбратьПоРегистратору ( Регистратор >) — выбирает все записи указанного регистратора;
  • Получить ( Период >, Отбор >) — получает ресурсы записи с отбором по всем измерениям и периоду;
  • ПолучитьПервое ( НачалоПериода >, Отбор >) — получает ресурсы наиболее ранней записи, соответствующей указанным периоду и отбору;
  • ПолучитьПоследнее ( КонецПериода >, Отбор >) — получает ресурсы наиболее поздней записи, соответствующей указанным периоду и отбору;
  • СрезПервых ( НачалоПериода >, Отбор >) — получает таблицу наиболее ранних записей, соответствующую указанным периоду и отбору;
  • СрезПоследних ( КонецПериода >, Отбор >) — получает таблицу наиболее поздних записей, соответствующую указанным периоду и отбору.
Читайте также:  Аваст автоматически снимает деньги с банковской карты

Удаление записей

Для удаления записи(записей) в независимом регистре сведений необходимо:

  1. создать набор записей;
  2. наложить требуемые отборы на измерения и период (если регистр периодический);
  3. записать набор записей без предварительного чтения.

НаборЗаписей = РегистрыСведений . КурсыВалют . СоздатьНаборЗаписей ();

НаборЗаписей . Отбор . Валюта . Установить ( Доллар );
НаборЗаписей . Отбор . Период . Установить ( НачалоДня ( ТекущаяДата ()));

Для удаления записей в подчиненном регистре сведений необходимо:

  1. создать набор записей;
  2. наложить отбор на регистратора;
  3. записать набор записей без предварительного чтения.

НаборЗаписей = РегистрыСведений . ЦеныНоменклатуры . СоздатьНаборЗаписей ();
НаборЗаписей . Отбор . Регистратор . Установить ( СсылкаНаДокументРегистратор );
НаборЗаписей . Записать ();

Очистка регистра сведений

Для удаления всех записей в независимом регистре сведений достаточно записать набор записей этого регистра без установки отборов:

НаборЗаписей = РегистрыСведений . КурсыВалют . СоздатьНаборЗаписей ();
НаборЗаписей . Записать ();

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

  1. получить перечень ссылок всех регистраторов регистра сведений;
  2. последовательно записать пустой набор записей с отбором по регистраторам из пункта 1.

Запрос = Новый Запрос ( «ВЫБРАТЬ
| ЦеныНоменклатуры.Регистратор
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры» );

Выборка = Запрос . Выполнить (). Выбрать ();

НаборЗаписей = РегистрыСведений . ЦеныНоменклатуры . СоздатьНаборЗаписей ();
Пока Выборка . Следующий () Цикл
НаборЗаписей . Отбор . Регистратор . Установить ( Выборка . Регистратор );
НаборЗаписей . Записать ();
КонецЦикла;

Остались вопросы?
Спросите в комментариях к статье.

6 комментариев

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

Не понятно за счет чего может быть профит при записи набора записей независимого регистра сведений. Можете пояснить?

Работа платформы с регистрами сведений несколько раз менялась. 8.3 стала более оптимальной и как бы мне не хотелось «потыкать палочкой» в 8.1 и в ранние версии 8.2, дабы показать как все было плохо, решил этого не делать. Кому станет любопытно «как было» — получит мотивацию изучить вопрос.

Зачем накладывать Отбор, когда создаётся новый набор записей?

Регистр сведений 1С 8 — объект метаданных, предназначенный для хранения справочной информации в разрезе определенных разработчиком измерений.

Типичный пример использования регистра сведений — хранение информации о курсе валют в разрезе валюты и периода.

Рассмотрим подробнее свойства и настройки регистра сведений.

Настройка и свойства регистра сведений 1С 8

Два главных свойства регистра сведения — Периодичность и Режим записи.

Это уникальные свойства регистра сведений, которых больше нет ни у одного объекта метаданных. Рассмотрим их подробнее.

Периодичность регистра сведений 1C

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

Читайте также:  Хонор 7с как установить фото на контакт

Периодичность может принимать следующие значения:

  • Непериодический
  • В пределах секунды
  • В пределах дня
  • В пределах месяца
  • В пределах квартала
  • В пределах года

Получите 267 видеоуроков по 1С бесплатно:

При выборе периодичности, отличной от варианта Непериодический, система будет контролировать уникальность записей в пределах заданного промежутка времени. Если запись не уникальна, система 1C выдаст сообщение Запись с такими ключевыми полями существует! и не даст произвести запись в базу данных.

А одна из главных особенностей периодического регистра сведений — возможность получать готовые значения «Среза первых» и «Среза последних». Эта информация позволяет очень быстро получить из базы данных информацию о последнем (первом) установленном значении на определенную дату.

Режим записи регистра сведений

В 1С 8.2 и 8.3 это свойство может быть либо в значении «Независимый», либо — «Подчинение регистратору». В первом случае записи можно будет произвести как программно, так и из формы списка регистра сведений. Во втором случае обязательно указание документа-регистратора записи. Это накладывает определенные ограничения, но в то же время открывает новые возможности.

Свойства измерения регистра сведений

Также следует обратить внимание на палитру свойств измерений регистра сведений 1С 8.3. Особенно на флаги Ведущее и Основной отбор:

  • Ведущее — свойство измерения, подразумевающее под собой информацию о том, что без значения этого измерения запись регистра не имеет смысл. На деле это означает что система при удалении значения из измерения удаляет еще и запись регистра с «Ведущим» измерением. Может быть установлено только одно измерение.
  • Основной отбор — если регистр независимый, по этим измерениям будет устанавливаться регистрация изменений для плана обмена. Аналогично использование Основной отбор по периоду включает основной отбор для период для периодических регистров.

О других объектах системы 1С можно прочитать в разделе конфигурирование 1С.

Программная запись в регистр сведений 1С

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

Использование менеджера записи:

НоваяЗапись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
НоваяЗапись.Валюта = Справочники.Валюты.НайтиПоНаименованию(«USD»);
НоваяЗапись.Период = Дата(31,12,2016);
НоваяЗапись.Курс = 100;
НоваяЗапись.Кратность = 1;
НоваяЗапись.Записать();

Использование набора записей регистра сведений 1С:

НовыйНаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
//если вы не установите отбор — удалятся все записи регистра сведений
НовыйНаборЗаписей.Отбор.Валюта.Установить(Доллар, Истина);
НовыйНаборЗаписей.Отбор.Период.Установить(Дата(31,12,2016), Истина);
//формируем непосредственно запись набора
НоваяЗаписьНабора = НовыйНаборЗаписей.Добавить();
НоваяЗаписьНабора.Валюта = Справочники.Валюты.НайтиПоНаименованию(«USD»);
НоваяЗаписьНабора.Период = Дата(31,12,2016);
НоваяЗаписьНабора.Курс = 100;
НоваяЗаписьНабора.Кратность = 1;
НовыйНаборЗаписей.Записать();

Для полной программной очистки всех записей регистра сведений можно использовать нашу обработку.

Видеолекция по регистрам сведений в 1С для начинающих:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Прочитать записи регистра сведений можно двумя способами: Через Набор Записей или Менеджер

Вот пример через набор записей:

Пример с использованием набора записей и менеджера записи:

А вот пример через менеджер записи:

Ссылка на основную публикацию
Adblock detector