Как добавить или удалить запись в регистре сведений 1с

В программе 1С есть специальные объекты с данными – регистры сведений. В них с определенной периодичностью накапливается разного рода справочная информация. В некоторых случаях возникает необходимость очистить регистры сведений 1С от информации. Как это сделать читайте в этой статье.

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

  • Амортизационные группы ОКОФ;
  • Аналитика учета затрат;
  • База распределения НДС;
  • Курсы валют;
  • Применяемые тарифы страховых взносов;
  • Расчет амортизации и т.д.

Все регистры в 1С 8.3 можно увидеть в разделе «Все функции» (2), нажав на стрелочку в левом верхнем углу экрана (1).

Как добавить или удалить запись в регистре сведений 1С

В окне «Все функции» вы можете увидеть все регистры сведений (3):

Как добавить или удалить запись в регистре сведений 1С

Иногда возникает необходимость очистить тот или иной регистр от лишней информации. Очистить регистр сведений в 1С 8.3 можно:

  1. Программным способом;
  2. С помощью специальной обработки.

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

Быстрый перенос бухгалтерии в БухСофт

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

Программная очистка подразумевает ввод программного кода в специальном окне. Для этого зайдите в раздел «Администрирование» (1) программы 1С 8.3 Бухгалтерия  и нажмите на ссылку «Обслуживание» (2).

Как добавить или удалить запись в регистре сведений 1С

В открывшемся окне раскройте меню «Корректировка данных» (3) и кликните на ссылку «Групповое изменение реквизитов» (4).

Как добавить или удалить запись в регистре сведений 1С

В окне «Групповое изменение реквизитов» зайдите во вкладку «Выполнить произвольный алгоритм» (5) и в окне (6) введите программный код:

НаборЗаписей = РегистрыСведений. [ИмяРегистра].СоздатьНаборЗаписей();

НаборЗаписей.Записать();

Вместо поля [ИмяРегистра] нужно вписать регистр сведений, который вы хотите очистить. В нашем примере очищаем заполненный регистр сведений «Список задач». Вводим алгоритм в окно и нажимаем кнопку «Выполнить» (7).

Как добавить или удалить запись в регистре сведений 1С

Гость, для Вас открыт бесплатный доступ к чату с бухгалтером-экспертом

Закажите обратный звонок на подключение или позвоните: 8 (800) 222-18-27 (бесплатно по РФ).

Очистка регистра с помощью обработки

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

Как добавить или удалить запись в регистре сведений 1С

В меню «Открытие» кликните на скачанном файле (3) и нажмите кнопку «Открыть» (4). Откроется окно обработки.

Как добавить или удалить запись в регистре сведений 1С

В окне обработки напишите название регистра сведений (5) и нажмите кнопку «Очистить регистр» (6). После этого данные из указанного регистра будут удалены.

Как добавить или удалить запись в регистре сведений 1С

Названия регистров сведений, которые нужно указывать в программном коде и в обработке не совпадают с именами регистров, которые мы видим в окне «Все функции» в пользовательском режиме. Чтобы узнать название регистра воспользуйтесь конфигуратором 1С. Как это сделать читайте в следующей главе.

Как найти название регистра сведений

Зайдите в 1С в режиме конфигурации. Далее в разделе «Конфигурация» (1) в пункте меню «Конфигурация базы данных» нажмите на «Открыть конфигурацию БД» (2). Откроется окно с данными конфигурации.

Как добавить или удалить запись в регистре сведений 1С

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

В окне видны различные показатели, которые характеризуют данные, находящие в выбранном регистре. В частности, в поле «Имя» (4) мы видим название регистра, которое нужно использовать для программного кода и различных обработок. В поле «Режим записи» (5) может быть два значения:

  1. Независимый;
  2. Подчинение регистратору.

Очистить регистр сведений программным кодом или обработкой получится только в том случае, если режим записи независимый. Если регистр подчинен регистратору, то все данные в регистре можно изменять только в документах-регистраторах. Например, регистр сведений «СпособыОтраженияРасходовПоАренднымПлатежамОСНалоговыйУчет» подчинен следующим регистраторам:

  • ВводНачальныхОстатков;
  • ИзменениеОтраженияРасходовПоЛизинговымПлатежамОС;
  • ОперацияБух;
  • ПринятиеКУчетуОС.

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

Источник: https://www.BuhSoft.ru/article/1863-kak-ochistit-registr-svedeniy-v-programme-1s

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

Регистры сведений в 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;

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

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

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

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

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

Смотри также:

