Имя: Пароль:
1C
 
Автоподбор текста
0 SRM1C
 
12.12.17
09:32
День добрый!
Хочу найти контрагента по ФИО/ЭП/телефону.
Сделал событие Автоподбор.

&НаСервере
Функция  КлиентАвтоПодборНаСервере(Текст)
    мСписокВыбора = Новый СписокЗначений;    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    КонтрагентыКонтактнаяИнформация.НомерТелефона,
        |    КонтрагентыКонтактнаяИнформация.Ссылка.Наименование КАК Наименование,
        |    КонтрагентыКонтактнаяИнформация.Ссылка.НаименованиеПолное КАК НаименованиеПолное,
        |    КонтрагентыКонтактнаяИнформация.Ссылка.Ссылка КАК Ссылка,
        |    ВложенныйЗапрос.АдресЭП КАК АдресЭП
        |ИЗ
        |    Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
        |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |            КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка,
        |            КонтрагентыКонтактнаяИнформация.АдресЭП КАК АдресЭП
        |        ИЗ
        |            Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
        |        ГДЕ
        |            КонтрагентыКонтактнаяИнформация.ВидДляСписка = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.EmailКонтрагента)) КАК ВложенныйЗапрос
        |        ПО КонтрагентыКонтактнаяИнформация.Ссылка = ВложенныйЗапрос.Ссылка
        |ГДЕ
        |    (КонтрагентыКонтактнаяИнформация.АдресЭП ПОДОБНО &СтрокаПоиска
        |            ИЛИ КонтрагентыКонтактнаяИнформация.НомерТелефона ПОДОБНО &СтрокаПоиска
        |            ИЛИ КонтрагентыКонтактнаяИнформация.Ссылка.Наименование ПОДОБНО &СтрокаПоиска
        |            ИЛИ КонтрагентыКонтактнаяИнформация.Ссылка.НаименованиеПолное ПОДОБНО &СтрокаПоиска
        |            ИЛИ ВложенныйЗапрос.АдресЭП ПОДОБНО &СтрокаПоиска)
        |    И КонтрагентыКонтактнаяИнформация.ВидДляСписка = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента)";
    
    
Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Текст + "%");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
мСписокВыбора.Добавить(Выборка.Ссылка, Строка(Выборка.ссылка)+ " " +Выборка.НомерТелефона+" "+ Выборка.АдресЭП);
КонецЦикла;
Возврат мСписокВыбора;
КонецФункции


&НаКлиенте
Процедура КлиентАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Если СтрДлина(Текст)<2 Тогда
        Возврат;
    КонецЕсли;

мСписокВыбора = КлиентАвтоПодборНаСервере(Текст);
ДанныеВыбора = мСписокВыбора;
КонецПроцедуры


после срабатывания события, очищается строка ввода, как оставить введенный тест не нашел не в СП и подобных темах.
1 nordbox
 
12.12.17
09:38
ИМХО ну надо что бы этот Текст где то запоминался,
опять же, а как он подбор начинать будет,
например искал ООО текст запомнил,
а потом тебе надо найти ОАО ты первую букву жмешь, а тебе стразу набирается ООО
2 НЕА123
 
12.12.17
09:40
неужто там один параметр?
3 SRM1C
 
12.12.17
10:01
Нужно как стандартный автоподбор работает сделать, но поиск по моим полям поиска производить.
В стандартном же не он показывает совпадение без очистки строки. (1) У меня выпадающий список, который должен сужаться с написанием строки, а он очищает.
4 nordbox
 
12.12.17
10:06
имхо мне кажется где то этот текст запомнить, а когда повторный поиск начинаешь, то параметром текст для поиска передавать текст от начала строки поиска до курсора не используя буквы после курсора
на счет очистки ничего не скажу
5 catena
 
12.12.17
10:28
6 SRM1C
 
12.12.17
12:56
Переделывать типовой механизм не вариант. в другой базе аналогичный код почему-то работает без очистки.
Может есть у кого еще варианты ?