Надо, чтобы загружалась 1 строчка из Эксель (203 строки) в табличную часть Товары документа Поступление (Акты, накладные) по отбору Колонка: Контрагент. Загружаются все 203 строки. Вот код и ниже скриншоты:

```1c
    Если МассивКолонок.Количество() <> 0 и МассивКолонок.НайтиСтроки(Новый Структура("НазваниеКолонки", "Номенклатура")).Количество() <> 0 Тогда
    // Создание документа и заполнение реквизитов шапки
    НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    НовыйДокумент.Дата = ТекущаяДата();
    НовыйДокумент.Контрагент = Объект.Контрагент;
    НовыйДокумент.Организация = Объект.Организация;
    НовыйДокумент.Склад = Объект.Склад;
    НовыйДокумент.ВидОперации = Объект.ВидОперации;
    //НовыйДокумент.Организация = Справочники.Организации.НайтиПоНаименованию("ООО Информационные системы в образовании", Истина);
    //НовыйДокумент.Комментарий = "Загружено из файла " + Объект.ФайлExcel;
    // Заполнение табличной части "Товары"
    // Переменная СтрокаОтсчета - номер строки в Excel, с которой начинается заполнение
    Для СтрокаОтсчета = 2 по КоличествоСтрок Цикл
    НСтр = НовыйДокумент.Товары.Добавить();
    //НСтр.Валюта = НовыйДокумент.ТипЦен.ВалютаЦены;
    Для каждого СтрокаМассив из МассивКолонок Цикл
    ТекущееЗначение = Excel.Cells(СтрокаОтсчета, СтрокаМассив.НомерКолонки).Value;
    // Получение имени колонки
    ИмяКолонки = Excel.Cells(1, СтрокаМассив.НомерКолонки).Text;

    Значение = Excel.Cells(СтрокаОтсчета, 6).Value;

    СтавкаНДС = Excel.Cells(СтрокаОтсчета, 8).Value;

    Контрагент = Excel.Cells(СтрокаОтсчета, 23).Text;

    // Заполнение строки данными
    Если ЗначениеЗаполнено(Объект.Контрагент.Наименование) Тогда
    Объект.Контрагент = Контрагент;
    ИначеЕсли ИмяКолонки = "Номенклатура" Тогда
    НСтр.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ТекущееЗначение, Истина);
    ИначеЕсли ИмяКолонки = "Количество" Тогда
    НСтр.Количество = ТекущееЗначение;
    ИначеЕсли ИмяКолонки = "Цена" Тогда
    НСтр.Цена = Значение;
    ИначеЕсли ИмяКолонки = "Ставка НДС" Тогда
    НСтр.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
    ИначеЕсли ИмяКолонки = "СчетУчета" Тогда
    НСтр.СчетУчета = ТекущееЗначение;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    // Запись и проведение документа
    НовыйДокумент.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    Сообщить("Создан и заполнен документ " + Строка(НовыйДокумент));
    Иначе
    Сообщить("В Excel файле не достаточно данных для заполнения документа!");
    КонецЕсли;

    Excel.DisplayAlerts = 0;
    Excel.Quit();
    Excel.DisplayAlerts = 1;
```
---
Напишите сразу после начала цикла все ЕСЛИ и ПРОДОЛЖИТЬ

```1c
    Если НаименованиеКонтрагента <> Excel.Cells(СтрокаОтсчета, 23).Text Тогда
    Продолжить;
    КонецЕсли;

    Если Excel.Cells(СтрокаОтсчета, 24).Text = 0 Тогда // например количество нулевое
    Продолжить;
    КонецЕсли;
```

