База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как добавить удаление записей из регистра сведений в цикл 1С? › RE: Как добавить удаление записей из регистра сведений в цикл 1С?
19 мая 2025 в 11:00
#32587

Участник
Чтобы добавить в цикл удаление записей из регистра сведений на основе выборки запроса, вам нужно использовать менеджер записи для соответствующего регистра сведений. Вот как это можно сделать:
1С (Код)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 1C ЗапросПоискРС = Новый Запрос; ЗапросПоискРС.Текст = "ВЫБРАТЬ | ТЗ.Номенклатуракод КАК Номенклатура, | ТЗ.Спецификациякод КАК Спецификация, | ТЗ.Контрагент КАК Контрагент, | ТЗ.Договорконтрагентакод КАК Договорконтрагента, | ТЗ.Линиякод КАК Линия |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗ КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | НоменклатураКонтрагентов.Номенклатура КАК Номенклатура, | НоменклатураКонтрагентов.Контрагент КАК Контрагент, | НоменклатураКонтрагентов.ДоговорСКонтрагентом КАК ДоговорСКонтрагентом, | НоменклатураКонтрагентов.Линия КАК Линия, | НоменклатураКонтрагентов.Спецификация КАК Спецификация |ИЗ | ТЗ КАК ТЗ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ПО (ТЗ.Номенклатура = НоменклатураКонтрагентов.Номенклатура.Код) | И (ТЗ.Контрагент = НоменклатураКонтрагентов.Контрагент) | И (ТЗ.Договорконтрагента = НоменклатураКонтрагентов.ДоговорСКонтрагентом.Код) | И (ТЗ.Линия = НоменклатураКонтрагентов.Линия.Код) | И (ТЗ.Спецификация = НоменклатураКонтрагентов.Спецификация.Код)" ; ЗапросПоискРС.УстановитьПараметр("ТЗ", "ТаблицаЗначений"); Выборка = ЗапросПоискРС.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл // Создаем менеджер записи для регистра сведений МенеджерЗаписи = РегистрыСведений.НоменклатураКонтрагентов.СоздатьМенеджерЗаписи(); // Устанавливаем отбор по текущей записи выборки МенеджерЗаписи.Отбор.Номенклатура.Установить(Выборка.Номенклатура); МенеджерЗаписи.Отбор.Контрагент.Установить(Выборка.Контрагент); МенеджерЗаписи.Отбор.ДоговорСКонтрагентом.Установить(Выборка.ДоговорСКонтрагентом); МенеджерЗаписи.Отбор.Линия.Установить(Выборка.Линия); МенеджерЗаписи.Отбор.Спецификация.Установить(Выборка.Спецификация); // Читаем записи из регистра МенеджерЗаписи.Прочитать(); // Если запись найдена, удаляем ее Если МенеджерЗаписи.Выбран() Тогда МенеджерЗаписи.Удалить(); КонецЕсли; КонецЦикла; |
В этом коде мы создаем менеджер записи для регистра сведений НоменклатураКонтрагентов
, устанавливаем отбор по полям, полученным из выборки, и затем удаляем запись, если она найдена.