Работа с платформой 1С:Предприятие 7.7 сегодня часто вызывает вопросы даже у опытных специалистов, поскольку многие механизмы этой версии существенно отличаются от современных стандартов 1С 8.3. Одной из таких особенностей является поведение поиска в форме списка справочника. Пользователи часто сталкиваются с ситуацией: при вводе символов в колонке «Наименование» система мгновенно позиционируется на нужном элементе, но при попытке аналогичного поиска по колонке «Код» ничего не происходит. Рассмотрим подробно, почему так возникает и как настроить корректную работу поиска.
Для начала проанализируем ситуацию с технической стороны. В 1С 7.7 тип данных «Код» для справочника может быть либо текстовым, либо числовым. Разберем разницу в их хранении на уровне базы данных (будь то файлы DBF или таблицы SQL):
Выясним причину, по которой поиск «не работает»: когда пользователь начинает набирать цифры, находясь в колонке с числовым кодом, система ищет совпадение с первого символа строки. Поскольку в начале строки стоят пробелы, а пользователь вводит цифру, соответствие не находится. Рассмотрим, как это преодолеть.
Самый простой «лайфхак» для пользователя, не требующий изменения конфигурации, заключается в ручном вводе недостающих символов. Если мы знаем, что длина кода в справочнике составляет, например, 5 символов, а нам нужно найти код «1»:
В этот момент система увидит строку « 1» и успешно выполнит позиционирование. Проанализируем удобство этого метода: он подходит для редких операций, но крайне неудобен при массовой работе. Опытные пользователи часто используют строку состояния (нижняя панель экрана), чтобы видеть, сколько пробелов они уже ввели.
Важно понимать, что быстрый поиск (интерактивный набор символов) в 1С 7.7 неразрывно связан с текущим индексом. Система ищет данные только в той колонке, по которой в данный момент отсортирован список. Если список отсортирован по наименованию, ввод цифр может либо не дать результата, либо привести к поиску наименования, начинающегося с цифры.
Разберем, как быстро переключать режимы поиска с помощью горячих клавиш:
Ctrl + 1 — переключить сортировку (и, соответственно, поиск) на Код.Ctrl + 2 — переключить сортировку на Наименование.Посмотрим на ситуацию: даже если вы переключили сортировку на код, правило лидирующих пробелов для числового типа кода все равно остается в силе. Поэтому для полноценного решения проблемы на уровне разработки стоит рассмотреть изменение метаданных.
Если вы являетесь разработчиком, проанализируйте настройки справочника в Конфигураторе. У каждого справочника есть свойство «Поиск по вводу». Оно определяет, по какому полю будет осуществляться быстрый поиск по умолчанию.
Для активации возможности поиска выполните следующие шаги:
Код установлена галочка «Сортировка». Без этого индекса поиск невозможен.Рассмотрим более продвинутые методы, которые позволяют избавить пользователя от необходимости вводить пробелы. Самый эффективный из них — смена типа кода с числового на текстовый. Рассмотрим по шагам, как это сделать правильно:
Если же изменять структуру метаданных нельзя (например, в сильно кастомизированных базах, где на числовой тип кода завязаны сложные алгоритмы), можно воспользоваться внешними компонентами, такими как FormEx. С их помощью можно перехватить событие нажатия клавиши в форме списка и программно «добить» строку пробелами слева перед выполнением поиска.
Пример логики для перехвата (условный синтаксис):
// В обработке ожидания или через перехват событий FormEx
Процедура ПриНажатииКнопкиКлавиатуры(Контекст, Клавиша)
Если ТекущаяКолонка = "Код" Тогда
// Здесь можно реализовать программное позиционирование
// через АктивизироватьОбъект() или НайтиСледующийУзел()
КонецЕсли;
КонецПроцедуры
Напоследок разберем еще один нюанс — Серии кодов. В настройках справочника может быть установлено значение «В пределах подчинения». В этом случае, если пользователь находится внутри группы (папки), быстрый поиск будет работать только среди элементов этой группы. Чтобы найти элемент в другом месте, придется либо выйти в корень справочника, либо использовать стандартный диалог поиска (вызываемый через Ctrl + F или иконку бинокля).
Стандартное окно поиска (бинокль) работает иначе, чем быстрый набор: оно зачастую игнорирует лидирующие пробелы и выполняет перебор записей, что работает медленнее, но надежнее в плане нахождения конкретного числа.
Резюмируем: Для корректного поиска по коду в 1С 7.7 необходимо либо использовать текстовый тип кода, либо не забывать о лидирующих пробелах при числовом коде, предварительно убедившись, что список отсортирован по колонке «Код» (Ctrl + 1).