Читайте дальше...
Создание набора записей регистра сведений
// Создание и заполнение набора записей регистра сведений "КурсыВалют"
Процедура ЗаписатьКурсыВалют()
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(Справочники.Валюты.НайтиПоКоду("USD"));
НаборЗаписей.Отбор.Период.Установить(НачалоМесяца(ТекущаяДата()));
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ТекущаяДата();
НоваяЗапись.Валюта = Справочники.Валюты.НайтиПоКоду("USD");
НоваяЗапись.Курс = 98.50;
НоваяЗапись.Кратность = 1;
НаборЗаписей.Записать();
КонецПроцедуры
Работа с набором записей регистра накопления
// Формирование движений по регистру накопления "Продажи" в документе
Процедура ОбработкаПроведения(Отказ, Режим)
НаборЗаписей = РегистрыНакопления.Продажи.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
Для Каждого Товар Из Товары Цикл
Запись = НаборЗаписей.Добавить();
Запись.Период = Дата;
Запись.Номенклатура = Товар.Номенклатура;
Запись.Количество = Товар.Количество;
Запись.Сумма = Товар.Сумма;
Запись.ВидДвижения = ВидДвиженияНакопления.Расход;
КонецЦикла;
НаборЗаписей.Записать();
КонецПроцедуры
Чтение существующих записей через набор
// Получение и модификация существующих записей регистра сведений
Процедура ИзменитьКурсыВалют()
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(Справочники.Валюты.НайтиПоКоду("EUR"));
НаборЗаписей.Отбор.Период.Установить(Диапазон(Дата(2025,1,1), Дата(2025,1,31)));
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
Запись.Курс = Запись.Курс * 1.05;
КонецЦикла;
НаборЗаписей.Записать();
КонецПроцедуры
Условная запись с проверкой существования
// Добавление записи только если её ещё нет
Процедура ЗаписатьЕслиНет(Период, Валюта, Курс)
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.Установить(Период);
НаборЗаписей.Отбор.Валюта.Установить(Валюта);
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() = 0 Тогда
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = Период;
НоваяЗапись.Валюта = Валюта;
НоваяЗапись.Курс = Курс;
НоваяЗапись.Кратность = 1;
НаборЗаписей.Записать();
Сообщить("Запись добавлена");
Иначе
Сообщить("Запись уже существует");
КонецЕсли;
КонецПроцедуры
Удаление записей через набор
// Удаление всех записей регистра за указанный период
Процедура ОчиститьРегистрЗаПериод(ДатаНач, ДатаКон)
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.Установить(Диапазон(ДатаНач, ДатаКон));
НаборЗаписей.Прочитать();
Пока НаборЗаписей.Количество() > 0 Цикл
НаборЗаписей.Удалить(0);
КонецЦикла;
НаборЗаписей.Записать();
Сообщить("Удалено записей: " + Строка(КоличествоУдаленных));
КонецПроцедуры
Копирование записей между наборами
// Копирование записей с изменением периода
Процедура СкопироватьНаборНаДату(НовыйПериод)
СтарыйНабор = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
СтарыйНабор.Отбор.Период.Установить(Диапазон(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата())));
СтарыйНабор.Прочитать();
НовыйНабор = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НовыйНабор.Отбор.Период.Установить(НовыйПериод);
НовыйНабор.Прочитать();
Для Каждого СтараяЗапись Из СтарыйНабор Цикл
Копия = НовыйНабор.Добавить();
ЗаполнитьЗначенияСвойств(Копия, СтараяЗапись);
Копия.Период = НовыйПериод;
КонецЦикла;
НовыйНабор.Записать(Ложь); // Ложь - не замещать существующие записи
КонецПроцедуры
Использование менеджера движений для пакетной записи нескольких регистров
// Запись движений в несколько регистров в рамках одной транзакции
Процедура ПровестиДокументПоРегистрам()
МенеджерДвижений = Новый МенеджерДвижений;
// Регистр "Продажи"
НаборПродажи = МенеджерДвижений.РегистрыНакопления.Продажи;
Запись1 = НаборПродажи.Добавить();
Запись1.Период = Дата;
Запись1.Номенклатура = Товар;
Запись1.Количество = 10;
Запись1.ВидДвижения = ВидДвиженияНакопления.Расход;
// Регистр "Заказы"
НаборЗаказы = МенеджерДвижений.РегистрыНакопления.Заказы;
Запись2 = НаборЗаказы.Добавить();
Запись2.Период = Дата;
Запись2.Контрагент = Контрагент;
Запись2.Сумма = 50000;
Запись2.ВидДвижения = ВидДвиженияНакопления.Приход;
МенеджерДвижений.Записать();
КонецПроцедуры
Примечания
// Важные особенности работы с набором записей:
// 1. Набор записей читает данные в соответствии с установленным отбором
// 2. Метод Прочитать() загружает существующие записи в набор
// 3. Метод Записать() сохраняет все изменения (добавления, изменения, удаления)
// 4. При работе с регистрами накопления обязательно указывать ВидДвижения
// 5. МенеджерДвижений позволяет атомарно записывать движения в несколько регистров
// 6. Диапазон в отборе задается через Функция Диапазон(Начало, Конец)