После блока условий пишите Добавитьстроку и далее по тексту
---
```1c
    Если МассивКолонок.Количество() <> 0 и МассивКолонок.НайтиСтроки(Новый Структура("НазваниеКолонки", "Номенклатура")).Количество() <> 0 Тогда
    // Создание документа и заполнение реквизитов шапки
    НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    НовыйДокумент.Дата = ТекущаяДата();
    НовыйДокумент.Контрагент = Объект.Контрагент;
    НовыйДокумент.Организация = Объект.Организация;
    НовыйДокумент.Склад = Объект.Склад;
    НовыйДокумент.ВидОперации = Объект.ВидОперации;
    //НовыйДокумент.Организация = Справочники.Организации.НайтиПоНаименованию("ООО Информационные системы в образовании", Истина);
    //НовыйДокумент.Комментарий = "Загружено из файла " + Объект.ФайлExcel;
    // Заполнение табличной части "Товары"
    // Переменная СтрокаОтсчета - номер строки в Excel, с которой начинается заполнение
    СтрокаОтсчета = 2
    НСтр = НовыйДокумент.Товары.Добавить();
    //НСтр.Валюта = НовыйДокумент.ТипЦен.ВалютаЦены;
    Для каждого СтрокаМассив из МассивКолонок Цикл
    ТекущееЗначение = Excel.Cells(СтрокаОтсчета, СтрокаМассив.НомерКолонки).Value;
    // Получение имени колонки
    ИмяКолонки = Excel.Cells(1, СтрокаМассив.НомерКолонки).Text;

    Значение = Excel.Cells(СтрокаОтсчета, 6).Value;

    СтавкаНДС = Excel.Cells(СтрокаОтсчета, 8).Value;

    Контрагент = Excel.Cells(СтрокаОтсчета, 23).Text;

    // Заполнение строки данными
    Если ЗначениеЗаполнено(Объект.Контрагент.Наименование) Тогда
    Объект.Контрагент = Контрагент;
    ИначеЕсли ИмяКолонки = "Номенклатура" Тогда
    НСтр.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ТекущееЗначение, Истина);
    ИначеЕсли ИмяКолонки = "Количество" Тогда
    НСтр.Количество = ТекущееЗначение;
    ИначеЕсли ИмяКолонки = "Цена" Тогда
    НСтр.Цена = Значение;
    ИначеЕсли ИмяКолонки = "Ставка НДС" Тогда
    НСтр.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
    ИначеЕсли ИмяКолонки = "СчетУчета" Тогда
    НСтр.СчетУчета = ТекущееЗначение;
    КонецЕсли;
    КонецЦикла;

    // Запись и проведение документа
    НовыйДокумент.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    Сообщить("Создан и заполнен документ " + Строка(НовыйДокумент));
    Иначе
    Сообщить("В Excel файле не достаточно данных для заполнения документа!");
    КонецЕсли;

    Excel.DisplayAlerts = 0;
    Excel.Quit();
    Excel.DisplayAlerts = 1;
```
---
Не проще все остальные просто вручную удалить из таблично части перед загрузкой?
---
Допустим надо 3 строки определенных, и чтобы отбор еще был по эксель, если вот то что я заполняю в обработке в поле контрагент = из таблицы эксель по наименованию. Допустим Контрагент: Ивс, он должен проверить колонку с контрагентами и если там есть тоже самое наименование Ивс, то вывести те строчки, где они совпадают.
---
Проще делать все предварительные отборы в Excel.
Отфильтруйте по этому наименованию и сохраните в отдельный файл, его потом загрузить.
Делать универсальный управляемый отбор по разным коллонкам в обработке 1С нецелесообразно.
Много трудов, а используемость практически нулевая
---
У меня задание такое, надо чтобы создавался документ + вносились данные в табличную часть товары определенные по отбору Контрагент.
---
```1c
    Если ЗначениеЗаполнено(Объект.Контрагент.Наименование) Тогда
    Объект.Контрагент = Контрагент;
```

Что делает этот код? В чем его смысл?
---
Удалил уже код, рассмешил) А так он должен был делать отбор по Контрагенту из Экселя:

```1c
    Если ЗначениеЗаполнено(Объект.Контрагент.Наименование) Тогда
    Объект.Контрагент = Excel.Cells(СтрокаОтсчета, 23).Text;
```
---
То есть, по-вашему, строчка

