Здравствуйте
Нужна помощь
Программированию в 1с еще только учусь, так что не будьте строги
Делаю простую загрузку из excel в 1с в табличную часть
Загрузка работает, все хорошо, но столкнулся с проблемой -
я загружаю номенклатуру по артикул, а артикул может совпадать с разными номенклатурами и из-за этого при загрузке, она загружает первое попавшее (не совсем уверен что он загружает) и вот вопрос, у меня в excel файле есть наименование и артикул, не могу придумать, как мне сделать проверку, что после загрузке артикула, чтобы он еще проверял совпадение по наименованию
То есть загрузил артикул, и если совпадение одно, то он загружает, а если нашел 2 то уже идет в excel и берет наименование
Надеюсь все понятно описал
подтолкните на мысль как это реализовать, или сделать как то по другому

вод код который написал

```1c
    Excel = Новый COMОбъект("Excel.Application");
    Excel.WorkBooks.Open("D:\3.xlsx");
    Excel.Sheets(1).Select();
    a=2;
    Док = Документы.ИнвентаризацияТоваровНаСкладе.СоздатьДокумент();
    Пока a<2845 Цикл
    тч = док.Товары.Добавить();
    тчнайти = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Excel.Cells(a,3).Value());
    тч.Номенклатура = тчнайти;
    тч.КоличествоУчет = Excel.Cells(a,8).Value();
    тч.Количество = Excel.Cells(a,6).Value();
    тч.Коэффициент = "1";
    тч.ЕдиницаИзмерения = тчнайти.ЕдиницаХраненияОстатков;
    тч.Цена = Excel.Cells(a,5).Value();
    тч.Сумма = Excel.Cells(a,7).Value();
    тч.СуммаРегл = Excel.Cells(a,9).Value();
    тч.СуммаУчет = Excel.Cells(a,9).Value();
    a=a+1;
    КонецЦикла;
    Док.Дата = ТекущаяДата();
    Док.Записать();
    Excel.Quit();
    Сообщить("Всё готово");
```
---
ПРимерно так должно быть. Писал от руки поэтому могут быть ошибки

```1c
    тч.Номенклатура = НайтиНоменклатуру("ячейканаименования", Excel.Cells(a,3).Value());

    Функция НайтиНоменклатуру(Наименование, Артикул);

    Запрос = Новый Запрос;
    Запрос.Текст = "Выбрать Ссылка
    Из Справочники.номенклатура
    Где Артикул = &Артикул
    И Наименование = &Наименование";
    Запрос.установитьПараметры("Артикул",Артикул);
    Запрос.установитьПараметры("Наименование",Наименование);

    Выборка = Запрос.выполнить().выбрать();

    Если Выборка.Следующий() Тогда
    Возврат Выборка.ссылка;
    Иначе
    Возврат Справочники.Номенклатура.ПустаяСсылка();
    КонецЕсли;

    КонецФункции;
```
---
делайте функцию с запросом поиска в Номенклатуре по артикулу и наименованию. Она вернет Вам нужный элемент в переменную тчнайти.
---
ПРимерно так должно быть. Писал от руки поэтому могут быть ошибки

```1c
    тч.Номенклатура = НайтиНоменклатуру("ячейканаименования", Excel.Cells(a,3).Value());

    Функция НайтиНоменклатуру(Наименование, Артикул);

    Запрос = Новый Запрос;
    Запрос.Текст = "Выбрать Ссылка
    Из Справочники.номенклатура
    Где Артикул = &Артикул
    И Наименование = &Наименование";
    Запрос.установитьПараметры("Артикул",Артикул);
    Запрос.установитьПараметры("Наименование",Наименование);

    Выборка = Запрос.выполнить().выбрать();

    Если Выборка.Следующий() Тогда
    Возврат Выборка.ссылка;
    Иначе
    Возврат Справочники.Номенклатура.ПустаяСсылка();
    КонецЕсли;

    КонецФункции;
```
---
Вариант с пустой ссылкой лучше бы обработать (создать новый элемент/предупредить/не вставлять в ТЧ), а не передавать сразу в табличную часть.
---
но это уже совсем другая история)
Конечно правильно было бы или создавать новую номенклатуру, или вообще в таком случае не добавлять строку в таблицу, а выдавать сообщение)
---
Ну, по вопросу видно совсем уж новичка, поэтому и обратил его внимание, а то следующей темой будет "Как убрать пустые строки из ТЧ?" :-)
---
ну да я тоже начинал работать с экселем через ком)))