22 июл. 2017 г.

"Живой поиск" на форме 1С Предприятие

Для реализации такого функционала 


нужно:

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

Данная реализация процедур и функций взята из этого сайта.
 

CopyPaste Copyright © 2017 - |- Шаблон создан O Pregador - |- Отредактирован myr4ik07