```1c
    Объект.Контрагент = Excel.Cells(СтрокаОтсчета, 23).Text;
```

делает отбор по контрагенту из Экселя? Каким образом?
---
А каким образом он должен быть? Помогите с кодом. Он сравнивает значения тип строка, если = Тогда что написать

```1c
    Если ЗначениеЗаполнено(Объект.Контрагент.Наименование) = Excel.Cells(СтрокаОтсчета, 23).Text;
```
---
Получить наименование контрагента в объекте перед циклом:

```1c
    НаименованиеКонтрагента = Объект.Контрагент.Наименование;
    Для СтрокаОтсчета = 2 по КоличествоСтрок Цикл
```

дальше в цикле по строкам:

```1c
    Если не ПустаяСтрока(НаименованиеКонтрагента) Тогда
    Если НаименованиеКонтрагента = Excel.Cells(СтрокаОтсчета, 23).Text Тогда
    НСтр = НовыйДокумент.Товары.Добавить();
```

и т.д.
---
Пример: Объект.Контрагент.Наименование = "ИВС", Excel.Cells(СтрокаОтсчета, 23).Text = "ИВС"
---
Вы передергивате в 9 нет Объект.Контрагент.Наименование
там Объект.Контрагент - а это 2 ОГРОМНЫЕ разницы!
Ибо Объект.Контрагент.Наименование - строка
А Объект.Контрагент - ссылка!
---
Опечатка, не дописал, а так изначально было Объект.Контрагент.Наименование
---
Сравнивать все же нужно одинаковые сущности.
Не стоит сравнивать мягкое с теплым и гвозди с носорогами... )))
Слева и справа в выражении сравнения должны быть ОДИНАКОВЫЕ типы данных!
ЗначениеЗаполнено(Объект.Контрагент.Наименование) Это Логическое выражение имеет значения Истина или Ложь
Вы сравниваете с текстом - что есть абсурд
---
Процесс обучения подразумевает, что обучаемый усвоил предыдущий материал...
Не обижайтесь пожалуйста.... Но,если вы не научились еще использовать сравнения, может стоит больше попрактиковаться именно в сравнениях ЕСЛИ?
Ибо если вы решите что уже мастер и начнете писать что-то серьезное , то ТАКОГО наваяете, что потом батальон 1С-ников разгребать будут...
---
Опечатки допускают все, даже супермастера... )))

