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

Удалить строку из ТЧ

Автор Дринкинс, 12 июл 2013, 09:25

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

Дринкинс


ТЗ = Выборка.Услуги.Выгрузить();
ДокументРеализация.Услуги.Загрузить(ТЗ);
Для каждого ТС из ДокументРеализация.Услуги Цикл
   Если ТС.Количество = 0 Тогда
      ДокументРеализация.Услуги.Удалить(ТС);
   КонецЕсли;
КонецЦикла;
      


Подскажите почему не удаляет строк?

MuI_I_Ika

Скорее всего программа просто теряет итератор. У вас цикл для каждого для используются строки для обходя цикла, а вы в момент обхода пытаетесь их удалять. Вот в какой то из моментов программа и ошибается.

Попробуйте использовать Цикл для к = 0 по ДокументРеализация.Услуги.Количество()-1 Цикл

Дринкинс

Для Стр=0 По КоличествоСтрок Цикл
    ДанныеОбхода = ДокументРеализация.Услуги.Получить(стр);
    Если ДанныеОбхода.Количество = 0 Тогда                
        ДокументРеализация.Услуги.Удалить(Стр);
    КонецЕсли;
КонецЦикла;

Так выходит за пределы
Добавлено: 12 июл 2013, 12:01


Для Стр=0 По КоличествоСтрок Цикл
    ДанныеОбхода = ДокументРеализация.Услуги.Получить(стр);
    Если ДанныеОбхода.Количество = 0 Тогда               
        ДокументРеализация.Услуги.Удалить(Стр);
    КонецЕсли;
КонецЦикла;
Значение индекса выходит за границы диапазона

Dethmontt

Для Стр=0 По КоличествоСтрок-1 Цикл
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

MuI_I_Ika

Цитата: Дринкинс от 12 июл 2013, 11:52начение индекса выходит за границы диапазона

:)

Я не спроста указал -1. Если нумерация коллекции начинается с 0, то индекс последнего элемента колеекции будет на 1 меньше, чем количество элементов в коллекции.

Дринкинс

КоличествоСтрок = ДокументРеализация.Услуги.Количество()-1;
Для Стр=0 По КоличествоСтрок Цикл
    ДанныеОбхода = ДокументРеализация.Услуги.Получить(стр);
    Если ДанныеОбхода.Количество = 0 Тогда               
        ДокументРеализация.Услуги.Удалить(Стр);
    КонецЕсли;
КонецЦикла;
Значение индекса выходит за границы диапазона
Добавлено: 12 июл 2013, 12:15


Я так понимаю раз строка удаляется то нужно количество индексов и счетчик уменьшить на один, но и при таком варианте все равно такая же ошибка.

Dethmontt

КоличествоСтрок = ДокументРеализация.Услуги.Количество()-1;
Для к=0 По КоличествоСтрок Цикл
   Если ДокументРеализация.Услуги[КоличествоСтрок-к].Количество = 0 Тогда
      ДокументРеализация.Услуги.Удалить(КоличествоСтрок-к);
   КонецЕсли;
КонецЦикла;
 
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Дринкинс

Цитата: Dethmontt от 12 июл 2013, 12:20
КоличествоСтрок = ДокументРеализация.Услуги.Количество()-1;
Для к=0 По КоличествоСтрок Цикл
   Если ДокументРеализация.Услуги[КоличествоСтрок-к].Количество = 0 Тогда
      ДокументРеализация.Услуги.Удалить(КоличествоСтрок-к);
   КонецЕсли;
КонецЦикла;
 

Спасибо большое чтото сразу так не догадался сделать.

Теги:

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

Рейтинг@Mail.ru

Поиск