Добрый день! Я новичок в 1с-ке. задача такая нужна функция поиска по наименованию номенклатуры. попытался написать функцию. но что то не так у меня. помогите разобраться

```1c
    Функция ПолучитьСсылкуНоменклатуры (Тест) Экспорт

    Запрос=Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Номенклатура.Наименование
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Наименование ПОДОБНО &Наименование";

    Запрос.УстановитьПараметр("Наименование", Тест);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи=РезультатЗапроса.Выбрать();

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

    КонецЕсли;

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

заранее спасибо
---
```1c
    Функция ПолучитьСсылкуНоменклатуры (Тест) Экспорт

    Запрос=Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Номенклатура.Наименование,
    | Номенклатура.Ссылка
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Наименование ПОДОБНО &Наименование";

    Запрос.УстановитьПараметр("Наименование", Тест);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи=РезультатЗапроса.Выбрать();

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

    КонецЕсли;

    КонецФункции
```
---
Уточните задачу.
Вам написали, как лучше организовать поиск. Запросом найдёт подстроку в любом месте наименования, зато встроенная НайтиПоНаименованию() отработает быстрее (кстати, посмотрите по ней контекстную подсказку, она много умеет).
Но ещё в типовых конфигурациях есть Полнотекстовый поиск. Это - действительно, мощная штука (если им пользоваться научиться).

Уточнив задачу, сможете понять, что именно из этого Вам нужно.
---
попробуйте:

```1c
    Запрос.УстановитьПараметр("Наименование", "%" + Тест + "%");
```
---
А так что, не катит?
Спр=Справочники.Номенклатура.НайтиПоНаименованию(Тест);

а в вашем запросе выборка не ссылки, а наименования в виде строки
---
нужно с обработчика "Загрузка данных из табличного документа"
при импорте из эксел Накладную в 1С Поступление ТМЗ и Услуг.
указал в наименование режимз загрузки выбрал вычислить

```1c
    Результат=МодульТест.ПолучитьСсылкуНоменклатуры(ТекстЯчейки);
    Если Не ЗначениеЗаполнено(Результат) Тогда

    Сообщить( ТекстЯчейки + " не найден в базе!" )

    КонецЕсли;
```

и сам модуль для обработки

```1c
    Функция ПолучитьСсылкуНоменклатуры(Тест) Экспорт
    Запрос=Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Номенклатура.Ссылка
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Наименование ПОДОБНО &Наименование";

    Запрос.УстановитьПараметр("Наименование", Тест);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи=РезультатЗапроса.Выбрать();

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

    КонецЕсли;

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

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

Запрос.УстановитьПараметр("Наименование", Тест);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи=РезультатЗапроса.Выбрать();

Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Возврат ВыборкаДетальныеЗаписи.Номенклатура;

есть подозрение что в выборке нет номенклатуры а только наименование!
---
Поле объекта не обнаружено (Номенклатура)
---
ну поэтому и не работает
у тебя только поле Наименование в выборке
можно писать только
Выборка.Наименование
или выбирать другие поля
---
сделал так

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

    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи=РезультатЗапроса.Выбрать();

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

    КонецЕсли;

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

все равно нето, если не сложно подскажи, а то все туплю
---
```1c
    Функция ПолучитьСсылкуНоменклатуры (Тест) Экспорт

    Запрос=Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Номенклатура.Наименование,
    | Номенклатура.Ссылка
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Наименование ПОДОБНО &Наименование";

    Запрос.УстановитьПараметр("Наименование", Тест);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи=РезультатЗапроса.Выбрать();

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

    КонецЕсли;

    КонецФункции
```
---
Спасибо Андрей. Получилось. теперь пойду дальше мучаться, теперь нужно тех кого не нашел в справочнике номенклатур товаров добавлять в справочник.