Здравствуйте уважаемые коллеги.

Как проверить заполненность файла Эксель и загружать в документ только заполненные ячейки.

При загрузке почему-то происходит заполнение документа до 999-й строки, хотя в Экселе все строки после 43-й пустые.

Подскажите пожалуйста как проверить перед выводом в документ Эксель на пустые строки и не передавать их в док.

Спасибо.

Код:

```1c
    &НаКлиенте
    Процедура ПолеДляВыбораФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Выберите excel - файл";
    Диалог.ПолноеИмяФайла = "c:\";
    Диалог.Фильтр = "Таблицы (*.xls,*.xlsx)|*.xls;*.xlsx;|Microsoft Excel 97/2000/XP/2003 (*.xls)|*.xls|Microsoft Excel 2007/2010 (*.xlsx)|*.xlsx";

    Если Диалог.Выбрать() Тогда
    ПолеДляВыбораФайла = Диалог.ПолноеИмяФайла;
    КонецЕсли;

    КонецПроцедуры

    &НаСервере
    Функция ЗагрузитьФайл(ПолеДляВыбораФайла) Экспорт // Загружаем из Экселя тренировки и передаём их в Таблицу Значений "ТЗ"

    КнигаExcel = ПолучитьCOMОбъект(ПолеДляВыбораФайла); //Получить книгу из файла EXCEL
    ExcelЛист = КнигаExcel.Sheets(1);

    xlCellTypeLastCell = 11;
    ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
    ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;

    ТЗ = Новый ТаблицаЗначений;

    ТЗ.Колонки.Добавить("Упражнение");
    ТЗ.Колонки.Добавить("Подход");
    ТЗ.Колонки.Добавить("Повторений");
    ТЗ.Колонки.Добавить("Кг");
    ТЗ.Колонки.Добавить("Часов");
    ТЗ.Колонки.Добавить("Комментарий");

    ТЗ.Очистить();

    Для НомСтроки = 2 По ExcelПоследняяСтрока Цикл // НомСтроки = 2 - номер колонки

    НоваяСтр = ТЗ.Добавить();

    НоваяСтр.Упражнение = СокрЛп(ExcelЛист.Cells(НомСтроки,2).Value);
    НоваяСтр.Подход = ExcelЛист.Cells(НомСтроки,3).Value;
    НоваяСтр.Повторений = ExcelЛист.Cells(НомСтроки,4).Value;
    НоваяСтр.Кг = ExcelЛист.Cells(НомСтроки,5).Value;
    НоваяСтр.Часов = ExcelЛист.Cells(НомСтроки,6).Value;
    НоваяСтр.Комментарий = СокрЛп(ExcelЛист.Cells(НомСтроки,7).Value);

    КонецЦикла;

    КнигаExcel=КнигаExcel.Application.Quit();

    Сообщить("Загрузка завершена!");

    Возврат ТЗ;

    КонецФункции

    &НаСервере
    Функция ПолучениессылкиДляУпражнения(Наименование) Экспорт // Обработка поля для получения ссылки, для документа Тренировки

    слк = Справочники.Упражнения.НайтиПоНаименованию(Наименование);

    Если слк = Справочники.Упражнения.ПустаяСсылка() Тогда

    Возврат Неопределено

    Иначе

    Возврат слк;
    КонецЕсли;

    КонецФункции

    &НаКлиенте
    Процедура ЗаполнитьТабличнуюЧасть(Команда, ТЗ) // Кнопка переименована в Загрузить на форме

    ТЗ = ЗагрузитьФайл(ПолеДляВыбораФайла);

    Для Каждого Строка Из ТЗ Цикл

    ТЧ = Объект.Упражнения.Добавить();

    ТЧ.Подход = Строка.Подход;

    слкУпражнения = ПолучениессылкиДляУпражнения(Строка.Упражнение);

    Если слкУпражнения = Неопределено Тогда

    Возврат;

    Иначе

    ТЧ.Упражнение = слкУпражнения;

    КонецЕсли;

    ТЧ.КолвоПовторов = Строка.Повторений;
    ТЧ.Кг = Строка.Кг;
    ТЧ.Комментарий = Строка.Комментарий;

    КонецЦикла;

    КонецПроцедуры
```
---
Подскажите пожалуйста как проверить перед выводом в документ Эксель на пустые строки и не передавать их в док. Элементарно: проверить на заполненность одну или несколько ключевых ячеек, например:

```1c
    Для НомСтроки = 2 По ExcelПоследняяСтрока Цикл // НомСтроки = 2 - номер колонки
    НовУпражнение = СокрЛп(ExcelЛист.Cells(НомСтроки,2).Value);
    Если НЕ ЗначениеЗаполнено(НовУпражнение) Тогда
    Прервать;
    КонецЕсли

    НоваяСтр = ТЗ.Добавить();

    НоваяСтр.Упражнение = НовУпражнение;
    НоваяСтр.Подход = ExcelЛист.Cells(НомСтроки,3).Value;
    НоваяСтр.Повторений = ExcelЛист.Cells(НомСтроки,4).Value;
    НоваяСтр.Кг = ExcelЛист.Cells(НомСтроки,5).Value;
    НоваяСтр.Часов = ExcelЛист.Cells(НомСтроки,6).Value;
    НоваяСтр.Комментарий = СокрЛп(ExcelЛист.Cells(НомСтроки,7).Value);

    КонецЦикла;
```

Если вместо Прервать использовать Продолжить, то обработка не прервется на первой же незаполненной строке, а обработаются все строки с пропуском пустых.
---
Подскажите пожалуйста как проверить перед выводом в документ Эксель на пустые строки и не передавать их в док. Элементарно: проверить на заполненность одну или несколько ключевых ячеек, например:

```1c
    Для НомСтроки = 2 По ExcelПоследняяСтрока Цикл // НомСтроки = 2 - номер колонки
    НовУпражнение = СокрЛп(ExcelЛист.Cells(НомСтроки,2).Value);
    Если НЕ ЗначениеЗаполнено(НовУпражнение) Тогда
    Прервать;
    КонецЕсли

    НоваяСтр = ТЗ.Добавить();

    НоваяСтр.Упражнение = НовУпражнение;
    НоваяСтр.Подход = ExcelЛист.Cells(НомСтроки,3).Value;
    НоваяСтр.Повторений = ExcelЛист.Cells(НомСтроки,4).Value;
    НоваяСтр.Кг = ExcelЛист.Cells(НомСтроки,5).Value;
    НоваяСтр.Часов = ExcelЛист.Cells(НомСтроки,6).Value;
    НоваяСтр.Комментарий = СокрЛп(ExcelЛист.Cells(НомСтроки,7).Value);

    КонецЦикла;
```

Если вместо Прервать использовать Продолжить, то обработка не прервется на первой же незаполненной строке, а обработаются все строки с пропуском пустых.
---
```1c
    RowCount = Ехcel.ActiveSheet.UsedRange.Rows.Count;
```

либо цикл гонять по условию

```1c
    номСтр_л = 2;
    Пока Не ПустаяСтрока(Лист.Cells(номСтр_л, 1).Value) Цикл
    номСтр_л = номСтр_л+1;
    КонецЦикла;
```