Рекомендую выложить ваш текущий код (после исправления всех очепяток), если у вас по-прежнему не работает
---
```1c
    МассивКолонок = Новый ТаблицаЗначений;
    МассивКолонок.Колонки.Добавить("НомерКолонки");
    МассивКолонок.Колонки.Добавить("НазваниеКолонки");
    Для КолонкаОтсчета = 1 по КоличествоКолонок Цикл
    ИмяКолонки = Excel.Cells(1, КолонкаОтсчета).Text;
    // Удаление лишних пробелов из имен колонок
    ИмяБезПробелов = СтрЗаменить(ИмяКолонки," ",");
    // Проверка наличия реквизитов табличной части "Товары" в документе "УстановкаЦен"
    Если НЕ НаличиеРеквизитаТЧ(ИмяБезПробелов, Метаданные.Документы.ПоступлениеТоваровУслуг, "Товары") Тогда
    Сообщить("Не найден реквизит с именем " + ИмяБезПробелов + "! Колонка не будет загружена!");
    Иначе
    НовСтрока = МассивКолонок.Добавить();
    НовСтрока.НомерКолонки = КолонкаОтсчета;
    НовСтрока.НазваниеКолонки = ИмяБезПробелов;
    КонецЕсли;
    КонецЦикла;

    // Если есть колонки для загрузки
    // и есть колонка "Номенклатура, которая является обязательным к заполнению реквизитом
    Если МассивКолонок.Количество() <> 0 и МассивКолонок.НайтиСтроки(Новый Структура("НазваниеКолонки", "Номенклатура")).Количество() <> 0 Тогда
    // Создание документа и заполнение реквизитов шапки
    НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    НовыйДокумент.Дата = ТекущаяДата();
    НовыйДокумент.Контрагент = Объект.Контрагент;
    НовыйДокумент.Организация = Объект.Организация;
    НовыйДокумент.Склад = Объект.Склад;
    НовыйДокумент.ВидОперации = Объект.ВидОперации;
    //НовыйДокумент.Организация = Справочники.Организации.НайтиПоНаименованию("ООО Информационные системы в образовании", Истина);
    //НовыйДокумент.Комментарий = "Загружено из файла " + Объект.ФайлExcel;
    // Заполнение табличной части "Товары"
    // Переменная СтрокаОтсчета - номер строки в Excel, с которой начинается заполнение
    НаименованиеКонтрагента = Объект.Контрагент.Наименование;
    Для СтрокаОтсчета = 2 по КоличествоСтрок Цикл
    Если не ПустаяСтрока(НаименованиеКонтрагента) Тогда
    Если НаименованиеКонтрагента = Excel.Cells(СтрокаОтсчета, 23).Text Тогда
    НСтр = НовыйДокумент.Товары.Добавить();
    КонецЕсли;
    КонецЕсли;

    //НСтр.Валюта = НовыйДокумент.ТипЦен.ВалютаЦены;
    Для каждого СтрокаМассив из МассивКолонок Цикл
    ТекущееЗначение = Excel.Cells(СтрокаОтсчета, СтрокаМассив.НомерКолонки).Value;
    // Получение имени колонки
    ИмяКолонки = Excel.Cells(1, СтрокаМассив.НомерКолонки).Text;

    Значение = Excel.Cells(СтрокаОтсчета, 6).Value;

    СтавкаНДС = Excel.Cells(СтрокаОтсчета, 8).Value;

    Контрагент = Excel.Cells(СтрокаОтсчета, 23).Text;

    // Заполнение строки данными
    Если ИмяКолонки = "Номенклатура" Тогда
    НСтр.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ТекущееЗначение, Истина);
    ИначеЕсли ИмяКолонки = "Количество" Тогда
    НСтр.Количество = ТекущееЗначение;
    ИначеЕсли ИмяКолонки = "Цена" Тогда
    НСтр.Цена = Значение;
    ИначеЕсли ИмяКолонки = "Ставка НДС" Тогда
    НСтр.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
    ИначеЕсли ИмяКолонки = "СчетУчета" Тогда
    НСтр.СчетУчета = ТекущееЗначение;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    // Запись и проведение документа
    НовыйДокумент.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    Сообщить("Создан и заполнен документ " + Строка(НовыйДокумент));
    Иначе
    Сообщить("В Excel файле не достаточно данных для заполнения документа!");
    КонецЕсли;

    Excel.DisplayAlerts = 0;
    Excel.Quit();
    Excel.DisplayAlerts = 1;
```
---
Только теперь он вставляет последнюю строчку из Экселя в табличную часть Товары
---
Почему же он так делает? Наверно, потому, что, встретив наименование нужного контрагента, программа добавляет строку в документ, потом проходит весь цикл по строкам экселя, заполняя эту строку каждый раз, а остается в ней то, что попало туда последним.

А что нужно? Правильно, чтобы, встретив наименование нужного контрагента, она добавляла строку и заполняла ее, а если наименование не совпадает - она продолжала цикл. Но как же это сделать? Нет ли в языке 1С какого-нибудь оператора, напоминающего слово "продолжить"?
---
Процесс профессиональной подготовки не является процессом обучения. Предыдущего материала нет, мастер или предыдущий работник показывает элемент работы, выполняемый в данной точке конвейера и элемент вырабатывается до достижения автоматизма. После превышения порога усталости (при монотонной работе достигнутый автоматизм начинает давать сбои чаще и чаще) выбирается другая точка конвейера и начинается проф.подготовка с нуля.

