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

Как добавить удален...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

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

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

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



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

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

ЗапросПоискРС.УстановитьПараметр("ТЗ", "ТаблицаЗначений");

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

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



   
ОтветитьЦитата