ОсуществитьПоискКонтактовПоСтроке (БСП)

Автор: 1С
ОбщийМодуль.Взаимодействия
БСП

Осуществить поиск контактов по строке. Выполняет поиск контактов по строке.

// Выполняет поиск контактов по строке.
//
// Параметры:
//  Форма            - ФормаКлиентскогоПриложения - форма для которой осуществляется поиск.
//  ДляАдреснойКниги - Булево - признак того, что поиск осуществляется для адресной книги.
//
// Возвращаемое значение:
//  Строка           - сообщение пользователю по результатам поиска, если такое необходимо.
//
Функция ОсуществитьПоискКонтактовПоСтроке(Форма,ДляАдреснойКниги = Ложь) Экспорт
	
	Форма.НайденныеКонтакты.Очистить();
	
	Если ПустаяСтрока(Форма.СтрокаПоиска) Тогда
		Возврат "";
	КонецЕсли;
	
	Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() = РежимПолнотекстовогоПоиска.Запретить
		ИЛИ НЕ ПолучитьФункциональнуюОпцию("ИспользоватьПолнотекстовыйПоиск") Тогда
		Возврат НСтр("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
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПолучитьВсеКонтактыПоТелефону (БСП)

ВсеКонтактыПоНачалуНаименования (БСП)

ПриПоискеКонтактов (БСП)

КонтактВладелецПриАктивизацииСтроки (БСП)

СписокДоступныхПоисков (БСП)

НайтиПоEmail (БСП)

ВсеКонтактыПоНачалуНаименованияСАдресамиЭлектроннойПочты (БСП)

ЗаполнитьКонтактыПоПредмету (БСП)

ТекстЗапросаПоискКонтактовПоПредмету (БСП)

1С Менеджер конфигураций