Если нет возможности работать на автопилоте и пользоваться результатами профессионального роста, а постоянно работаешь в точке минимальной квалификации, зачем такая работа?
---
Вот именно зачем такая работа? Я в технике хорошо разбираюсь, а в программе 1с только учусь, и мне не нравится эта программа. Я просто буду ждать и посмотрю, что ответят после стажировки, нужен ли я им такой?
---
Если не нравится - тогда зачем это всё?
---
Поверьте если вам не нравится такая работа, то лучше вообще не продолжать!
Ибо дальше будет только хуже
---
Не логично
Если НаименованиеКонтрагента = Excel.Cells(СтрокаОтсчета, 23).Text Тогда
        НСтр = НовыйДокумент.Товары.Добавить();
    КонецЕсли;

Вы только добавляете новую строчку если условие выполнилось.
А вот все заполнения делаете даже если не выполнилось

            //НСтр.Валюта = НовыйДокумент.ТипЦен.ВалютаЦены;
            Для каждого СтрокаМассив из МассивКолонок Цикл
                ТекущееЗначение = Excel.Cells(СтрокаОтсчета, СтрокаМассив.НомерКолонки).Value;
                // Получение имени колонки
                ИмяКолонки = Excel.Cells(1, СтрокаМассив.НомерКолонки).Text;

                Значение = Excel.Cells(СтрокаОтсчета, 6).Value;

                СтавкаНДС = Excel.Cells(СтрокаОтсчета, 8).Value;

                Контрагент = Excel.Cells(СтрокаОтсчета, 23).Text;

                // Заполнение строки данными
                    Если ИмяКолонки = "Номенклатура" Тогда
                        НСтр.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ТекущееЗначение, Истина);
                    ИначеЕсли ИмяКолонки = "Количество" Тогда
                        НСтр.Количество = ТекущееЗначение;
                    ИначеЕсли ИмяКолонки = "Цена" Тогда
                        НСтр.Цена = Значение;
                    ИначеЕсли ИмяКолонки = "Ставка НДС" Тогда
                        НСтр.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
                    ИначеЕсли ИмяКолонки = "СчетУчета" Тогда
                        НСтр.СчетУчета = ТекущееЗначение;
                    КонецЕсли;
---
Дак помоги написать код правильно и чтобы я понял в чем причина, я уже много вариантов перепробовал.
---
И кстати проблемы то не в программе!
А в способности логического мышления. В любом программировании нужно мыслить как машина, если будешь фантазировать как механик, то лучше остаться механиком
---
Вот бы машина мыслила как человек. Тогда бы и мы не сдались бы.
---
Вот подобными инсинуациями человечество и вымрет, ибо мыслящим машинам - люди не нужны!
---
Мы тут все и стараемся ПОМОЧЬ ,но помощь - это не сделать вместо тебя!
Мы показываем тебе конкретные ошибки . Ты их должен исправлять и тогда наберешь опыта.
А списывание опыта никогда не даст
---
Списывание, еще как сказать. Можно скопировать и вставить, не разобравшись, а можно наоборот, написать от руки и понять что к чему идет. Я после стажировки подумаю еще, заключать трудовой договор на постоянной основе, и это зависит еще от руководителя, захочет ли он оставлять меня на месте, выгодно ли ему? Я хотел пойти работать консультантом техники, потому что как и писал ранее, хорошо в ней разбираюсь. Или же пойти мастером по сборке компьютеров. Но везде нужен опыт, да и потом вопрос в деньгах, сколько будут платить?
---
Философия двоечника однозначно!
Еще неизвестно что подразумеваешь под "разбираюсь в технике", техника бывает очень разная и утверждение "разбираюсь в технике" по меньшей мере слишком самоуверенное. Уверен , что на мой вопрос по технике дашь верный ответ?
---
Напишите сразу после начала цикла все ЕСЛИ и ПРОДОЛЖИТЬ