Как получить реквизит от ссылочного значения на клиенте
Как из управляемой формы вызвать процедуру модуля объекта
Сортировка массива в 1С

Источник: https://pro1c8.ru/programmnaya-rabota-registr-svedenij/

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

28.02.2018

Категория: 1С:Предприятие

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

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

Как добавить или удалить запись в регистре сведений 1С

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

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

Как добавить или удалить запись в регистре сведений 1С

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

к. это позволяет ускорить выполнение запроса.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Источник: https://tokmakov.msk.ru/articles/item/8

    Профессия — 1С » Создание и удаление записей регистра сведений

    рубрики: Регистры | Дата: 12 Февраль, 2017

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

    Читайте также:  Как работать в программе autocad

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

    В качестве примера будем использовать вот такой регистр сведений

    Как добавить или удалить запись в регистре сведений 1С

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

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

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

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

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

    А поскольку мы отбор не устанавливали, то для замещения выбираются все записи регистра, и успешно замещаются пустым набором записей. И это грабли на которые иной раз наступают разработчики, которые не первый день в 1С. Кстати, если мы умышленно хотим полностью очистить регистр, то как раз именно этим методом и надо пользоваться.

    Заостряю на этом внимание, потому что достаточно часто встречается код, когда перед удалением набор записей прочитывается, потом очищается и только потом записывается. Хотя чтение и очистка набора записей здесь абсолютно излишни.

    Теперь представим, что нам надо удалить не все записи регистра, а только с конкретными значениями измерений. Алгоритм действия в этом случае такой же, только перед записью необходимо для нашего пустого набора записей установить соответствующий отбор. В статье про срез последних мы в качестве примера рассматривали этот же регистр сведений – Цена. Напомню, что там у нас были следующие записи

    Период
    Товар
    Поставщик
    Сумма
    01.01.2017 Карандаш ООО «Леспром» 10

    Источник: http://professia1c.ru/registryi/sozdanie-i-udalenie-zapisey-rs/

    Менеджер записи регистра сведений 8.3 (8.2)

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

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

    Создать менеджер регистра сведений достаточно просто, например

    МенеджерЦеныНаТопливо = РегистрыСведений.ЦеныНаТопливо;

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

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

    МенеджерЦеныНаТопливо = РегистрыСведений.ЦеныНаТопливо;
    МенеджерЗаписи =МенеджерЦеныНаТопливо.СоздатьМенеджерЗаписи();

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

    МенеджерЗаписи.Период           = ТекущаяДата();
    МенеджерЗаписи.ВидТоплива       = ВидТоплива;
    МенеджерЗаписи.ПоставщикТоплива = ПоставщикТоплива;
    МенеджерЗаписи.Цена             = Цена;
    МенеджерЗаписи.Записать();

    Объект РегистрСведенийМенеджерЗаписи позволяет управлять записью регистра сведений и применим только для независимых регистров. Доступ к записи обеспечивается путем присвоения значений полям объекта, которые соответствуют измерениям, ресурсам и реквизитам регистра. В Вашем примере это измерения Период, ВидТоплива и Поставщик, а также ресурс Цена.

    Как добавить или удалить запись в регистре сведений 1С

    Переменные, которые присваиваются полям регистра в моем случае это реквизиты управляемой формы 1С.

    Источник: https://www.1s-up.ru/menedzher-zapisi-registra-svedenij/

    Язык 1С в примерах

    Полный синтаксис (нажмите, чтобы раскрыть)

    Описание:

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

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

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

    Аргументы функции называются измерениями, а результат функции — ресурсами. В приведенном выше примере регистр «ЦеныКонкурентов» будет содержать измерения «Конкурент» и «Товар», и ресурс «Цена».

    Ресурсов может быть больше чем один: например, можно хранить оптовую и розничную цены.

    Для разворота этой информации во времени используется поле «Период» регистра. Оно не вносится в качестве измерения, а добавляется системой автоматически при создании периодического регистра.

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

    Если регистр не периодический, то поле «Период» для него не создается.

    В приведенном примере регистр «ЦеныКонкурентов» может быть непериодическим, если мы не хотим хранить историю изменения цен, а хотим иметь только актуальные цены.

    Тогда функция регистра сможет ответить на вопрос «какая сейчас цена у такого-то конкурента на такой-то товар», но не сможет ответить на вопрос «какая была цена у такого-то конкурента на такой-то товар в начале года».

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

    Действительно, по одному товару по одному конкуренту может быть только одна цена.

    Если по какой-либо причине мы можем получить несколько цен и хотим занести эту информацию в базу данных, то нам нужно создать еще одно измерение для хранения того значения, по которому эти цены могут различаться. Например, можно завести измерение «ИсточникИнформации». Тогда можно будет вводить цены конкурентов в разрезе источников.

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

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

    Эти два варианта влияют на способ внесения информации, а не на основную логику работы регистра.

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

    При этом если измерение такого регистра назначено как «ведущее» и значением измерения является ссылка на объект базы данных, то будет считаться, что запись регистра имеет смысл, только пока существует этот объект.

    Например, если назначить ведущим измерение «Конкурент», то считается, что запись имеет смысл только как информация по данному конкуренту. Соответственно, при удалении конкурента записи по нему будут удалены автоматически.

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

    В программных модулях для общих действий над регистром сведений (поиск, выбор и создание записей регистра) служит объект РегистрСведенийМенеджер..

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

    Для считывания и занесения набора записей в базу данных по определенному условию отбора служит объект РегистрСведенийНаборЗаписей.. Для динамического обхода записей регистра служит объект РегистрСведенийВыборка..

    Источник: https://helpme1c.ru/registry-svedenij-v-yazyke-1s-8-v-primerax

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

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

    Изменение существующей записи

    Для работы с одной записью используется объект «МенеджерЗаписи».

    Пример:

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

    зСтавка.Ставка = НоваяСтавка;

    зСтавка.Записать();

    зСтавка = РегистрыСведений.СтавкиПоПроектам.СоздатьМенеджерЗаписи();зСтавка.Сотрудник = ПараметрыСеанса.ТекущийСотрудник;зСтавка.Проект = ВыбПроект;зСтавка.Ставка = НоваяСтавка;

    В данном случае мы создаем менеджер записи и указываем ему поля, необходимые для точной идентификации записи. Затем изменяем одно из поле («Ставка») и записываем изменения.

    Если запись не будет найдена по указанным полям, то будет создана новая запись с указанными полями.

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

    Удаление существующей записи

    Удаление одной записи из независимого регистра сведений происходит практически так же, как и изменение этой записи:

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

    зСтавка.Удалить();

    зСтавка= РегистрыСведений.СтавкиПоПроектам.СоздатьМенеджерЗаписи();зСтавка.Сотрудник = ПараметрыСеанса.ТекущийСотрудник;зСтавка.Проект = ВыбПроект;

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

    Читайте также:  Что делать, если не запускается itunes

    Если по указанным полям найдется несколько записей, то никакого удаления также не произойдет.

    Удаление группы записей

    Если есть необходимость удалить несколько записей, по какому-либо признаку, из независимого регистра сведений, то для этого удобно использовать объект «НаборЗаписей».

    У данного объекта есть метод «Удалить()», не стоит его бояться, он удаляется записи из набора, а ни в коем случае не из регистра. Все возможные изменения непосредственно в регистре сведений происходят в результате работы метода «Записать()».

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

    Пример:

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

    зСтавки.Прочитать();

    зСтавки.Записать();

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

    В данном случае будут удалены все записи по выбранному сотруднику.

    1С настойчиво рекомендует использовать метод «Прочитать()» после установки отбора, хотя в большинстве случаев все работает и без него (поправьте, если я ошибаюсь).

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

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

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

    зСтавки.Удалить();

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

    На этом все, надеюсь данная статья Вам помогла.

    Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

    Источник: https://1c-programmer-blog.ru/programmirovanie/rabota-s-nezavisimym-registrom-svedenij.html

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

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

    Разберем примеры удаления записей из регистра сведений «Данные для обработки» некой конфигурации, регистр имеет одно измерение «Номенклатура«, тип Справочник.Номенклатура.

    Создание и запись пустого набора

    Заголовок говорит сам за себя:

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

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

    Чтение и запись порциями

    Просто берем из регистра записи порциями и обрабатываем, пока записи не кончатся:

    &НаСервере Процедура УдалитьЗаписиНаСервере() Продолжать = Истина; Пока Продолжать Цикл Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ ПЕРВЫЕ 1000 | ДанныеДляОбработки.Номенклатура |ИЗ | РегистрСведений.ДанныеДляОбработки КАК ДанныеДляОбработки»; Продолжать = Не Запрос.Выполнить().Пустой(); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл НаборЗаписей = РегистрыСведений.ДанныеДляОбработки.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(Выборка.Номенклатура); НаборЗаписей.Записать(Истина); КонецЦикла; КонецЦикла; КонецПроцедуры

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

    Чтение и запись порциями в транзакциях

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

    &НаСервере Процедура УдалитьЗаписиНаСервере() Сообщение = Новый СообщениеПользователю; Сообщение.Текст = «» + ТекущаяДата() + » Начало»; Сообщение.Сообщить(); Продолжать = Истина; Пока Продолжать Цикл Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ ПЕРВЫЕ 1000 | ДанныеДляОбработки.Номенклатура |ИЗ | РегистрСведений.ДанныеДляОбработки КАК ДанныеДляОбработки»; Продолжать = Не Запрос.Выполнить().Пустой(); Выборка = Запрос.Выполнить().Выбрать(); НачатьТранзакцию(); Пока Выборка.Следующий() Цикл НаборЗаписей = РегистрыСведений.ДанныеДляОбработки.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(Выборка.Номенклатура); НаборЗаписей.Записать(Истина); КонецЦикла; ЗафиксироватьТранзакцию(); КонецЦикла; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = «» + ТекущаяДата() + » Завершение»; Сообщение.Сообщить(); КонецПроцедуры

    Таким образом мы уменьшим количество записей в БД.

    Сравнение

    Сравним скорость удаления 1 000 000 записей порциями по 1 000 записей с использованием транзакций и без них. Используется файловая ИБ расположенная на жестком диске SATA 3(Специально используется жестки диск, а не SSD для более выраженного различия).

    Удаление порциями: 25 минут 12 секунд
    Удаление порциями с транзакциями: 15 минут 43 секунды

    Источник: https://guesto.ru/1c-udaleniye-zapisey-registra-svedeniy/

    Регистры сведений в 1c 8.2 — 8.3

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

    Во-первых регистр сведений не имеет ссылочной структуры, то есть у его записей нет уникальной ссылки, попросту свойства «Ссылка», поэтому на запись регистра сведений нельзя ссылаться.

    Во-вторых регистр сведений имеет назначаемый разработчиком состав ключевых реквизитов, называемых измерениями.

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

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

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

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

    Именно поэтому информацию, меняющуюся во времени, нужно хранить в регистре сведений, поскольку методы работы с регистром сведений позволяют использовать агрегатные таблицы «Срез первых» и «Срез последних», в которых можно получить записи, действующие на заданный момент времени.

    Ну и напоследок ответ на вопрос, как осуществлять чтение и запись регистра сведений.

    Чтение регистра сведений лучше всего осуществлять с помощью запроса.
    Работа с запросами является отдельной темой и в рамках данной статьи не рассматривается.
    Однако можно читать записи и без запроса с помощью нескольких методов объекта «РегистрСведенийМенеджер».

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

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

    Методы «СрезПервых» и «СрезПоследних» позволяют получить соответственно срез первых или последних записей, удовлетворяющих заданному в параметрах метода отбору.

    Кроме этих методов есть еще два метода, «СоздатьМенеджерЗаписи» и «СоздатьНаборЗаписей», с помощью которых можно создать соответсвенно объект «РегистрСведенийМенеджерЗаписи» или «РегистрСведенийНаборЗаписей», после чего задать значения всех или некоторых ключевых реквизитов и с помощью метода объекта «Прочитать» выполнить чтение в объект записей из базы, удовлетворяющих присвоенным значениям ключевых реквизитов.
    В итоге получаем объект, содержащий нужные нам одну или несколько записей.

    Запись же в регистр сведений производится с помощью уже упомянутых методов «СоздатьМенеджерЗаписи» и «СоздатьНаборЗаписей» объекта «РегистрСведенийМенеджер».
    Можно либо создать объект, после чего заполнить реквизиты записи или список записей и записать объект с помощью метода «Записать».

    Либо создать объект, задать значения всех или некоторых ключевых реквизитов, чтобы с помощью метода объекта «Прочитать» выполнить чтение в объект записей из базы, удовлетворяющих присвоенным значениям ключевых реквизитов, после чего выполнить метод «Очистить», после чего уже выполнить метод «Удалить» или заполнить реквизиты записи или список записей и записать объект с помощью метода «Записать».

    Как добавить запись в непериодический независимый регистр сведений?

    НаборЗаписей = РегистрыСведений.ЗначенияСвойств.СоздатьНаборЗаписей();

    НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура);
    НаборЗаписей.Отбор.Свойство.Установить(ТекущееСвойство);

    НоваяЗапись = НаборЗаписей.Добавить();
    НоваяЗапись. Номенклатура = ТекущаяНоменклатура;
    НоваяЗапись.Свойство = ТекущееСвойство;
    НоваяЗапись.Значение = ТекущееЗначение;

    НаборЗаписей.Записать();

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

    Как считать содержимое непериодического независимого регистра сведений «СобственныеКонтрагенты»?
     

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

    // Перебрать записи в цикле…
    Для Каждого Запись из НаборЗаписей Цикл
    РегистрКонтрагент = Запись.Контрагент;
    РегистрВидСвязи = Запись.ВидСвязи;
    РегистрОбъект = Запись.Объект;
    КонецЦикла;

    // … или выгрузить записи в таблицу значений.
    ТаблицаЗаписей = НаборЗаписей.Выгрузить();

    ВЫБРАТЬ
    *
    ИЗ
    РегистрыСведений.СобственныеКонтрагенты

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

    Как удалить все записи из независимого регистра сведений?
     

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

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

    Как удалить записи независимого регистра сведений с отбором по конкретной организации?
     

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

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

    Как добавить запись в периодический независимый регистр сведений?
     

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

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

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

    НаборЗаписей.Записать(Истина);

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

    Как прочитать (изменить) записи в периодическом независимом регистре сведений?
     

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

    НаборЗаписей.Прочитать();

    Для Каждого Запись Из НаборЗаписей Цикл

    // Чтение и сообщение данных полей записи.
    Сообщить(Строка(Запись.Период) + » » + Строка(Запись.Валюта) + » » + Строка(Запись.Курс));

    // Изменение данных полей записи.
    Запись.Курс = 0;

    КонецЦикла;

    НаборЗаписей.Записать();

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

    Как удалить записи в периодическом независимом регистре сведений?
     

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

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

    Как в периодическом независимом регистре сведений «КурсыВалют» удалить все записи по валютам с наименованиями «EUR» и «USD», период которых меньше 01 января 2005 года?
     

    Запрос = Новый Запрос;
    Запрос.Текст = «ВЫБРАТЬ
    | *
    |ИЗ
    | РегистрСведений.КурсыВалют КАК КурсыВалют
    |ГДЕ
    | (КурсыВалют.Период >= ДАТАВРЕМЯ(2005, 1, 1)
    | ИЛИ
    | НЕ(КурсыВалют.Валюта.Наименование ПОДОБНО «»USD»»)
    | И
    | НЕ(КурсыВалют.Валюта.Наименование ПОДОБНО «»EUR»»))»;

    ТаблицаОставляемыхЗаписей = Запрос.Выполнить().Выгрузить();

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

    | РегистрСведений.КурсыВалют КАК КурсыВалют | (КурсыВалют.Период >= ДАТАВРЕМЯ(2005, 1, 1) | НЕ(КурсыВалют.Валюта.Наименование ПОДОБНО «»USD»») | НЕ(КурсыВалют.Валюта.Наименование ПОДОБНО «»EUR»»))»;ТаблицаОставляемыхЗаписей = Запрос.Выполнить().Выгрузить();НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); НаборЗаписей.Загрузить(ТаблицаОставляемыхЗаписей);

    Как прочитать данные, актуальные на определенную дату, из регистра сведений «Курсы валют» с отбором по нескольким валютам (отбор по измерениям)?
     

    Запрос = Новый Запрос;
    МассивВалют = Новый Массив;
    МассивВалют.Добавить(Валюта1);
    МассивВалют.Добавить(Валюта2);

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

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

    ТаблицаКурсов = Запрос.Выполнить().Выгрузить();

    МассивВалют = Новый Массив; МассивВалют.Добавить(Валюта1); МассивВалют.Добавить(Валюта2);Запрос.УстановитьПараметр(«МассивВалют», МассивВалют); Запрос.УстановитьПараметр(«ДатаПолучения», ДатаПолучения);| ВалютыСрезПоследних.Валюта, | ВалютыСрезПоследних.Курс | РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПолучения, Валюта В (&МассивВалют)) КАК ВалютыСрезПоследних»;ТаблицаКурсов = Запрос.Выполнить().Выгрузить();

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

    Процедура ЗаменаПериода()

    Запрос = Новый Запрос;
    Запрос.Текст = «ВЫБРАТЬ
    | ОтветственныеЛицаОрганизации.Период,
    | ОтветственныеЛицаОрганизации.СтруктурнаяЕдиница,
    | ОтветственныеЛицаОрганизации.ОтветственноеЛицо
    |ИЗ
    | РегистрСведений.ОтветственныеЛицаОрганизации КАК ОтветственныеЛицаОрганизации
    |ГДЕ
    | ОтветственныеЛицаОрганизации.Период

    Источник: https://kuharbogdan.com/programmiruem-v-1s/registryi-svedeniy-1c-8-2-8-3/

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