Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. В УТ 10.3. Обработка работает но есть одно проблема. Для примера говорим что файле в первом строке есть товар с названием "Телевизор самсунг" а в втором строке "Телевизор". Код проверяет что товар. Если в базе нет такого товара тогда автоматически добавляет иначе записывает в табличный часть. Проблема в чем что код добавляет "Телевизор самсунг" но "Телевизор" не добавляет. Видит когда одинокие. Полный код обработке ниже. Как исправится с этим?
Спасибо всем за ранее.

```1c
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Если ТабличнаяЧасть.Количество() = 0 Тогда
    Предупреждение("Для создания документа необходимо заполнить таблицу",,"Внимание");
    Возврат;
    КонецЕсли;

    Поступление = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    Для Каждого Стр Из ТабличнаяЧасть Цикл
    СтрокаЗаказ = ТабличнаяЧасть.Добавить();
    СтрокаЗаказ.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Стр.Номенклатура);
    СтрокаЗаказ.Цена = Стр.Цена;
    СтрокаЗаказ.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("ƏD");
    СтрокаЗаказ.Коэффициент = 1;
    СтрокаЗаказ.Количество = Стр.Количество;
    СтрокаЗаказ.Сумма = Стр.Сумма;
    СтрокаЗаказ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
    КонецЦикла;
    ОткрытьЗначение(Поступление);
    КонецПроцедуры

    Процедура ПутьКФайлуНачалоВыбора(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка=ложь;
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Выберите excel - файл";
    Диалог.ПолноеИмяФайла = ";
    Диалог.Фильтр = "Таблицы (*.xls,*.xlsx)|*.xls;*.xlsx;|Microsoft Excel 97/2000/XP/2003 (*.xls)|*.xls|Microsoft Excel 2007/2010 (*.xlsx)|*.xlsx";
    Диалог.МножественныйВыбор = Ложь;
    Диалог.Каталог = "\";
    Если Диалог.Выбрать() Тогда
    Предупреждение(Диалог.ПолноеИмяФайла, 10 , "Файл выбран.");
    Элемент.значение = Диалог.ПолноеИмяФайла;
    Иначе
    Предупреждение("Файл не выбран.");
    Возврат;
    КонецЕсли;
    КонецПроцедуры

    Процедура ЗаполнитьНажатие(Элемент)
    ТабличнаяЧасть.Очистить();
    ИмяФайла = ПутьКФайлу;
    Если ПустаяСтрока(ИмяФайла) Тогда
    Предупреждение("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel.");
    Возврат;
    КонецЕсли;

    Попытка
    ExcelПриложение = Новый COMОбъект("Excel.Application");
    Исключение
    Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
    Возврат;
    КонецПопытки;

    Попытка
    ExcelПриложение.WorkBooks.Open(ИмяФайла);
    Исключение
    Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
    КонецПопытки;

    Попытка
    Если Страница = 0 Или Страница < 0 Тогда
    ExcelПриложение.Sheets(1).Select();
    Иначе
    ExcelПриложение.Sheets(Страница).Select();
    КонецЕсли;
    Версия = Лев(ExcelПриложение.Version,Найти(ExcelПриложение.Version,".")-1);
    Если Версия = "8" тогда
    ExcelПоследняяСтрока = ExcelПриложение.Cells.CurrentRegion.Rows.Count;
    ExcelПоследняяКолонка = Макс(ExcelПриложение.Cells.CurrentRegion.Columns.Count, 13);
    Иначе
    ExcelПоследняяСтрока = ExcelПриложение.Cells(1,1).SpecialCells(11).Row;
    ExcelПоследняяКолонка = ExcelПриложение.Cells(1,1).SpecialCells(11).Column;
    Конецесли;
    Исключение
    Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
    ExcelПриложение.Quit();
    КонецПопытки;

    КЧ = Новый КвалификаторыЧисла(15,2);
    КС = Новый КвалификаторыСтроки(100);
    Массив = Новый Массив;
    Массив.Добавить(Тип("Строка"));
    ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
    Массив.Очистить();
    Массив.Добавить(Тип("Число"));
    ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
    Массив.Очистить();
    Массив.Добавить(Тип("СправочникСсылка.Номенклатура"));
    ОписаниеТиповНом = Новый ОписаниеТипов(Массив, , ,КЧ);

    ТабличнаяЧасть.Очистить();
    ЭлементыФормы.ТабличнаяЧасть.Значение.Очистить();

    Процессор = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    Процессор.ОтображатьПроцентВывода = Истина;
    Процессор.НачатьВывод();
    Элемент = Новый ЭлементРезультатаКомпоновкиДанных;

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

    СтруктураПолей = Новый Структура;
    ПроверитьНоменклатуры = Строка(СокрЛП(ExcelПриложение.Cells(Строка, НоменклатураКол).Value));
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Номенклатура.Наименование
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Наименование ПОДОБНО &Номенклатура";
    Запрос.УстановитьПараметр("Номенклатура","%" + ПроверитьНоменклатуры + "%");
    Выборка = Запрос.Выполнить().Выбрать();
    Если НЕ Выборка.Следующий() Тогда
    НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
    НоваяНоменклатура.Наименование = ПроверитьНоменклатуры;
    НоваяНоменклатура.НаименованиеПолное = ПроверитьНоменклатуры;
    НоваяНоменклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоРеквизиту("ТипНоменклатуры",Перечисления.ТипыНоменклатуры.Товар);
    НоваяНоменклатура.БазоваяЕдиницаИзмерения = ОсновнаяЕдиницаПоКлассификатору;
    НоваяНоменклатура.ЕдиницаДляОтчетов = ОсновнаяЕдиницаПоКлассификатору;
    НоваяНоменклатура.ЕдиницаХраненияОстатков = ОсновнаяЕдиницаПоКлассификатору;
    НоваяНоменклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
    НоваяНоменклатура.Записать();
    КонецЕсли;

    Наименование = СокрЛП(ExcelПриложение.Cells(Строка, НоменклатураКол).Value);
    Количество = ExcelПриложение.Cells(Строка, КоличествоКол).Value;
    Цена = ExcelПриложение.Cells(Строка, ЦенаКол).Value;
    Сумма = ExcelПриложение.Cells(Строка, СуммаКол).Value;

    СтруктураПолей.Вставить("Наименование", Наименование);
    СтруктураПолей.Вставить("Количество", Количество);
    СтруктураПолей.Вставить("Цена", Цена);
    СтруктураПолей.Вставить("Сумма", Сумма);

    Стр = ЭлементыФормы.ТабличнаяЧасть.Значение.Добавить();
    Стр.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Наименование),ИСТИНА);
    Стр.Количество = Количество;
    Стр.Цена = Цена;
    Стр.Сумма = Сумма;

    Элемент.ПроцентВывода = Строка/ExcelПоследняяСтрока*100;
    Процессор.ВывестиЭлемент(Элемент);

    КонецЦикла;
    Процессор.ЗакончитьВывод();
    ExcelПриложение.Quit();
    КонецПроцедуры

    Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    НоменклатураКол = ВосстановитьЗначение("НоменклатураКолонка");
    КоличествоКол = ВосстановитьЗначение("КоличествоКолонка");
    ЦенаКол = ВосстановитьЗначение("ЦенаКолонка");
    СуммаКол = ВосстановитьЗначение("СуммаКолонка");
    КонецПроцедуры

    Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    СохранитьЗначение("НоменклатураКолонка", НоменклатураКол);
    СохранитьЗначение("КоличествоКолонка", КоличествоКол);
    СохранитьЗначение("ЦенаКолонка", ЦенаКол);
    СохранитьЗначение("СуммаКолонка", СуммаКол);
    КонецПроцедуры
```