```1c
    Если НаименованиеКонтрагента <> Excel.Cells(СтрокаОтсчета, 23).Text Тогда
    Продолжить;
    КонецЕсли;

    Если Excel.Cells(СтрокаОтсчета, 24).Text = 0 Тогда // например количество нулевое
    Продолжить;
    КонецЕсли;
```

После блока условий пишите Добавитьстроку и далее по тексту
---
Не согласен - очень не красиво в данном случае получится...
Надо все что ниже перенести внутрь ЕСЛИ
---
причем тут красота, мы даже не знаем точно, вычисляет ли платформа все выражения внутри ЕСЛИ, а тут обращение к постороннему объекту.
---
Ну хорошо убедили , но тогда уж в другой последовательности

Если не ПустаяСтрока(НаименованиеКонтрагента) Тогда
    Если Excel.Cells(СтрокаОтсчета, 24).Text = 0 Тогда // например количество нулевое
      Продолжить;
    КонецЕсли;
    Если НаименованиеКонтрагента <> Excel.Cells(СтрокаОтсчета, 23).Text Тогда
      Продолжить;
    КонецЕсли;
 ИНАЧЕ Продолжить;
КонецЕсли;

НСтр = НовыйДокумент.Товары.Добавить();
---
Вроде бы помог код, сейчас проверяю, спс.
Если НаименованиеКонтрагента <> Excel.Cells(СтрокаОтсчета, 23).Text Тогда
       Продолжить;
КонецЕсли;

Если Excel.Cells(СтрокаОтсчета, 24).Text = 0 Тогда // например количество нулевое
    Продолжить;
КонецЕсли;
---
Тогда сверху к (30) добавить еще

```1c
    Если ПустаяСтрока(НаименованиеКонтрагента) Тогда
    Продолжить;
    КонецЕсли;
```
---
А кстати не смущает
Excel.Cells(СтрокаОтсчета, 24).Text = 0 ?
Текст с числом сравнивать...
Не сразу заметил....
---
Когда написал условие ЕСЛИ , то в нем должны выполняться все действия с твоими данными , которые ты вынес за пределы этого условия.
И получатся что ты сравниваешь одно , а заполняешь туда потом уже совсем другое и много раз.
вот оно у тебя и остается потом последнее
---
Про такой фильтр имел в виду:

