Добрый вечер, подскажите пожалуйста почему отбор не срабатывает ? не судите строго только учусь (((

&НаКлиенте
Процедура ПоНаим_СтрокаПоискаНоменклатураПриИзмененииПосле(Элемент)

 ЗначениеПоиска = СтрокаПоиска();

 ПолеОтбора = Новый ПолеКомпоновкиДанных("Наименование");

 ЭлементОтбора = Неопределено;
 Для Каждого Отбор Из СписокНоменклатура.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
  Если Отбор.ЛевоеЗначение = ПолеОтбора Тогда
   ЭлементОтбора = Отбор;
   Прервать
  КонецЕсли;
 КонецЦикла;

 Если ЭлементОтбора = Неопределено Тогда
  ЭлементОтбора = СписокНоменклатура.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
  ЭлементОтбора.ЛевоеЗначение = ПолеОтбора;
 КонецЕсли;

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

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

Функция СтрокаПоиска()
 СтрокаПоиска = СтрокаПоискаНоменклатура;
 МассивСловПоиска = СтрРазделить(СтрокаПоиска, " ", Ложь);
 Для Каждого Сч из МассивСловПоиска Цикл

  ДлинаСч = СтрДлина(Сч);

  Если ДлинаСч <= 1 Тогда

   Индекс = МассивСловПоиска.Найти(Сч);
   МассивСловПоиска.Удалить(Индекс);
  КонецЕсли;

 КонецЦикла;
 Наименование = СтрСоединить(МассивСловПоиска, "%");
 Возврат Наименование;

КонецФункции
---
Откуда такая информация?
(3) Наверно потому, что динамический список умеет делать это "из коробки" без колхоза.
(1) СписокНоменклатура.КомпоновщикНастроек.Настройки.Отбор
Используйте СписокНоменклатура.Отбор.
---
Видимо, вы доработали событие ПриИзменении типового поля ввода для поиска с аннотацией "После". Вы не отменили отбор, который установился в типовом коде, а лишь добавили к нему свой. Тут либо своё поле нужно, либо аннотация "Вместо".
---
смотрите 4 и 5 посты. В 8 это не сделано.
---
Насколько вижу, значение отбора получается в лучшем случае %мама%, в худшем, если слов несколько %папа%курит%сигареты%.
в подобно учитываются только первый и последний символы %. В последнем случае будет искаться вхождение строки папа%курит%сигареты в наименовании.
---
Откуда такая информация?
(3) Наверно потому, что динамический список умеет делать это "из коробки" без колхоза.
(1) СписокНоменклатура.КомпоновщикНастроек.Настройки.Отбор
Используйте СписокНоменклатура.Отбор.
---
Не срабатывает (( может за из за расширение ?
---
как не срабатывает? Может просто не то ожидаете от кода?
Для примера:
%1%12%
будут найдены значения Наименования которые содержат и 1 и 12 в такой именно последовательности, но которые могут иметь еще символы вначале конце и между ними. Наименование просто 12 не попадает в такой отбор.Наименование 121 так же не попадает в отбор.
---
Ожидание от кода: переделать поиск в подборе товара в УТ 11.5, сделать по сокращенным наименованиям, например (вен. ок.), а в список должен вывести «Вентиляция оконная».
Код срабатывает, в откладке ошибок не показывает, отбор создается, но по факту он не применяется, вот и прошу помочь понять, где я ошибаюсь.
---
А почему бы сначала не найти в справочнике список номенклатур подобных по вводимым словам и потом , уже сформированный список впихнуть в отбор? Зачем выполнять поиск подобных в самом отборе? Если я правильно понял задачу!
---
Хотя одно сокращение работает, два — нет.
---
Видимо, вы доработали событие ПриИзменении типового поля ввода для поиска с аннотацией "После". Вы не отменили отбор, который установился в типовом коде, а лишь добавили к нему свой. Тут либо своё поле нужно, либо аннотация "Вместо".
---
если c аннотацией «Вместо» то динамический список перестает вопще реагировать 🥲, я вот думаю может запрос изменить 🧐 сказывается слабое знание платформы подскажите книги 📚
---
и где выполнено: "Используйте СписокНоменклатура.Отбор"?
---
выполнено ?
---
смотрите 4 и 5 посты. В 8 это не сделано.
---
Получилось спасибо большое )))