Поиск номенклатуры в табличной части документа по любым вхождениям

10.09.24

Задачи пользователя - Поиск данных

Устали от стокового поиска номенклатуры в табличной части документов? Постоянно вспоминаете, как же называется та или иная позиция? Хватит это терпеть! вводите то, что запомнили, и выбирайте из списка нужное.

Клиент попросил поиск номенклатуры в табличной части документа как и в глобальном поиске, по любому вхождению. В результате написал такой код.

Все через запрос, через "Подобно".

Для снижения нагрузки на базу можно реализовать начала поиска при вводе пробела. В моем коде запросы срабатывают после вводе каждого символа, начиная с с третьего.

Основная особенность в том, что ищет по двум раздельным словам. К примеру, номенклатура: "Шоколад (Milka/С клубникой со сливками/300г.)" можно ввести "Milka 300" и запрос найдет максимально схожую номенклатуру, несмотря на лишние слова между искомыми словами в названии номенклатуры.

Код встраиваем в нужный нам документ:

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

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

 

Поиск номенклатуры в табличной части

См. также

Поиск данных Внешние источники данных Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Если вам нужно автоматически генерировать представления (view) к вашей базе данных 1С (есть две версии - для СУБД MS SQL Server и для PostgreSQL) по структуре метаданных 1С, то вам необходима данная обработка. Наш "Генератор View", другими словами - это коннектор к данным 1С для Power BI - незаменимый помощник для бизнес-аналитиков, работающих с базами 1С из Yandex Datalens/Power BI и т.д. Работает для обычных и управляемых форм под 1С 8.3

230000 руб.

31.07.2020    13745    13    48    

25

Поиск данных Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработки помогут Вам легко и, главное, быстро (в 5 раз и быстрее штатной обработки 1С), выполнить поиск дублирующих данных в Ваших базах 1С на платформах 8.1-8.3. Это позволит уменьшить объем лишней информации в справочниках и документах, планах видов характеристик и др., упростит работу с данными пользователям. А так же можно, одним нажатием, узнать в каких ссылочных объектах есть вообще дубли! Понятное расположение команд и настроек, в сочетании с описанием и справкой, еще упростят процесс. А так же обновления Вы получаете бесплатно в течение года с момента приобретения данных обработок! (Обновление от 27.11.2023, версия 6.12)

10800 руб.

14.05.2012    158964    336    253    

570

Розничная торговля WEB-интеграция Поиск данных Пользователь Платформа 1С v8.3 Оперативный учет 1С:Розница 2 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Альтернатива сервису 1С Номенклатура, не требует подписки ИТС, ищет данные в открытых источниках. Для поиска товара по штрихкоду в сети интернет, полезно для первоначального заполнения базы.

1999 руб.

15.10.2020    18981    23    63    

24

Математика и алгоритмы Инструментарий разработчика Универсальные функции Поиск данных Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Абонемент ($m)

Несколько упакованных в один класс интерфейсов для обработки популярных универсальных коллекций. Для тех, кого раздражает отсутствие действительно единого интерфейса для универсальных коллекций.

5 стартмани

25.09.2024    2228    0    Артано    14    

19

Поиск данных Программист Платформа 1С v8.3 Россия Бесплатно (free)

В этой статье я хочу рассмотреть еще один кейс применения Clickhouse в связке с 1С - оптимизацию поиска в справочнике по ключевым словам. Здесь не будет готового решения, но будут описаны важные моменты, которые позволят легко применить данный кейс в реальности.

18.08.2024    1808    1cnik2    23    

14

Поиск данных Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Отображение и просмотр реквизитов справочника или документа - с бесконечным открытием подуровней.

1 стартмани

14.06.2024    3394    7    RustIG    26    

22

Поиск данных Системный администратор Программист Платформа 1С v8.3 Россия Абонемент ($m)

Статья об опыте развертывания и интеграции с базой данных Manticore Search для быстрого полнотекстового поиска.

1 стартмани

30.11.2023    4563    andreysidor4uk    18    

53

Поиск данных Корректировка данных Пользователь Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

PowerOffice - обработка для поиска, просмотра и обработки данных для пользователей. Доступ к объектам на просмотр и редактирование данных определяется правами пользователя.

1 стартмани

05.06.2023    2327    25    PowerBoy    1    

15
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SirStefan 55 19.10.24 15:09 Сейчас в теме
|ГДЕ 
	|	Номенклатура.ЭтоГруппа = ЛОЖЬ
        |        " + СтрокаПоиска;

и тогда не нужно будет проверять "Если Индекс = 0 Тогда"
Оставьте свое сообщение