Поиск данных справочников по вхождению всех слов

04.11.14

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

Очень многие сотрудники, пришедшие на работу в новую компанию, сталкиваются с проблемой незнания товарного ассортимента. При этом проблема возникает именно в том, что нет четкого алгоритма заведения, по которому потом возможен стандартный поиск. Ниже описано, как это можно решить простым способом.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Поиск
.epf 7,39Kb ver:1.0
25 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

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

Каким образом это можно реализовать? Да очень просто. Давайте по порядку.

1) Разбиваем нужную нам строку на массив слов, используя как разделитель символ пробела

2) Первым делом выбираем все элементы справочника без каких либо условий

3) Проходимся циклом по Массиву слов и делаем запрос к справочнику, но уже с условиемм ПОДОБНО "%НАШЕСЛОВО%"

4) Результат запроса выгружаем в массив значение и этот массив подставляем параметром в следующий шаг цикла

 

Т.е. по сути мы постоянно получаем результат, и из этого результата дальше ищем по второму и третьему и т.д слову.

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

 

Всем спасибо за внимание.

Вступайте в нашу телеграмм-группу Инфостарт

универсальный поиск

См. также

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5. Работает на возможностях платформы, внешние компоненты не используются.

6000 руб.

25.02.2026    6748    23    1    

25

Файловый обмен (TXT, XML, DBF), FTP Поиск данных Инструменты администратора БД Корректировка данных Системный администратор Разработчик 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная обработка позволит Вам легко и просто, а главное - быстро, выполнить сравнение данных между ЛЮБЫМИ базами (и РИБ, по правилам конвертаций) по контрольным суммам выбранных объектов баз 1С, работающих на платформах 8.3 и выше. Удобный и понятный интерфейс в виде "мастера". Высокая скорость сравнения достигается за счет специального алгоритма расчета контрольной суммы объекта/записи и сравнения по данным суммам объектов 2х баз через файл. Имеется возможность выбора реквизитов, по которым система будет сравнивать объекты. Сравнение количества записей в движениях документов, возможность сравнивать данные по правилам конвертации и не только! Выбор объектов конфигурации для КАЖДОГО узла в отдельности с индивидуальным отбором для каждого объекта конфигурации, работа с FTP, сохранение или загрузка настроек, сохранение или загрузка результата сравнения, регистрация на обмен объекта и его движений. (Обновление от 12.11.2024, версия 2.2-2.5)

24400 руб.

27.10.2017    47915    33    15    

51

Поиск данных Закрытие периода Учет документов Аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С:Бухгалтерия 3.0 Россия Платные (руб)

Обработка предназначена для поиска дубликатов документов «Поступление» и «Реализация» в базе 1С. Поиск выполняется по номеру, дате и сумме документа как по всем организациям, так и в разрезе выбранной организации. Позволяет быстро выявить задвоенные документы, избежать ошибок в учете и сократить время на проверку данных.

6100 руб.

20.07.2026    566    1    0    

2

НДС 22% Поиск данных Регламентированный учет и отчетность Взаиморасчеты Учет доходов и расходов Анализ учета Учет документов Аналитик Бухгалтер Пользователь 1С 8.3 1С:Бухгалтерия 3.0 Россия Налоговый учет НДС Платные (руб)

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

6100 руб.

06.07.2026    579    1    0    

2

Поиск данных Аналитик Бухгалтер Пользователь Руководитель проекта Стажер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Беларусь Россия Казахстан Платные (руб)

Встройте искусственный интеллект прямо в вашу 1С за один вечер. «Цифровой сотрудник» - это чат с нейросетью внутри привычного интерфейса 1С, который умеет отвечать не «в общем», а по вашим данным: обучите его на регламентах, инструкциях и прайсах компании, подключите к данным информационной базы - и получите ассистента, который консультирует бухгалтера по учёту, отвечает менеджеру по прайсу и достаёт цифры из базы по запросу на обычном русском языке. Поддерживаются OpenAI, DeepSeek, Qwen и локальные LLM - включая вариант, когда данные вообще не покидают ваш контур.

