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