1с регистр сведений параметры работы программы

Все привет. Наконец-то переходим к изучению нового объекта и на очереди у нас «Регистр сведений».

Регистр сведений — это объект, который будет хранить в себе информацию, например, о цене товаров и услуг, о курсах валют центробанка и так далее.

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

Давайте найдем строку «Регистры сведений» и добавим регистр «ЦеныОтПроизводителя» (Рисунок 1).

Рисунок 1 — Добавление регистра сведений

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

1. Периодичность — отвечает за промежуток времени, в котором будут храниться записи регистра. Может быть не периодическим или от секунды до года;

2. Режим записи — отвечает за объект, которому будут поступать данные из регистра. Это будет документ, в который будут вноситься цена автоматически.

Регистры сведений 1С на примере учебной задачи

Пока оставим эти свойства без изменений и перейдем к созданию данных.

Теперь нужно перейти на вкладку «Данные» и посмотреть какие там есть элементы (Рисунок 2).

Рисунок 2 — Вкладка с данными

Давайте по порядку:

1. Измерения — это элементы, которые будут отвечать за то, в каком разрезе будет храниться информация.

2. Ресурсы — это элементы, которые содержат хранимую информацию.

3. Реквизиты — поля для ввода данных.

Давайте создадим свои данные, чтобы посмотреть как все работает (Рисунок 3).

Рисунок 3 — Данные регистра

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

Проверим теперь в режиме пользователя, не забыв добавить регистр в подсистему (Рисунок 4).

Рисунок 4 — Выбор подсистемы

Находим у пользователя регистр (Рисунок 5) и создадим там первый элемент, указав для него товар и цену.

Рисунок 5 — Регистр сведений

попробуйте создайте еще один элемент, в котором товар будет таким же, а цена другая и вы получите уведомление (Рисунок 6).

Рисунок 6 — Уведомление

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

Рисунок 7 — Добавление нового товара

Вернемся в режим разработчика и установим периодичность в пределах дня (Рисунок 8).

Рисунок 8 — Периодичность

Теперь зайдем в пользователя и все элементы удалим из регистра (Рисунок 9).

Создадим опять два одинаковых элемента и проверим — все так же, не дает создать — установлена периодичность в пределах дня. Давайте теперь установим в пределах секунды и попробуем создать два одинаковых (Рисунок 10).

Удалось, все получилось. Такая возможность получилась лишь потому, что регистр ищет по секундам. Если создавать элемент и указать у него такое же время до секунды как и у первого, тогда платформа заблокирует его.

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

Программная работа с регистрами сведений

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

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

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

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

Читайте также:
Как пользоваться программой zet 9

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

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

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

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

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

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

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

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

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

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

  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 ;

Запись . Записать (); // Этап 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.

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

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

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

Источник: pro1c8.ru

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

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

Для регистров сведений связь с регистраторами не всегда обязательна.

Добавление записей в регистр сведений

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

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

Добавление записей с помощью объекта МенеджерЗаписи

Объект МенеджерЗаписи можно использовать только для работы с независимыми регистрами. Причем можно обрабатывать только одну запись. Таким образом, для того, чтобы в периодический, независимый регистр сведений “КурсыВалют” с измерением “Валюта” и ресурсами “Курс” и “Кратность” добавить одну запись – курс и кратность валюты на определенную дату – можно использовать следующий код:

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

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

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

Добавление записей в независимый регистр сведений помощью объекта НаборЗаписей

Добавление записей в независимый регистр сведений с помощью НабораЗаписей выполняется по следующему алгоритму:

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

Для примера выполним добавление записей в тот же регистр сведений “КурсыВалют“, предварительно установив отбор по измерению “Валюта” и периоду.

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

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

Добавить(); Запись.Период = ДатаУстановкиКурса; Запись.Валюта = Валюта; // СправочникСсылка.Валюты Запись.

Курс = ЗначениеКурсаНаДату; // Устанавливаемый курс Запись.Кратность = 1; // Кратность КурсыВалютНаборЗаписей.Записать();

Добавление записей в регистр сведений, подчиненный регистратору

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

  1. Создание объекта НаборЗаписей;
  2. Установка отбора по определенному регистратору;
  3. Заполнение записей набора;
  4. Запись набора.

// ДанныеДляПроведения — хранит данные для заполнения регистра сведений (например, выгрузка результата запроса) НаборЗаписей = РегистрыСведений.МероприятияТрудовойДеятельности.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.

Регистратор.Установить(Регистратор); ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), ДанныеДляПроведения); НаборЗаписей.

Записать();

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

Изменение записей в независимом регистре сведений

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

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

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

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

Валюта = Валюта; // СправочникСсылка.Валюты КурсыВалютМенеджерЗаписи.Прочитать(); Если КурсыВалютМенеджерЗаписи.

Выбран() Тогда КурсыВалютМенеджерЗаписи.Курс = ЗначениеКурсаНаДату; // Устанавливаемый курс КурсыВалютМенеджерЗаписи.

Кратность = 1; // Кратность КурсыВалютМенеджерЗаписи.Записать(); КонецЕсли;

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

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

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

Прочитать(); Для Каждого Запись Из КурсыВалютНаборЗаписей Цикл Запись.Курс = ЗначениеКурсаНаДату; // Устанавливаемый курс Запись.

Кратность = 1; // Кратность КонецЦикла; КурсыВалютНаборЗаписей.Записать();

Изменение записей в регистрах сведений подчиненных регистраторам

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

Изменение записей выполняется по следующему алгоритму:

  1. Создать объект НаборЗаписей;
  2. Установить отбор по определенному регистратору;
  3. Прочитать набор;
  4. Изменить записи набора;
  5. Записать набор.

Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ РАЗЛИЧНЫЕ | МероприятияТрудовойДеятельности.Регистратор КАК Регистратор |ИЗ | РегистрСведений.МероприятияТрудовойДеятельности КАК МероприятияТрудовойДеятельности»; Результат = Запрос.

Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.

Следующий() Цикл Сообщить(СтрШаблон(«Изменение записей по регистратору: %1», Выборка.Регистратор)); НаборЗаписей = РегистрыСведений.

МероприятияТрудовойДеятельности.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.

Установить(Регистратор); Для каждого Запись Из НаборЗаписей Цикл Запись.ДатаМероприятия = Дата(2021, 12, 12); КонецЦикла; НаборЗаписей.Записать(); КонецЦикла;

Удаление записи в регистре сведений

Удаление записи из независимого регистра сведений

Для удаления записи из независимого регистра сведений выполняется по следующему алгоритму:

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

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

Удаление записи из регистра сведений подчиненного регистратору

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

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

Похожие записи

  • Всплывающие подсказки
  • Вывод таблицы значений в табличный документ
  • Преобразование данных формы в массив
  • Работа с Word из 1С

Источник: codernote.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru