Работа с набором записей регистра сведений 8.3 (8.2)

Набор записей регистра сведений 1С

Разберем один из объектов, при помощи которого можно записывать данные в регистр сведений 1С. Набор записей регистра сведений. Если при помощи менеджера записей регистра сведений мы могли работать в регистре только с одной записью, то при помощи набора можно создавать (удалять, редактировать) любое количество записей.

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

Периодические регистры сведений

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

Для создания набора записи регистра сведений необходимо использовать метод СоздатьНаборЗаписей менеджера регистра сведений.

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

После выполнения данного метода будет создан набор записей регистра сведений, т.е.  переменная НаборЗаписей кода выше имеет тип РегистрСведенийНаборЗаписей.ЦеныНаТопливо. Причем он будет создан абсолютно пустым!

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

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

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

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

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

В этом случае записи (которых нет) из набора не заместят записи из регистра, и данные не очистятся.

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

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

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

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

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

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

Если мы попытаемся еще раз записать точно такой же набор данных, то возникнет ошибка «Запись с такими ключевыми полями существует!»

Ошибка Запись с такими ключевыми полями существует

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

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

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

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

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

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

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

 

Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

Книга «Основы разработки в 1С: Такси»

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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

20 + шесть =