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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как добавить удаление записей из регистра сведений в цикл 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #32586
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

        |ИЗ
        | ТЗ КАК ТЗ
        | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
        | ПО (ТЗ.Номенклатура = НоменклатураКонтрагентов.Номенклатура.Код)
        | И (ТЗ.Контрагент = НоменклатураКонтрагентов.Контрагент)
        | И (ТЗ.Договорконтрагента = НоменклатураКонтрагентов.ДоговорСКонтрагентом.Код)
        | И (ТЗ.Линия = НоменклатураКонтрагентов.Линия.Код)
        | И (ТЗ.Спецификация = НоменклатураКонтрагентов.Спецификация.Код)»
        ;
        ЗапросПоискРС.УстановитьПараметр(«ТЗ»,»ТаблицаЗначений»);

        Выборка = ЗапросПоискРС.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
        //
        КонецЦикла;

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

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С