Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отбор по наименованию Содержит и Равно
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Yevhenii_S
1С:Предприятие 8.2 (8.2.19.130)

"Управление торговым предприятием для Украины", редакция 1.2.
Разработка конфигурации: "ABBYY Ukraine", 2007-2015 (1.2.29.1)

Здравствуйте коллеги.
Хочу реализовать что то подобное "Живому поиску" по названию номенклатуры.
Для этого ловлю событие "АвтоподборТекста"
в событии делаю классический отбор по наименованию. Всё вроде работает. Но возникает ньюанс к примеру есть ном. "ГП-01 мужской" и "П-01". Если делаю сравнение "содержит" то при вводе "П-0" в список попадают все записи с "ГП-0". Когда делаю отбор по сравнению с "Равно" нужно полностью вводить название модели что не очень удобно, да и часто есть необходимость быстро выбрать по порядку наименования типа "П-01", "П-02", ......"П-09"
пробовал добавлять в значение сравнения символ "%", но он не работает так же как в запросе.

Есть ли у кого то идеи по этому поводу?
код привожу, заранее благодарен

Процедура ПолеВвода1ПриИзменении(Элемент)
    пДлинаСтроки = СтрДлина(Строка(ЭлементыФормы.ПолеВводаПоиск.Значение));
    Если пДлинаСтроки >=2 Тогда
        ЭлементыФормы.СправочникДерево.ИерархическийПросмотр = Ложь;
        
        ЭлементыФормы.СправочникДерево.Значение.Отбор.Наименование.ВидСравнения = ВидСравнения.Содержит;
        ЭлементыФормы.СправочникДерево.Значение.Отбор.Наименование.Значение=Элемент.Значение;
        ЭлементыФормы.СправочникДерево.Значение.Отбор.Наименование.Использование=Истина;
        
    Иначе
        ЭлементыФормы.СправочникДерево.Значение.Отбор.Наименование.Использование=ложь;
        ЭлементыФормы.СправочникДерево.ИерархическийПросмотр = Истина;
        ЭлементыФормы.СправочникДерево.ТекущийРодитель = Справочники.Номенклатура.НайтиПоНаименованию("Продукция");
    КонецЕсли;
    ТекущийЭлемент = ЭлементыФормы.СправочникДерево;
    
КонецПроцедуры




упс, выложил код с события "При изменении"
вот с автоподбора
Процедура ПолеВвода1АвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)
    
    Если СтрДлина(Текст) >=1 Тогда
        ЭлементыФормы.СправочникДерево.ИерархическийПросмотр = Ложь;
        ЭлементыФормы.СправочникДерево.Значение.Отбор.Наименование.ВидСравнения = ВидСравнения.Содержит;
        ЭлементыФормы.СправочникДерево.Значение.Отбор.Наименование.Значение=Текст+"%";
        ЭлементыФормы.СправочникДерево.Значение.Отбор.Наименование.Использование=Истина;
    Иначе
        ЭлементыФормы.СправочникДерево.Значение.Отбор.Наименование.Использование=ложь;
        ЭлементыФормы.СправочникДерево.ИерархическийПросмотр = Истина;
        ЭлементыФормы.СправочникДерево.ТекущийРодитель = Справочники.Номенклатура.НайтиПоНаименованию("Продукция");
    КонецЕсли;
    
КонецПроцедуры


Хотя суть дела не меняется)
TrasserZero
Yevhenii_S @ Сегодня, 14:29 необходимо зарегистрироваться для просмотра ссылки ,
Шаблоны подстановки имхо только..
Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.
Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:
• % (процент): последовательность, содержащая любое количество произвольных символов
• _ (подчеркивание): один произвольный символ
• […] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок
В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.
• [^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки.
Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.
Например, шаблон “%АБВ[0-9][абвг]\_абв%” СПЕЦСИМВОЛ “\” означает подстроку, состоящую из последовательности символов:
буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в.
Причем перед этой последовательностью может располагаться произвольный набор символов.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.