База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как добавить удаление записей из регистра сведений в цикл 1С? › RE: Как добавить удаление записей из регистра сведений в цикл 1С?
19 мая 2025 в 11:00
#32587
Чтобы добавить в цикл удаление записей из регистра сведений на основе выборки запроса, вам нужно использовать менеджер записи для соответствующего регистра сведений. Вот как это можно сделать:
1C
ЗапросПоискРС = Новый Запрос;
ЗапросПоискРС.Текст =
"ВЫБРАТЬ
| ТЗ.Номенклатуракод КАК Номенклатура,
| ТЗ.Спецификациякод КАК Спецификация,
| ТЗ.Контрагент КАК Контрагент,
| ТЗ.Договорконтрагентакод КАК Договорконтрагента,
| ТЗ.Линиякод КАК Линия
|ПОМЕСТИТЬ ТЗ
|ИЗ
| &ТЗ КАК ТЗ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| НоменклатураКонтрагентов.Номенклатура КАК Номенклатура,
| НоменклатураКонтрагентов.Контрагент КАК Контрагент,
| НоменклатураКонтрагентов.ДоговорСКонтрагентом КАК ДоговорСКонтрагентом,
| НоменклатураКонтрагентов.Линия КАК Линия,
| НоменклатураКонтрагентов.Спецификация КАК Спецификация
|ИЗ
| ТЗ КАК ТЗ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
| ПО (ТЗ.Номенклатура = НоменклатураКонтрагентов.Номенклатура.Код)
| И (ТЗ.Контрагент = НоменклатураКонтрагентов.Контрагент)
| И (ТЗ.Договорконтрагента = НоменклатураКонтрагентов.ДоговорСКонтрагентом.Код)
| И (ТЗ.Линия = НоменклатураКонтрагентов.Линия.Код)
| И (ТЗ.Спецификация = НоменклатураКонтрагентов.Спецификация.Код)"
;
ЗапросПоискРС.УстановитьПараметр("ТЗ", "ТаблицаЗначений");
Выборка = ЗапросПоискРС.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// Создаем менеджер записи для регистра сведений
МенеджерЗаписи = РегистрыСведений.НоменклатураКонтрагентов.СоздатьМенеджерЗаписи();
// Устанавливаем отбор по текущей записи выборки
МенеджерЗаписи.Отбор.Номенклатура.Установить(Выборка.Номенклатура);
МенеджерЗаписи.Отбор.Контрагент.Установить(Выборка.Контрагент);
МенеджерЗаписи.Отбор.ДоговорСКонтрагентом.Установить(Выборка.ДоговорСКонтрагентом);
МенеджерЗаписи.Отбор.Линия.Установить(Выборка.Линия);
МенеджерЗаписи.Отбор.Спецификация.Установить(Выборка.Спецификация);
// Читаем записи из регистра
МенеджерЗаписи.Прочитать();
// Если запись найдена, удаляем ее
Если МенеджерЗаписи.Выбран() Тогда
МенеджерЗаписи.Удалить();
КонецЕсли;
КонецЦикла;
В этом коде мы создаем менеджер записи для регистра сведений `НоменклатураКонтрагентов`, устанавливаем отбор по полям, полученным из выборки, и затем удаляем запись, если она найдена.