Осуществить поиск контактов по строке. Выполняет поиск контактов по строке.
// Выполняет поиск контактов по строке.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - форма для которой осуществляется поиск.
// ДляАдреснойКниги - Булево - признак того, что поиск осуществляется для адресной книги.
//
// Возвращаемое значение:
// Строка - сообщение пользователю по результатам поиска, если такое необходимо.
//
Функция ОсуществитьПоискКонтактовПоСтроке(Форма,ДляАдреснойКниги = Ложь) Экспорт
Форма.НайденныеКонтакты.Очистить();
Если ПустаяСтрока(Форма.СтрокаПоиска) Тогда
Возврат "";
КонецЕсли;
Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() = РежимПолнотекстовогоПоиска.Запретить
ИЛИ НЕ ПолучитьФункциональнуюОпцию("ИспользоватьПолнотекстовыйПоиск") Тогда
Возврат НСтр("ru = 'Использование индекса полнотекстового поиска данных запрещено.'");
КонецЕсли;
МассивМетаданных = МассивМетаданныхКонтакты();
СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок(Форма.СтрокаПоиска, 101);
СписокПоиска.ОбластьПоиска = МассивМетаданных;
Попытка
СписокПоиска.ПерваяЧасть();
Исключение
Возврат НСтр("ru = 'При выполнении поиска произошла ошибка, попробуйте изменить выражение поиска.'");
КонецПопытки;
КоличествоНайденныхЭлементов = СписокПоиска.Количество();
Если КоличествоНайденныхЭлементов = 0 Тогда
Возврат "";
КонецЕсли;
МассивСсылок = Новый Массив;
СоответствиеОписаний = Новый Соответствие;
Для Инд = 0 По Мин(КоличествоНайденныхЭлементов, 100)-1 Цикл
ЭлементСписка = СписокПоиска.Получить(Инд);
МассивСсылок.Добавить(ЭлементСписка.Значение);
СоответствиеОписаний.Вставить(ЭлементСписка.Значение, ЭлементСписка.Описание);
КонецЦикла;
Если ДляАдреснойКниги Тогда
ТекстЗапроса = ПолучитьТекстЗапросаПоискКонтактовПоСтрокеСEmail();
Иначе
ТекстЗапроса = ПолучитьТекстЗапросаПоискКонтактовПоСтроке();
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Форма.НайденныеКонтакты.Добавить();
НоваяСтрока.Ссылка = Выборка.Контакт;
НоваяСтрока.Представление = ?(ДляАдреснойКниги ,Выборка.Представление,СоответствиеОписаний.Получить(Выборка.Контакт));
НоваяСтрока.НаименованиеКонтакта = Выборка.Наименование
+ ?(ПустаяСтрока(Выборка.НаименованиеВладельца),
"",
" (" + Выборка.НаименованиеВладельца + ")");
КонецЦикла;
Возврат ?(КоличествоНайденныхЭлементов < 101, "", НСтр("ru = 'Уточните параметры поиска. В списке отображены не все найденные контакты.'"));
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПолучитьВсеКонтактыПоТелефону (БСП)
ВсеКонтактыПоНачалуНаименования (БСП)
КонтактВладелецПриАктивизацииСтроки (БСП)
ВсеКонтактыПоНачалуНаименованияСАдресамиЭлектроннойПочты (БСП)