3660 руб.

03.08.2026    2003    1    0    

4

Учетные задачи Поиск данных Подбор и обработка объектов 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

1.обработка позволяет автоматически вычислить дубли и привести их к единому наименованию во всех документах. 2.так же есть возможность в документах поменять счета учета для номенклатуры. Например разные бухгалтера оформляют поступление одного и того же товара - один занес на 10.01, второй на 41.01 в результате в ОСВ у нас минусы. В обработке есть возможность наглядно увидеть такие ошибки и тут же их поправить не бегая по всем документам. Достаточно поставить галочку у номенклатуры и указать счет учета который надо найти и счет учета на который надо его заменить. Обработка сама вычислит документы в которых номенклатура с галочкой была задействована и заменит счета учета. Что бы не было излишнего изменения документов, в обработке указываются типы документов, где операция замены счета разрешена (например Поступление ТМЦ, Реализация, Отчет о розничных продажах, возврат покупателю итд.)

7320 руб.

05.06.2026    955    2    0    

4

Поиск данных Разработчик Пользователь 1С 8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

Умное сравнение табличных документов с визуальной подсветкой. В отличие от стандартного сравнения, обработка ищет отличия по ключевому значению, игнорируя сдвиги строк. Результат — цветовая маркировка добавленных, удаленных и измененных строк прямо в документе + точный лог расхождений по каждой ячейке.

1 стартмани

27.04.2026    2219    18    war41k    5    

16
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. BigB 193 04.11.14 19:04 Сейчас в теме
Полнотекстовый поиск Вам в помощь!
KasperRWF; HiKS; ojiojiowka; +3 – Ответить
2. Justindj 25 04.11.14 20:17 Сейчас в теме
(1) BigB, Разницу понимаешь между использованием полнотекстового поиска и моей идеей? Включение в режиме конфигуратора использование индексов и увеличение размера базы из за этого, постоянно обновлять индекс. Мою идею можно развить и искать по любому реквизиту в любом справочнике или документе и обрабатывать результат в удобной для пользователя форме. Сам смысл быстро подобрать товар или контрагента по набору слов и дальше его использовать для подстановки в документы или еще кудато...
3. DO_WHILE_LOOP 360 06.11.14 16:14 Сейчас в теме
Соглашусь с Justindj полнотекстовый поиск не всегда подходит, но предложенный алгоритм не оптимальный, я бы его оптимизировал например так:
Функция ПолучитьСписокВыбора(Текст, ВидСправочника)
	
	// Создаем список, который каждый раз будет заменятся новыми значениями
	СписокВыбора = Новый СписокЗначений;
	
	Если ЗначениеЗаполнено(Текст) Тогда 
		
		// Создадим текст условия поиска
		УсловиеПоиска = "";
		ТекстТемп = СтрЗаменить(Текст, " ", Символы.ПС);
		Для Счетчик = 1 По СтрЧислоСтрок(ТекстТемп) Цикл 
			УсловиеПоиска = УсловиеПоиска + "И Справочник.Наименование ПОДОБНО ""%" + СтрПолучитьСтроку(ТекстТемп, Счетчик) + "%""" + Символы.ПС;
		КонецЦикла;
		
		
		// А вот и сам алгоритм
		Запрос = Новый Запрос;
		Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 25
		|	Справочник.Ссылка КАК Значение
		|ИЗ
		|	Справочник." + ВидСправочника + " КАК Справочник
		|ГДЕ
		|	Справочник.ЭтоГруппа = ЛОЖЬ
		|	" + УсловиеПоиска + "
		|
		|УПОРЯДОЧИТЬ ПО
		|	Справочник.Наименование";
		
		СписокВыбора.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Значение"));
		
	КонецЕсли;
	
	Возврат СписокВыбора;
	
КонецФункции

Показать
4. pereligins 21 24.03.15 18:21 Сейчас в теме
Исходный пример и пример в комментарии работают очень медленно, особенно на больших справочниках.
Рекомендую делать одним запросом, работает даже быстрее, причем еще и сортирует результат по наименованию:

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