Маленькая преамбула... Заказчик захотел исключить из списка найденного элементы справочника, которые помечены на удаление. Стандартный механизм быстрого поиска не предусматривает вмешательства извне, поэтому пришлось придумывать что-то свое.
Используется, конечно же, стандартное событие модуля менеджера справочника
ОбработкаПолученияДанныхВыбора(...)
В представленной тестовой базе показана возможность реализации собственного быстрого поиска, который расширяет возможности по сравнению со стандартным.
Основные преимущества:
- Улучшена визуализация найденных ссылок. Сюда входит отображение типа найденной ссылки (элемент или группа), а так же состояние объекта (помечен на удаление или нет)
- Возможность поиска по практически любым реквизитам, в т.ч. по неиндексированным и строкам неограниченной длины.
- Возможность настройки параметров поиска на свое усмотрение.
- Возможность настройки длины размера списка отображаемых найденных элементов.
- Возможность настройки предоставления информации для пользователя в любом виде.
- и т.п.
Как недостаток:
- Наверное бОльшая ресурсоемкость (меньшая скорострельность), нежели у стандартного. Хотя пользователь этого даже не почувствует.
Из нерешенных проблем:
- При выборе помеченного на удаление элемента система не переспрашивает: "А действительно ли выбирать помеченный?" (решено)
Так же, параллельно с представленным механизмом осталась возможность использования стандартного поиска. Для этого достаточно в любом месте редактируемого поля набрать например "//" (две косые)
В текущей базе есть только два справочника: Номенклатура и Клиенты. В справочнике Номенклатура помеченные на удаление элементы из поиска полностью исключены. В Клиентах помеченные на удаление в поиск попадают, но при этом отображаются как "помеченные". В номенклатуре возможен поиск по артикулу и по любому из наименований.
В клиентах -- по любому из наименований и по ОКПО.
Представленный механизм не претендует на абсолютную универсальность. Хотя встроить его можно для любого справочника с минимальными доработками / изменениями.
Если еще немного поколдовать над ним, то на основе этого возможно сделать и универсальный механизм, который смог бы определять, например, на основе метаданных, по каким реквизитам требуется производить поиск + в простом виде указание имен дополнительных реквизитов, по которым нужно искать.