Для этого используем документ "Счет на оплату покупателю", как пример.
Для начала нужно дописать процедуру окончания ввода текста элемента управления формы документа поля ввода контрагента.
Процедура КонтрагентОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
// ФантичПоискНомера / обработаем введенный телефон
Цифры = "0123456789";
СтрКоличество = СтрДлина(Текст);
тел = "";
Для Счетчик = 1 По СтрКоличество Цикл
Если НЕ Найти(Цифры,Сред(Текст,Счетчик,1)) = 0 Тогда
тел = тел + Сред(Текст,Счетчик,1);
КонецЕсли;
КонецЦикла;
Если СтрДлина(тел) = 10 Тогда // это телефон
КодСтраны = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойКодСтраныТелефона");
Если ПустаяСтрока(КодСтраны) Тогда
Сообщить("Для текущего пользователя не указан код страны телефона! Поиск по номеру невозможен.");
Иначе
Текст = КодСтраны + " ("+Лев(тел,3)+") " + УправлениеКонтактнойИнформацией.ПривестиНомерТелефонаКШаблону(Прав(тел,7));
КонецЕсли;
КонецЕсли;
// ФанКонец //
РезультатЗапроса = ПроцедурыПоискаПоСтроке.ПолучитьРезультатЗапросаАвтоподбора(Текст, Новый Структура, Тип("СправочникСсылка.Контрагенты"), 1);
Если НЕ РезультатЗапроса.Пустой() Тогда
ПроцедурыПоискаПоСтроке.ОкончаниеВводаТекстаВЭлементеУправления(Элемент, Текст, Значение, СтандартнаяОбработка, Новый Структура, ЭтаФорма, Тип("СправочникСсылка.Контрагенты"), мОбработкаПоискаПоСтрокеКонтрагента, мТекстПоискаПоСтрокеКонтрагента, мПоследнееЗначениеЭлементаПоискаПоСтрокеКонтрагента, Ложь);
Возврат;
КонецЕсли;
УправлениеКонтактами.РегистрироватьНовогоКонтрагента(Элемент, Текст, Значение, СтандартнаяОбработка, мОбработкаПоискаПоСтрокеКонтрагента, мТекстПоискаПоСтрокеКонтрагента, мПоследнееЗначениеЭлементаПоискаПоСтрокеКонтрагента, ЭтаФорма, Контрагент, КонтактноеЛицоКонтрагента, Модифицированность, ДанныеНезарегистрированногоКонтрагента);
КонецПроцедуры
Теперь заменить функцию ПолучитьРезультатЗапросаАвтоподбора в общем модуле ПроцедурыПоискаПоСтроке:
Функция ПолучитьРезультатЗапросаАвтоподбора(Знач Текст, СтруктураПараметров, ТипСправочника, КоличествоЭлементов) Экспорт
ВеткаМетаданных = ПолучитьВеткуМетаданныхПоТипу(ТипСправочника);
Если ВеткаМетаданных = "" Тогда
Возврат Неопределено;
КонецЕсли;
ПустаяСсылкаТипа = Новый(ТипСправочника);
МетаданныеОбъекта = ПустаяСсылкаТипа.Метаданные();
КоллекцияПоискаПоПодстроке = МетаданныеОбъекта.ВводПоСтроке;
Если КоллекцияПоискаПоПодстроке.Количество() = 0 Тогда
Возврат Неопределено;
КонецЕсли;
ИмяТаблицыСправочника = МетаданныеОбъекта.Имя;
ИмяТаблицыОграничений = ?(КоллекцияПоискаПоПодстроке.Количество() = 1, "ТаблицаВложенногоЗапроса", "ТаблицаСправочника");
СтрокаОтборовПоСтруктуре = "";
Запрос = СоздатьЗапросДляСпискаАвтоподбора(Текст, СтрокаОтборовПоСтруктуре, СтруктураПараметров, ИмяТаблицыОграничений);
СтрокаПолей = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ ПЕРВЫЕ " + Строка(КоличествоЭлементов) + "
| ТаблицаВложенногоЗапроса.Ссылка КАК Ссылка,
|";
Если МетаданныеОбъекта.ДлинаНаименования > 0 Тогда
СтрокаПолей = СтрокаПолей + "
| ТаблицаВложенногоЗапроса.Ссылка.Наименование КАК Наименование,";
КонецЕсли;
Если МетаданныеОбъекта.ДлинаКода > 0 Тогда
СтрокаПолей = СтрокаПолей + "
| ТаблицаВложенногоЗапроса.Ссылка.Код КАК Код,";
КонецЕсли;
Если КоллекцияПоискаПоПодстроке.Количество() = 1 Тогда
ЭлементКоллекции = КоллекцияПоискаПоПодстроке[0];
ТипЗначенияПоиска = ОпределитьТипОграниченийПоПолю(ЭлементКоллекции.Имя, МетаданныеОбъекта);
Если ЭлементКоллекции.Имя <> "Наименование" И ЭлементКоллекции.Имя <> "Код" Тогда
СтрокаПолей = СтрокаПолей + "
| ТаблицаВложенногоЗапроса.Ссылка." + ЭлементКоллекции.Имя + " КАК " + ЭлементКоллекции.Имя;
КонецЕсли;
Запрос.Текст = Лев(СтрокаПолей, (СтрДлина(СтрокаПолей) - 1)) + "
|ИЗ
| " + ВеткаМетаданных + "." + ИмяТаблицыСправочника + " КАК ТаблицаВложенногоЗапроса
|ГДЕ ";
ОграничениеПоПолю = СформироватьОграничениеПоПолюВхождениеВНачало("ТаблицаВложенногоЗапроса." + ЭлементКоллекции.Имя, ТипЗначенияПоиска);
ОграничениеПоПолю = ОграничениеПоПолю + "
| И НЕ ТаблицаВложенногоЗапроса.ПометкаУдаления ";
Запрос.Текст = Запрос.Текст +"
| " + ОграничениеПоПолю + СтрокаОтборовПоСтруктуре;
Иначе
ПервыйЭлемент = Истина;
СтрокаТаблиц = "";
Для каждого ЭлементКоллекции Из КоллекцияПоискаПоПодстроке Цикл
ТипЗначенияПоиска = ОпределитьТипОграниченийПоПолю(ЭлементКоллекции.Имя, МетаданныеОбъекта);
Если ЭлементКоллекции.Имя <> "Наименование" И ЭлементКоллекции.Имя <> "Код" Тогда
СтрокаПолей = СтрокаПолей + "
| ТаблицаВложенногоЗапроса.Ссылка." + ЭлементКоллекции.Имя + " КАК " + ЭлементКоллекции.Имя + ",";
КонецЕсли;
Если НЕ ПервыйЭлемент Тогда
СтрокаТаблиц = СтрокаТаблиц + "
|
| ОБЪЕДИНИТЬ ВСЕ
|";
КонецЕсли;
ПервыйЭлемент = Ложь;
СтрокаТаблиц = СтрокаТаблиц + "
| ВЫБРАТЬ ПЕРВЫЕ " + Строка(КоличествоЭлементов) + "
| ТаблицаСправочника.Ссылка КАК Ссылка" +
?(ТипСправочника = Тип("СправочникСсылка.Контрагенты"),",
| NULL КАК Представление // Фантич Добавим для сходства количества полей","
|") + "
| ИЗ
| " + ВеткаМетаданных + "." + ИмяТаблицыСправочника + " КАК ТаблицаСправочника
| ГДЕ ";
ОграничениеПоПолю = СформироватьОграничениеПоПолюВхождениеВНачало("ТаблицаСправочника." + ЭлементКоллекции.Имя, ТипЗначенияПоиска);
ОграничениеПоПолю = ОграничениеПоПолю + "
| И НЕ ТаблицаСправочника.ПометкаУдаления ";
СтрокаТаблиц = СтрокаТаблиц +"
| " + ОграничениеПоПолю + СтрокаОтборовПоСтруктуре;
КонецЦикла;
// ФАНТИЧ добавим номер телефона в запрос
Если ТипСправочника = Тип("СправочникСсылка.Контрагенты") Тогда
СтрокаТаблиц = СтрокаТаблиц + "
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ ПЕРВЫЕ " + Строка(КоличествоЭлементов) + "
|
| КИ.Объект.Ссылка КАК Ссылка,
| ВЫРАЗИТЬ(КИ.Представление КАК СТРОКА(100))
| ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КИ
| ГДЕ ";
ОграничениеПоПолю = СформироватьОграничениеПоПолюВхождениеВНачало("КИ.Представление", ТипЗначенияПоиска);
ОграничениеПоПолю = ОграничениеПоПолю + "
| И КИ.Объект ССЫЛКА Справочник.Контрагенты
| И КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)";
СтрокаТаблиц = СтрокаТаблиц +"
| " + ОграничениеПоПолю + СтрокаОтборовПоСтруктуре;
СтрокаПолей = СтрокаПолей + "
| ТаблицаВложенногоЗапроса.Представление,";
КонецЕсли;
// ФанКонец
Запрос.Текст = Лев(СтрокаПолей, (СтрДлина(СтрокаПолей) - 1)) + "
|ИЗ
|
| (
|" + СтрокаТаблиц + "
| ) КАК ТаблицаВложенногоЗапроса";
КонецЕсли;
Возврат Запрос.Выполнить();
КонецФункции
Если у вас все номера записаны в правильно формате, то можно тестировать!