Запрос так тоже попробовал но не работал. С таким запросам код проста дублировал номенклатуры который не находится не в одном группе. Проста дубль создал для каждого.

```1c
    Запрос.Текст = "ВЫБРАТЬ
    | Номенклатура.Ссылка
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Ссылка = &Номенклатура";
```
---
у вас в запросе нужно параметр изменить, убирите символы %%

```1c
    Запрос.Текст = "ВЫБРАТЬ
    | Номенклатура.Наименование
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Наименование = &Номенклатура";
    Запрос.УстановитьПараметр("Номенклатура", ПроверитьНоменклатуры);
```
---
Напишите запрос на поиск номенклатуры по другому

```1c
    Запрос.Текст = "ВЫБРАТЬ
    | Номенклатура.Наименование
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Наименование = &Номенклатура";
    Запрос.УстановитьПараметр("Номенклатура", ПроверитьНоменклатуры);
```
---
Спасибо за вниманию.
Сейчас код делает дубль.
---
а вот так попробуйте работать

```1c
    ПроверитьНоменклатуры = Строка(СокрЛП(ExcelПриложение.Cells(Строка, НоменклатураКол).Value));
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Номенклатура.Наименование
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Наименование ПОДОБНО &Номенклатура";
    Запрос.УстановитьПараметр("Номенклатура","%" + ПроверитьНоменклатуры + "%");
    Выборка = Запрос.Выполнить().Выбрать();
    Если ВыборкаРезультата.Количество() = 0 Тогда
    НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
    НоваяНоменклатура.Наименование = ПроверитьНоменклатуры;
    НоваяНоменклатура.НаименованиеПолное = ПроверитьНоменклатуры;
    НоваяНоменклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоРеквизиту("ТипНоменклатуры",Перечисления.ТипыНоменклатуры.Товар);
    НоваяНоменклатура.БазоваяЕдиницаИзмерения = ОсновнаяЕдиницаПоКлассификатору;
    НоваяНоменклатура.ЕдиницаДляОтчетов = ОсновнаяЕдиницаПоКлассификатору;
    НоваяНоменклатура.ЕдиницаХраненияОстатков = ОсновнаяЕдиницаПоКлассификатору;
    НоваяНоменклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
    НоваяНоменклатура.Записать();
    КонецЕсли;
```
---
Дубль исчезло но пробела остался еще. Уже 2 дня не могу решить
---
Какая еще проблема у вас возникла?
---
Проблема остался проста.
Для примера говорим что файле в первом строке есть товар с названием "Телевизор самсунг" а в втором строке "Телевизор". Код проверяет что товар. Если в базе нет такого товара тогда автоматически добавляет иначе записывает в табличный часть. Проблема в чем что код добавляет "Телевизор самсунг" но "Телевизор" не добавляет. Видит когда одинокие.
---
НУ вот, вам первое что в запросе нужно убрать подобно и написать равно