```1c
    Если МассивКолонок.Количество() <> 0 и МассивКолонок.НайтиСтроки(Новый Структура("НазваниеКолонки", "Номенклатура")).Количество() <> 0 Тогда
    // Создание документа и заполнение реквизитов шапки
    НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    НовыйДокумент.Дата = ТекущаяДата();
    НовыйДокумент.Контрагент = Объект.Контрагент;
    НовыйДокумент.Организация = Объект.Организация;
    НовыйДокумент.Склад = Объект.Склад;
    НовыйДокумент.ВидОперации = Объект.ВидОперации;
    //НовыйДокумент.Организация = Справочники.Организации.НайтиПоНаименованию("ООО Информационные системы в образовании", Истина);
    //НовыйДокумент.Комментарий = "Загружено из файла " + Объект.ФайлExcel;
    // Заполнение табличной части "Товары"
    // Переменная СтрокаОтсчета - номер строки в Excel, с которой начинается заполнение
    КонтрагентСтрока = Строка(Объект.Контрагент);
    Для СтрокаОтсчета = 2 по КоличествоСтрок Цикл
    НужныйКонтрагент = Ложь;
    Для каждого СтрокаМассив из МассивКолонок Цикл
    ТекущееЗначение = Excel.Cells(СтрокаОтсчета, СтрокаМассив.НомерКолонки).Value;
    // Получение имени колонки
    ИмяКолонки = Excel.Cells(1, СтрокаМассив.НомерКолонки).Text;
    НаимКонтрагента = ";
    Если ИмяКолонки = "Контрагент" Тогда//Указать наименование колонки с контрагентами
    НаимКонтрагента = ТекущееЗначение;
    КонецЕсли;
    Если КонтрагентСтрока = НаимКонтрагента Тогда
    НужныйКонтрагент = Истина;
    КонецЕсли;
    КонецЦикла;
    Если Не НужныйКонтрагент Тогда
    Продолжить;
    КонецЕсли;
    НСтр = НовыйДокумент.Товары.Добавить();
    //НСтр.Валюта = НовыйДокумент.ТипЦен.ВалютаЦены;
    Для каждого СтрокаМассив из МассивКолонок Цикл
    ТекущееЗначение = Excel.Cells(СтрокаОтсчета, СтрокаМассив.НомерКолонки).Value;
    // Получение имени колонки
    ИмяКолонки = Excel.Cells(1, СтрокаМассив.НомерКолонки).Text;

    Значение = Excel.Cells(СтрокаОтсчета, 6).Value;

    СтавкаНДС = Excel.Cells(СтрокаОтсчета, 8).Value;

    Контрагент = Excel.Cells(СтрокаОтсчета, 23).Text;

    // Заполнение строки данными
    Если ИмяКолонки = "Номенклатура" Тогда
    НСтр.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ТекущееЗначение, Истина);
    ИначеЕсли ИмяКолонки = "Количество" Тогда
    НСтр.Количество = ТекущееЗначение;
    ИначеЕсли ИмяКолонки = "Цена" Тогда
    НСтр.Цена = Значение;
    ИначеЕсли ИмяКолонки = "Ставка НДС" Тогда
    НСтр.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
    ИначеЕсли ИмяКолонки = "СчетУчета" Тогда
    НСтр.СчетУчета = ТекущееЗначение;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    // Запись и проведение документа
    НовыйДокумент.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    Сообщить("Создан и заполнен документ " + Строка(НовыйДокумент));
    Иначе
    Сообщить("В Excel файле не достаточно данных для заполнения документа!");
    КонецЕсли;

    Excel.DisplayAlerts = 0;
    Excel.Quit();
    Excel.DisplayAlerts = 1;
```
---
маленький совет

```1c
    НужныйКонтрагент = КонтрагентСтрока = НаимКонтрагента;
```

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

```1c
    Если КонтрагентСтрока <> НаимКонтрагента Тогда
    Продолжить;
    КонецЕсли;
```
---
Несущественно но короче, согласен)

Там два цикла, не подойдет второе условие.
---
Еще такой вопрос пишу код, все выводит, кроме счета учета и ставка НДС, как их вывести? Вроде бы должен ТекущееЗначение брать, т.е. из Экселя по имени колонки, но ничего не выводит.

```1c
    Для каждого СтрокаМассив из МассивКолонок Цикл
    ТекущееЗначение = Excel.Cells(СтрокаОтсчета, СтрокаМассив.НомерКолонки).Value;
    // Получение имени колонки
    ИмяКолонки = Excel.Cells(1, СтрокаМассив.НомерКолонки).Text;
    Значение = Excel.Cells(СтрокаОтсчета, 6).Value;
    // Заполнение строки данными
    Если ИмяКолонки = "Номенклатура" Тогда
    НСтр.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ТекущееЗначение, Истина);
    ИначеЕсли ИмяКолонки = "Количество" Тогда
    НСтр.Количество = ТекущееЗначение;
    ИначеЕсли ИмяКолонки = "Цена" Тогда
    НСтр.Цена = Значение;
    ИначеЕсли ИмяКолонки = "Ставка НДС" Тогда
    НСтр.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
    ИначеЕсли ИмяКолонки = "Ссылка.Счет учета расчетов по авансам" Тогда
    НСтр.СчетУчета = ТекущееЗначение;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
```
---
Попробуйте так:

```1c
    Если ИмяКолонки = "Номенклатура" Тогда
    НСтр.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ТекущееЗначение, Истина);
    ИначеЕсли ИмяКолонки = "Количество" Тогда
    НСтр.Количество = ТекущееЗначение;
    ИначеЕсли ИмяКолонки = "Цена" Тогда
    НСтр.Цена = Значение;
    Иначе
    НСтр = ТекущееЗначение;
    КонецЕсли;
```