Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
27 сен 2021, 00:11

Удаление строк из ТЧ документа с помощью внешней обработки

Автор DragonBreathCocktail, 14 сен 2021, 16:26

0 Пользователей и 1 гость просматривают эту тему.

DragonBreathCocktail

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

LexaK

 Может, как вариант, рассмотрите обработку Групповое изменение реквизитов?
И такая куча кода не нужна будет.
ответ Понравился? (в смысле пригодился?)

DragonBreathCocktail

@LexaK, Это на управляемой форме, разве не так? У меня обычная.

Ивашка


Yotram

Цитата: DragonBreathCocktail от 14 сен 2021, 16:26для каждого стр из выборка[тч.Значение] цикл
                  если СписокТовары.найти(стр.товар)<>Неопределено тогда
                     надоЗапис=1;
                     СписокУдалСтр.Добавить(стр);
                  КонецЕсли;
               КонецЦикла;

1. Возможно у какой то таблицы "Товары" нет колонки "товар"?
2. Почему бы вместо перебора таблицы не воспользоваться прекрасной функцией "НайтиСтроки()"?
3. Рекомендую обратить внимание и изучить функцию "НайтиПоСсылкам()"

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск