Добрый вечер, подскажите пожалуйста почему отбор не срабатывает ? не судите строго только учусь (((
&НаКлиенте
Процедура ПоНаим_СтрокаПоискаНоменклатураПриИзмененииПосле(Элемент)
ЗначениеПоиска = СтрокаПоиска();
ПолеОтбора = Новый ПолеКомпоновкиДанных("Наименование");
ЭлементОтбора = Неопределено;
Для Каждого Отбор Из СписокНоменклатура.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
Если Отбор.ЛевоеЗначение = ПолеОтбора Тогда
ЭлементОтбора = Отбор;
Прервать
КонецЕсли;
КонецЦикла;
Если ЭлементОтбора = Неопределено Тогда
ЭлементОтбора = СписокНоменклатура.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = ПолеОтбора;
КонецЕсли;
Если ЗначениеЗаполнено(ЗначениеПоиска) Тогда
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Подобно;
ЭлементОтбора.ПравоеЗначение = "%" + ЗначениеПоиска + "%";
Иначе
ЭлементОтбора.Использование = Ложь;
КонецЕсли;
КонецПроцедуры
Функция СтрокаПоиска()
СтрокаПоиска = СтрокаПоискаНоменклатура;
МассивСловПоиска = СтрРазделить(СтрокаПоиска, " ", Ложь);
Для Каждого Сч из МассивСловПоиска Цикл
ДлинаСч = СтрДлина(Сч);
Если ДлинаСч <= 1 Тогда
Индекс = МассивСловПоиска.Найти(Сч);
МассивСловПоиска.Удалить(Индекс);
КонецЕсли;
КонецЦикла;
Наименование = СтрСоединить(МассивСловПоиска, "%");
Возврат Наименование;
КонецФункции
&НаКлиенте
Процедура ПоНаим_СтрокаПоискаНоменклатураПриИзмененииПосле(Элемент)
ЗначениеПоиска = СтрокаПоиска();
ПолеОтбора = Новый ПолеКомпоновкиДанных("Наименование");
ЭлементОтбора = Неопределено;
Для Каждого Отбор Из СписокНоменклатура.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
Если Отбор.ЛевоеЗначение = ПолеОтбора Тогда
ЭлементОтбора = Отбор;
Прервать
КонецЕсли;
КонецЦикла;
Если ЭлементОтбора = Неопределено Тогда
ЭлементОтбора = СписокНоменклатура.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = ПолеОтбора;
КонецЕсли;
Если ЗначениеЗаполнено(ЗначениеПоиска) Тогда
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Подобно;
ЭлементОтбора.ПравоеЗначение = "%" + ЗначениеПоиска + "%";
Иначе
ЭлементОтбора.Использование = Ложь;
КонецЕсли;
КонецПроцедуры
Функция СтрокаПоиска()
СтрокаПоиска = СтрокаПоискаНоменклатура;
МассивСловПоиска = СтрРазделить(СтрокаПоиска, " ", Ложь);
Для Каждого Сч из МассивСловПоиска Цикл
ДлинаСч = СтрДлина(Сч);
Если ДлинаСч <= 1 Тогда
Индекс = МассивСловПоиска.Найти(Сч);
МассивСловПоиска.Удалить(Индекс);
КонецЕсли;
КонецЦикла;
Наименование = СтрСоединить(МассивСловПоиска, "%");
Возврат Наименование;
КонецФункции
По теме из базы знаний
- Программисту на заметку: отбор в динамическом списке формы выбора справочника по вхождению значения отбора в заданный список значений
- [Расширения] Отборы в динамических списках
- Отбор в динамическом списке по текущему значению
- Как ограничить поля отбора в динамическом списке и ничего не сломать
- Отборы динамического списка
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Насколько вижу, значение отбора получается в лучшем случае %мама%, в худшем, если слов несколько %папа%курит%сигареты%.
в подобно учитываются только первый и последний символы %. В последнем случае будет искаться вхождение строки папа%курит%сигареты в наименовании.
в подобно учитываются только первый и последний символы %. В последнем случае будет искаться вхождение строки папа%курит%сигареты в наименовании.
(5) как не срабатывает? Может просто не то ожидаете от кода?
Для примера:
%1%12%
будут найдены значения Наименования которые содержат и 1 и 12 в такой именно последовательности, но которые могут иметь еще символы вначале конце и между ними. Наименование просто 12 не попадает в такой отбор.Наименование 121 так же не попадает в отбор.
Для примера:
%1%12%
будут найдены значения Наименования которые содержат и 1 и 12 в такой именно последовательности, но которые могут иметь еще символы вначале конце и между ними. Наименование просто 12 не попадает в такой отбор.Наименование 121 так же не попадает в отбор.
(6) Ожидание от кода: переделать поиск в подборе товара в УТ 11.5, сделать по сокращенным наименованиям, например (вен. ок.), а в список должен вывести «Вентиляция оконная».
Код срабатывает, в откладке ошибок не показывает, отбор создается, но по факту он не применяется, вот и прошу помочь понять, где я ошибаюсь.
Код срабатывает, в откладке ошибок не показывает, отбор создается, но по факту он не применяется, вот и прошу помочь понять, где я ошибаюсь.
А почему бы сначала не найти в справочнике список номенклатур подобных по вводимым словам и потом , уже сформированный список впихнуть в отбор? Зачем выполнять поиск подобных в самом отборе? Если я правильно понял задачу!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот