Как увеличить количество результатов в выпадающем списке поиска 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

Понимаем ограничения платформы

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

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

Разбираем альтернативные подходы к решению задачи

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

1. Использование собственного окна подбора

Если пользователям требуется расширенный функционал (больше строк, поиск по характеристикам, артикулам, множественным условиям), лучшим решением будет создание собственной формы подбора. Это позволяет нам полностью контролировать вывод данных.

В такой форме мы можем использовать:

2. Программная обработка события выбора

Мы можем вмешаться в стандартный процесс выбора через событие НачалоВыбора или АвтоПодборТекста в поле ввода. Рассмотрим, как это работает на практике. В обработчике события мы можем программно отменить стандартное поведение и открыть форму, которая будет формировать результат на основании нашего собственного запроса.

Пример реализации логики подбора через собственный список значений:


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

Такой подход позволяет нам выводить не 10-15 стандартных записей, а ровно столько, сколько нужно для бизнеса, например 40 или более, сохраняя контроль над нагрузкой на сервер.

3. Реализация интеллектуального поиска по нескольким словам

Часто пользователи хотят искать товар по фрагментам наименования, например: «мдф 18 фрез мат». Стандартный поиск не всегда справляется с такой задачей эффективно. Мы можем реализовать процедуру в общем модуле, которая будет разбивать поисковую строку на слова и искать соответствия по каждому из них:

Рассмотрим структуру такого поиска:

  1. Принимаем строку ввода от пользователя.
  2. Разбиваем строку на массив слов.
  3. Для каждого слова формируем условие ПОДОБНО %Слово%.
  4. Объединяем условия в один запрос к базе данных.

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

Важные рекомендации по проектированию

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

Основные советы для реализации:

Подводя итог, можно сказать, что техническое ограничение платформы — это не преграда, а защита системы от перегрузок. Используя возможности Обработчиков событий и написание кастомных запросов, мы можем создать для пользователей максимально удобный и быстрый поиск, который будет работать стабильно даже при огромных объемах номенклатуры.

← На главную