В начало

Интерактивный поиск по РС «Контакты»

            Для интерактивного поиска по регистру сведений (РС) «Контакты» нужно создать новую обработку, добавить реквизит типа «Динамический список», форму, поле ввода, ну и немного подправить запрос.

            Для примера, можно взять регистр сведений «Контакты», данные которого приведены ниже. Некие данные уже частично внесены в него.

Рис. 1. Регистр сведений «Контакты»

Рис. 1. Регистр сведений «Контакты»

 

            Собственно сам регистр структурно состоит из двух измерений: Контрагент, ВидКонтактнойИнформации и одного ресурса ЗначениеКонтактнойИнформации.

Рис. 2. Структура регистра «Контакты»

 

            Итак, создаем новую обработку, на которой создаем форму и добавляем реквизит. Тип реквизита выбираем в виде динамического списка, у которого в свойствах на закладке «Объект» устанавливаем произвольный запрос, настраиваем его, вызывая конструктор запроса. Перетаскиваем его в область элементов формы.

            Также добавляем и перетаскиваем реквизит «СтрокаПоиска» типа «Строка», у которого устанавливаем свойство «ОбновлениеТекстаРедактирования  = Не использовать».

Рис. 3. Окно настройки списка произвольного запроса

Рис. 3. Окно настройки списка произвольного запроса

 

            В конструкторе запроса тыркаем на закладку «Условия» и добавляем условия для поиска, где ЗначениеКонтактнойИнформации будет подобно параметру поиска.

Листинг 1. Запрос

ВЫБРАТЬ

      Контактыонтрагент,

      КонтактыидКонтактнойИнформации,

      КонтактыначениеКонтактнойИнформации

ИЗ           

      РегистрСведенийонтакты КАК Контакты

ГДЕ

      КонтактыначениеКонтактнойИнформации ПОДОБНО &ПараметрПоиска

 

            Также нужно создать события. Первое событие для формы «ПриСозданииНаСервере», а второе для СтрокиПоиска – «АвтоПодбор».

Листинг 2. Процедуры в модуле формы

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

      РСКонтактыараметры.УстановитьЗначениеПараметра("ПараметрПоиска","%");

КонецПроцедуры

 

&НаКлиенте

Процедура СтрокаПоискаАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)

      РСКонтактыараметры.УстановитьЗначениеПараметра("ПараметрПоиска","%" + Текст + "%");

КонецПроцедуры

 

            Результаты работы такого поиска показаны ниже. В поисковую строку начинаем вводить текст, который нужно найти, при этом результаты выводятся в соответствии с тем что мы ищем, в данном случае слово «Москва» в адресе контрагентов.

Рис. 4. Обработка «Интерактивный поиск» в пользовательском режиме