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