Всем привет!

Есть файл txt (файл не сильно большой... строк 500) и надо удалить пустые строки как до основного текста, как между строк так и в конце основного текста.

Пример файла:
Строка 1. пустая
Строка 2. пустая
Строка 3. нужный текст
Строка 4. пустая
Строка 5. нужный текст
Строка 6. пустая
Строка 7. пустая

Нужно чтоб в итоге осталось только строка 3 и строка 5.

Подскажите как это сделать?
---
Лучше так:

```1c
    КоличествоСтрок = ФайлТХТ.КоличествоСтрок(); //количество строк в файле txt

    Для Н = - КоличествоСтрок По -1 Цикл

    СтрокаТХТ = ФайлТХТ.ПолучитьСтроку(-Н);

    Если СтрокаТХТ = " Тогда //нашли пустую строку

    ФайлТХТ.УдалитьСтроку(-Н);

    КонецЕсли;

    КонецЦикла;

    ФайлТХТ.Записать(ПутьКФайлу);
```
---
Перебираешь строки, проверяешь на заполненность, пустые удаляешь.
Логично?
---
вот все тоже самое, только в коде надо!
неужели не логично?
---
КоличествоСтрок = ФайлТХТ.КоличествоСтрок(); //количество строк в файле txt

Для Н = 1 По КоличествоСтрок Цикл

   СтрокаТХТ = ФайлТХТ.ПолучитьСтроку(Н);

      Если СтрокаТХТ = "" Тогда //нашли пустую строку

      Текст_ФайлОбработан = Новый ТекстовыйДокумент;
      Текст_ФайлОбработан.Прочитать(ПутьКФайлу); //ПутьКФайлу - полный путь до файла txt

      Текст_ФайлОбработан.УдалитьСтроку(НомерСтроки); // НомерСтроки - номер строки файла, как определить номер строки?

      Текст_ФайлОбработан.Записать(ПутьКФайлу);

КонецЕсли;

КонецЦикла;
---
Плохо. В цикле каждый раз читать и писать файл плохо.
---
А откуда ты знаешь количество строк, если ты еще файл еще не прочитал, а читаешь только внутри цикла?
И общее количество строк после каждого удаления будет изменяться. В итоге цикл вылетит с ошибкой....
---
И общее количество строк после каждого удаления будет изменяться. - вот как раз в этом и проблема!
---
Почитай теорию. Как в любом цикле правильно удалять элемент перебираемой коллекции...
---
потоки надо использовать! вдруг 500К строк придется обрабатывать
---
это как?
---
Причем во внешней компоненте! Вдруг в реалтайме придется.
---
мне любой способ подойдет!!!
---
Лучше так:

```1c
    КоличествоСтрок = ФайлТХТ.КоличествоСтрок(); //количество строк в файле txt

    Для Н = - КоличествоСтрок По -1 Цикл

    СтрокаТХТ = ФайлТХТ.ПолучитьСтроку(-Н);

    Если СтрокаТХТ = " Тогда //нашли пустую строку

    ФайлТХТ.УдалитьСтроку(-Н);

    КонецЕсли;

    КонецЦикла;

    ФайлТХТ.Записать(ПутьКФайлу);
```
---
СокрЛП()
---
спасибо!
---
Вместо

```1c
    Если СтрокаТХТ = " Тогда //нашли пустую строку
```

лучше так:

```1c
    Если ПустаяСтрока(СтрокаТХТ) Тогда //нашли пустую строку
```
---
Лучше так: Оно-то лучше, и работать будет, но несколько замудрёно для понимания.

Я бы использовал другой способ организации цикла "снизу вверх" (замечание dehro учтено):

```1c
    Н = ФайлТХТ.КоличествоСтрок(); //количество строк в файле txt

    Пока Н > 0 Цикл
    Если ПустаяСтрока(ФайлТХТ.ПолучитьСтроку(Н)) Тогда //нашли пустую строку
    ФайлТХТ.УдалитьСтроку(Н);
    КонецЕсли;
    Н = Н - 1;
    КонецЦикла;
```
---
Годно. Можно и к массиву других коллекций применять.
(Как говорит шеф: "Когда вкусно - тогда вкусно!")
---
"Когда вкусно - тогда вкусно!" И точка? ;-)
---
Нет. точка идет нафиг.
И шеф испортился.
Но фраза - хорошая!
---
Всем большущее спасибо!!!