```1c
    ПроверитьНоменклатуры = Строка(СокрЛП(ExcelПриложение.Cells(Строка, НоменклатураКол).Value));
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Номенклатура.Наименование
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Наименование ПОДОБНО &Номенклатура";
    Запрос.УстановитьПараметр("Номенклатура","%" + ПроверитьНоменклатуры + "%");
    Выборка = Запрос.Выполнить().Выбрать();
    Если ВыборкаРезультата.Количество() = 0 Тогда
    НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
    НоваяНоменклатура.Наименование = ПроверитьНоменклатуры;
    НоваяНоменклатура.НаименованиеПолное = ПроверитьНоменклатуры;
    НоваяНоменклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоРеквизиту("ТипНоменклатуры",Перечисления.ТипыНоменклатуры.Товар);
    НоваяНоменклатура.БазоваяЕдиницаИзмерения = ОсновнаяЕдиницаПоКлассификатору;
    НоваяНоменклатура.ЕдиницаДляОтчетов = ОсновнаяЕдиницаПоКлассификатору;
    НоваяНоменклатура.ЕдиницаХраненияОстатков = ОсновнаяЕдиницаПоКлассификатору;
    НоваяНоменклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
    НоваяНоменклатура.Записать();
    КонецЕсли;
```

Второе, там где вы осуществляете поиск номенклатуры - использовать поиск по точному наименованию, то есть добавить параметр ИСТИНА

```1c
    СтрокаЗаказ.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Стр.Номенклатура, Истина);
```
---
Добавить в условие запроса Номенклатура.Наименование ПОДОБНО &Номенклатура, а явно напишите Номенклатура.Наименование = &Номенклатура
---
В моем коде по-моему полная ерунда.
 Но сейчас код заново делает дубль.
---
у вас в запросе нужно параметр изменить, убирите символы %%

```1c
    Запрос.Текст = "ВЫБРАТЬ
    | Номенклатура.Наименование
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Наименование = &Номенклатура";
    Запрос.УстановитьПараметр("Номенклатура", ПроверитьНоменклатуры);
```
---
Спасибо вам большое. Два дня не могла решить.
А можете объяснять почему дублировал и Не проверил названию товара ?
---
На самом деле как было написано, программа все верно делала. И поэтому у вас создавались дубли.
Нужно было во первых в условии запрос убрать ПОДОБНО и второе, в параметре запроса убрать символы %%
В противно случае программа например берет номенклатуру Телевизор и подобные ищет в справочнике, и находит Телевизор Самсунг и не создает новую номенклатуру ввиду того что подобную нашел
---
У вас он почему не создает потому что у вас "Подобно", поставьте "Равно"