January 5, 2022

Сомнительный запрос

Самописный документооборот на 1С 8.3, правда на обычных формах... В базе около семи тысяч контрагентов. Обычно их и не бывает сильно больше, если это не работа с физическими лицами. Запрос поиска (отбора) контрагентов выглядит сомнительно...

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

На первый взгляд должно работать долго. Присутствуют разыменования и соответственно при выполнении будут неявные соединения таблиц. Наверно лучше так не писать. Надо было явно объединять выборки из нужных таблиц. Но тем не менее рассматриваемый запрос синтаксически корректен, прост, логичен и удобен для доработки. И выполняется он на нагруженной базе (150-200 активных пользователей) на имеющемся оборудовании практически мгновенно (доли секунды). Если бы контрагентов было в разы больше и запрос подтормаживал, то тогда я бы занялся его оптимизацией.

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

←2 | заметка 3 | 4→