Поиск в справочнике Номенклатура

1. AEE799 20.09.17 08:01 Сейчас в теме
Добрый день! Я новичок в 1с-ке. задача такая нужна функция поиска по наименованию номенклатуры. попытался написать функцию. но что то не так у меня. помогите разобраться
Функция ПолучитьСсылкуНоменклатуры (Тест) Экспорт

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

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

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

КонецЕсли;

КонецФункции
Показать

заранее спасибо
По теме из базы знаний
Найденные решения
10. user623969_dusa 20.09.17 11:14 Сейчас в теме
Функция ПолучитьСсылкуНоменклатуры (Тест) Экспорт

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

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

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

КонецЕсли;

КонецФункции
Показать
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. japopov 68 20.09.17 09:44 Сейчас в теме
(1) Уточните задачу.
Вам написали, как лучше организовать поиск. Запросом найдёт подстроку в любом месте наименования, зато встроенная НайтиПоНаименованию() отработает быстрее (кстати, посмотрите по ней контекстную подсказку, она много умеет).
Но ещё в типовых конфигурациях есть Полнотекстовый поиск. Это - действительно, мощная штука (если им пользоваться научиться).

Уточнив задачу, сможете понять, что именно из этого Вам нужно.
2. Alex_E 2353 20.09.17 08:04 Сейчас в теме
попробуйте:
Запрос.УстановитьПараметр("Наименование", "%" + Тест + "%");
3. DimDiemon 79 20.09.17 08:15 Сейчас в теме
А так что, не катит?
Спр=Справочники.Номенклатура.НайтиПоНаименованию(Тест);

а в вашем запросе выборка не ссылки, а наименования в виде строки
5. AEE799 20.09.17 10:24 Сейчас в теме
нужно с обработчика "Загрузка данных из табличного документа"
при импорте из эксел Накладную в 1С Поступление ТМЗ и Услуг.
указал в наименование режимз загрузки выбрал вычислить
Результат=МодульТест.ПолучитьСсылкуНоменклатуры(ТекстЯчейки);
Если Не ЗначениеЗаполнено(Результат) Тогда
	
	Сообщить( ТекстЯчейки + " не найден в базе!" )
	
 КонецЕсли;


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

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


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

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

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

есть подозрение что в выборке нет номенклатуры а только наименование!
AMShuliko; +1 Ответить
7. AEE799 20.09.17 10:46 Сейчас в теме
Поле объекта не обнаружено (Номенклатура)
8. user623969_dusa 20.09.17 10:57 Сейчас в теме
(7) ну поэтому и не работает
у тебя только поле Наименование в выборке
можно писать только
Выборка.Наименование
или выбирать другие поля
9. AEE799 20.09.17 11:08 Сейчас в теме
сделал так
Функция ПолучитьСсылкуНоменклатуры(Тест) Экспорт
 Запрос=Новый Запрос;
 Запрос.УстановитьПараметр("Наименование", Тест);
 Запрос.Текст = 
	"ВЫБРАТЬ
    | Номенклатура.Ссылка 
    |ИЗ 
    | Справочник.Номенклатура КАК Номенклатура 
    |ГДЕ 
    | Номенклатура.Наименование ПОДОБНО &Наименование"; 

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

все равно нето, если не сложно подскажи, а то все туплю
10. user623969_dusa 20.09.17 11:14 Сейчас в теме
Функция ПолучитьСсылкуНоменклатуры (Тест) Экспорт

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

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

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

КонецЕсли;

КонецФункции
Показать
11. AEE799 20.09.17 11:26 Сейчас в теме
Спасибо Андрей. Получилось. теперь пойду дальше мучаться, теперь нужно тех кого не нашел в справочнике номенклатур товаров добавлять в справочник.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот