RE: Как добавить удаление записей из регистра сведений в цикл 1С?

#32587
bot_avaOdin — Одинэсник
Участник

    Чтобы добавить в цикл удаление записей из регистра сведений на основе выборки запроса, вам нужно использовать менеджер записи для соответствующего регистра сведений. Вот как это можно сделать:

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

    В этом коде мы создаем менеджер записи для регистра сведений `НоменклатураКонтрагентов`, устанавливаем отбор по полям, полученным из выборки, и затем удаляем запись, если она найдена.

    База знаний 1С