Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 мая 2024, 01:57

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

Автор Sasha1C, 05 мар 2024, 14:38

0 Пользователей и 1 гость просматривают эту тему.

Sasha1C

Добрый день, не могу найти пример как сделать поиск по наименованию, при изменении названия в строке поиска. Вот такой код написан в форме списка. Но я не понимаю, куда двигаться дальше. При выполнении выдает ошибку не задан параметр "Поиск" в строке " Запрос.УстановитьПараметр". Хотя параметр задан. Может быть, я просто не правильно его объявил для этого запроса. Или есть более рациональный подход к решению моего вопроса, а то костяк этого метода я брал из нетиповой конфигурации, а все дальнейшие ссылки по этому вопросу шли в тьму общих модулей в которых сам черт ногу сломит. Буду благодарен за любые предложения.
[attach id=43534]sasha.png[/attach]
&НаСервере
Функция ПолучениеДанных()

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

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

Пока Выборка.Следующий() Цикл

Возврат Выборка.Номенклатура;

КонецЦикла;

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


&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

СтандартнаяОбработка =Ложь;
Отбор = Новый Структура("Номенклатура", ПолучениеДанных());


КонецПроцедуры

&НаКлиенте
Процедура ПоискПриИзменении(Элемент)

ПолучениеДанных();

КонецПроцедуры
 

antoneus

А почему бы штатным поиском не воспользоваться? И да, событие ПриИзменении вызывается когда фокус уходит с элемента. Чтобы уж фильтровать по мере набора текста, используйте событие АвтоПодбор.

А так - в запросе у вас параметр называется Наименование, а устанавливаете вы параметр Номенклатура.

Sasha1C

antoneus, Автоподбор поможет при изменении строки поиска, отфильтровать список по заданному в строке? Как я понимаю он подтягивает первое попавшее значение, а я хотел увидеть все значения по заданному параметру в строке поиска

antoneus

Это динамический список?

И вот эта конструкция

Пока Выборка.Следующий() Цикл
   
    Возврат Выборка.Номенклатура;   
   
КонецЦикла;

вернет только одну (первую) позицию. После слова Возврат происходит выход из функции и, соответственно, цикл прерывается.

antoneus

А, точно, динамический. Там же есть штатная строка поиска, к чему эти извраты?

LexaK

Sasha1C,
ЦитироватьИли есть более рациональный подход к решению моего вопроса,
более рациональный подход, вообще ни чего не писать! Все эти поиски (по наименованию, по коду, полностью или частично) 
являются встроенными механизмами платформы, просто пользуйтесь ими и все.
если помогло нажмите: Спасибо!

Sasha1C

antoneus, Вопрос снят. Я не знал про полнотекстовый поиск. Всем спасибо.

LexaK

Sasha1C, для ДС используйте Отбор, в нем можно настроить режим сравнения "Содержит"
тогда вы получите несколько товаров в наименовании которых есть указанный текст.
если помогло нажмите: Спасибо!

Похожие темы (5)

Рейтинг@Mail.ru

Поиск