//Все вставляем в глобальный модуль
//======================================================================
Функция гв_ПоискЭлементаСправочникаВСписке_svc(ВидСправочника, Владелец = "", Элем = "") Экспорт
//Эту процедуру удобно использовать и в дальнейшем, например для отчетов
База = СоздатьОбъект("SQLiteBase");
База.Открыть(":memory:");
Запрос = База.НовыйЗапрос();
ТекстЗапроса = "
|SELECT
| спр.DESCR||'|'||спр.CODE as [Поиск],
| спр.ID as [Ид :Справочник."+ ВидСправочника +"]
|FROM
| [Справочник."+ ВидСправочника +"] as спр
|WHERE
| 1=1
|ORDER BY спр.DESCR
|";
Условие = "
| спр.ISMARK <> '*'
|";
Если Метаданные.Справочник(ВидСправочника).КоличествоУровней > 1 Тогда
Условие = Условие + "
| AND
| спр.ISFOLDER = 2
|";
КонецЕсли;
Если ПустоеЗначение(Владелец) = 0 Тогда
Условие = Условие + "
| AND
| спр.PARENTEXT = :Владелец
|";
Запрос.Подставлять("Владелец", Владелец);
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "1=1", Условие);
тз = Запрос.ВыполнитьЗапрос(ТекстЗапроса);
свц = CreateObject("svcsvc.Service");
тз.выбратьСТроки();
Пока тз.ПолучитьСтроку() = 1 Цикл
свц.AddString(тз.Поиск);
КонецЦикла;
рез = свц.FilterValue("", 1, "");
свц = "";
Если ПустаяСтрока(рез) = 0 Тогда
нс = 0;
тз.НайтиЗначение(рез, нс, "Поиск");
Элем = тз.ПолучитьЗначение (нс, "Ид");
Возврат 1;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции // гв_ПоискЭлементаСправочникаВСписке_svc
//======================================================================
Процедура ПриНажатииКнопкиКлавиатуры(Конт, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО)
Если Альт = 1 Тогда
Если КодКлавиши = 116 Тогда // ALT-F5
ФСО = 0;
РасширениеФормы = СоздатьОбъект("РасширениеФормы");
Попытка
РасширениеФормы.УстановитьФорму(КонтФормы.Форма);
ПолныйТипОбъекта = РасширениеФормы.ПолныйТипОбъекта();
Если Найти(ПолныйТипОбъекта, "ФормаСписка") > 0 Тогда
Владелец = "";
Если Метаданные.Справочник(КонтФормы.Вид()).Владелец.Выбран() = 1 Тогда
Владелец = КонтФормы.Владелец;
КонецЕсли;
ДлинаНаименования = Метаданные.Справочник(КонтФормы.Вид()).ДлинаНаименования;
ДлинаКода = Метаданные.Справочник(КонтФормы.Вид()).ДлинаКода;
Если (ДлинаНаименования > 0) и (ДлинаКода > 0) Тогда
Элем = "";
Если гв_ПоискЭлементаСправочникаВСписке_svc(КонтФормы.Вид(), Владелец, Элем) = 1 Тогда
КонтФормы.АктивизироватьОбъект(Элем);
Попытка
КонтФормы.Активизировать("Наименование", 0);
Исключение
КонецПопытки;
КонецЕсли;
Иначе
Сообщить("В справочнике вида """+ КонтФормы.Вид() +""" быстрый поиск невозможен.");
КонецЕсли;
КонецЕсли;
Исключение
КонецПопытки;
КонецЕсли;
КонецЕсли;
КонецПроцедуры