Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2017, 02:45
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Удалить строку из ТЧ  (Прочитано 5071 раз)

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

Оффлайн Дринкинс

  • **
  • Сообщений: 55
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-03-27
  • Сайт: 
  • Профессия: Ученик 1С

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


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


Оффлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6558
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
Скорее всего программа просто теряет итератор. У вас цикл для каждого для используются строки для обходя цикла, а вы в момент обхода пытаетесь их удалять. Вот в какой то из моментов программа и ошибается.

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

Оффлайн Дринкинс

  • **
  • Сообщений: 55
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-03-27
  • Сайт: 
  • Профессия: Ученик 1С
Для Стр=0 По КоличествоСтрок Цикл
    ДанныеОбхода = ДокументРеализация.Услуги.Получить(стр);
    Если ДанныеОбхода.Количество = 0 Тогда                
        ДокументРеализация.Услуги.Удалить(Стр);
    КонецЕсли;
КонецЦикла;

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

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

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Для Стр=0 По КоличествоСтрок-1 Цикл
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6558
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
начение индекса выходит за границы диапазона

:)

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

Оффлайн Дринкинс

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

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

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
КоличествоСтрок = ДокументРеализация.Услуги.Количество()-1;
Для к=0 По КоличествоСтрок Цикл
   Если ДокументРеализация.Услуги[КоличествоСтрок-к].Количество = 0 Тогда
      ДокументРеализация.Услуги.Удалить(КоличествоСтрок-к);
   КонецЕсли;
КонецЦикла;
 
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Дринкинс

  • **
  • Сообщений: 55
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-03-27
  • Сайт: 
  • Профессия: Ученик 1С
КоличествоСтрок = ДокументРеализация.Услуги.Количество()-1;
Для к=0 По КоличествоСтрок Цикл
   Если ДокументРеализация.Услуги[КоличествоСтрок-к].Количество = 0 Тогда
      ДокументРеализация.Услуги.Удалить(КоличествоСтрок-к);
   КонецЕсли;
КонецЦикла;
 

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


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
154 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
46 Сообщений
andron81_81
44 Сообщений
oleg-x
44 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
BuhRust
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 138
  • Точка Скрытых: 0
  • Точка Пользователей: 0

Нет пользователей онлайн.

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal