Почему не работает быстрый поиск номенклатуры в табличной части документа?

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

Часто в доработанных конфигурациях, особенно при интеграции функционала ЕГАИС в УТ 10.3, пользователи сталкиваются с тем, что в строке табличной части нельзя найти номенклатуру обычным вводом наименования. Поле ввода перестает «видеть» справочник, и приходится каждый раз вызывать форму выбора через троеточие. Давайте разберем по шагам, как диагностировать и устранить эту проблему.

1. Проверка настроек реквизита и параметров выбора

Первым делом проанализируем настройки поля ввода. В управляемых формах механизм быстрого поиска (автоподбор) тесно связан со свойствами реквизита формы и самого элемента управления.

  1. Проверьте свойство Автопоиск в конфигураторе для данного элемента формы. Убедитесь, что оно не отключено принудительно.
  2. Изучите Связи параметров выбора. Если на поле наложены жесткие фильтры (например, по типу алкогольной продукции или статусу товара), система может блокировать поиск, пока не будут заполнены зависимые поля. Если фильтр отсекает все элементы, поиск по строке будет возвращать пустой список.
  3. Убедитесь, что тип данных реквизита определен однозначно. Если реквизит имеет составной тип, 1С часто отключает быстрый подбор, так как не может определить, в каком справочнике искать вводимые символы.

2. Анализ событий формы: «НачалоВыбора» и «Автоподбор»

Если в коде формы переопределены события выбора, это часто становится причиной поломки стандартного механизма 1С.

Разберем типичную ситуацию. Если в событии НачалоВыбора разработчик принудительно открывает форму выбора с помощью метода ОткрытьФорму() или через параметры, он может случайно заблокировать стандартную логику обработки ввода. Рассмотрим пример корректной работы с событиями:


// Пример обработки события начала выбора
&НаКлиенте
Процедура ТоварыНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    // Если мы хотим оставить стандартный поиск, флаг должен быть Истина
    СтандартнаяОбработка = Истина;
    
    // Если мы добавили свою логику, убедитесь, что не подавили стандартную
КонецПроцедуры

Всегда проверяйте, не установлен ли флаг СтандартнаяОбработка = Ложь без необходимости. Если этот флаг установлен, стандартный алгоритм поиска по наименованию не запустится.

3. Диагностика через событие «ДанныеВыбора»

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

Чтобы понять, почему поиск не работает, попробуйте отследить выполнение кода в этом событии:

  1. Поставьте точку останова в обработчике ДанныеВыбора для поля номенклатуры.
  2. Проверьте, попадает ли туда управление при вводе символов.
  3. Если управление попадает, посмотрите, какие параметры передаются в запрос или функцию получения данных. Часто проблема кроется в том, что передаваемый ИскатьСтроку (строка ввода) по какой-то причине обрезается или фильтруется условиями в коде, возвращая пустую выборку.

4. Влияние механизмов ЕГАИС

Поскольку проблема часто проявляется в документах с интеграцией ЕГАИС, стоит обратить внимание на то, какая номенклатура ожидается в ТЧ. Возможно, в документе используется СправочникСсылка.КлассификаторАлкогольнойПродукции, а пользователь пытается искать в СправочникСсылка.Номенклатура.

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

5. Использование замера производительности

Если визуально всё настроено верно, но поиск не работает, воспользуйтесь замером производительности в режиме 1С:Предприятие:

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

← На главную