Расширение функционала поиска по справочникам УТ 11

Опубликовал Стас Стас (glime) в раздел Программирование - Практика программирования

Доработка конфигурации для быстрого поиска по реквизитам справочников.

Всем добрый день.

Данная статья предназначена для ускорения понимания разработки. Не секрет что многие предприятия "допиливают" под себя "Управление торговлей" и самой "страдаемой" формой являются формы списков справочников. Одно из требований заказчиков, это организация поиска по наименованию значений реквизитов справочника.

Рассмотрим это на примере справочника "Номенклатура".

Одно из требований заказчика было организация быстрого отбора по значению наименования реквизита "Производитель"

Способ установки фильтра из "Все действия" клиента не устроил.

Решения данной задачи наименьшими изменениями было осуществлено добавлением строк в запрос в функцию "ТекстЗапросаПоискаПоОбласти" в общем модуле "ПодборТоваровСервер".

//ТекстЗапроса = "
//|ВЫБРАТЬ ПЕРВЫЕ %МаксКоличество%
//| СправочникНоменклатура.Ссылка КАК Значение,
//| ""Номенклатура"" КАК Метаданные
//|ИЗ
//| Справочник.Номенклатура КАК СправочникНоменклатура
//|ГДЕ
//| (СправочникНоменклатура.Наименование %ВидСравнения% &СтрокаПоиска
//| Или СправочникНоменклатура.НаименованиеПолное %ВидСравнения% &СтрокаПоиска
//| Или СправочникНоменклатура.КодДляПоиска %ВидСравнения% &СтрокаПоиска
//| Или СправочникНоменклатура.Артикул %ВидСравнения% &СтрокаПоиска)";

ТекстЗапроса = "
|ВЫБРАТЬ ПЕРВЫЕ %МаксКоличество%
| СправочникНоменклатура.Ссылка КАК Значение,
| ""Номенклатура"" КАК Метаданные
|ИЗ
| Справочник.Номенклатура КАК СправочникНоменклатура
|ГДЕ
| (СправочникНоменклатура.Наименование %ВидСравнения% &СтрокаПоиска
| Или СправочникНоменклатура.НаименованиеПолное %ВидСравнения% &СтрокаПоиска
| Или СправочникНоменклатура.КодДляПоиска %ВидСравнения% &СтрокаПоиска
| Или СправочникНоменклатура.Артикул %ВидСравнения% &СтрокаПоиска
| 
Или СправочникНоменклатура.Производитель.Наименование %ВидСравнения% &СтрокаПоиска)"; // решена проблема с производителем

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

Данный метод так же подходит и к прочим справочникам.

См. также

Добавить вознаграждение
Комментарии
1. Serj (Serj1C) 458 10.07.13 07:13 Сейчас в теме
С производителем проблема решена.
Порождена новая - с производительностью
2. Стас Стас (glime) 34 10.07.13 08:42 Сейчас в теме
На производительность не влияет, проверено на 98 тыс номенклатуры со 150 производителями, данный запрос исполняется на сервере и добавление даже вложенного запроса(обращение к параметру реквизита через точку) не сильно повлияет на производительность.
3. vic777tor (vic777tor) 10.07.13 08:47 Сейчас в теме
"РеквИзит" пишется через "и", а не "РеквЕзит".
"то есть мы не влазием" - а "влазиЕм" это как?
4. Стас Стас (glime) 34 10.07.13 09:16 Сейчас в теме
5. Дмитрий Елисеев (w-divin) 10.07.13 11:04 Сейчас в теме
(2) glime,

а как будет если имеем порядка 500 тыщ номенклатуры и 15 тыщ производителей?
а ежели по такому принципу подобавлять фильтры не тока по производителю, а по другим реквизитам? на производительности скажется очень даже заметно...
6. Стас Стас (glime) 34 10.07.13 11:43 Сейчас в теме
(5) w-divin, очень интересно было бы поэкспериментировать, но у меня нет такой базы, попробую сечас обработками догнать экспериментальную до такого количества.
7. Стас Стас (glime) 34 10.07.13 15:31 Сейчас в теме
(5) w-divin, буду краток, эксперимент проведен удачно.
8. Serj (Serj1C) 458 11.07.13 09:10 Сейчас в теме
(7) Даже с видом сравнения "Подобно" ?
Ваш запрос не удовлетворяет как минимум двум пунктам Типичных причин неоптимальной работы запросов
9. Стас Стас (glime) 34 12.07.13 11:09 Сейчас в теме
(8) так "подобно" использоваться и в стандартной конфигурации, запрос отличается только одной строчкой.
К сожалению не могу опубликовать данную базу, так как в ней содержится информация клиента. По принципу не ухудшить показатели типового решения, так тут практически прокатывает.