Почему перестал работать поиск по первым буквам в меню «Все функции» 1С и как это исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Каждый технический специалист или опытный пользователь 1С привык к быстрому и удобному поиску в дереве метаданных. Ранее, открыв окно Все функции, достаточно было набрать первые буквы названия нужного справочника или документа (например, «номен»), и система мгновенно переносила курсор к первому подходящему объекту. Однако после обновления платформы до версии 8.3.12 многие обнаружили, что этот привычный механизм перестал работать.

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

Выясняем причину: позиция фирмы «1С»

Многие разработчики после столкновения с этой проблемой посчитали ее багом очередного релиза платформы. Однако официальные разъяснения на партнерском форуме и анализ изменений в файле сопроводительной документации к версии 8.3.12 (V8Update) показали, что это изменение сделано намеренно.

Проанализируем предпосылки этого решения:

  1. Унификация интерфейса. В веб-клиенте быстрый поиск по первым буквам без предварительного фокуса на строке ввода никогда не поддерживался технологически из-за ограничений браузеров. В тонком и толстом клиентах эта функция работала. Фирма «1С» назвала такое различие «незапланированным поведением системы» (то есть фактической ошибкой проектирования) и отключила эту возможность в десктопных клиентах ради обеспечения единообразия работы интерфейса на всех платформах.
  2. Переход на стандартные механизмы. Разработчикам и пользователям было официально предложено использовать стандартное окно поиска, вызываемое по сочетанию клавиш Ctrl+F, а также навигацию по результатам с помощью клавиш F3 и Ctrl+F3.

Тем не менее, для многих это решение оказалось крайне неудобным, особенно при работе с крупными конфигурациями уровня ERP, где дерево метаданных содержит сотни объектов, а постоянное использование дополнительных диалоговых окон замедляет работу.

Разбор заблуждений: почему не помогает очистка индекса ППД?

В процессе обсуждения проблемы на форумах часто можно встретить совет: «Попробуйте очистить индекс полнотекстового поиска (ППД) и выполнить переиндексацию». Давайте разберем по шагам, почему в данном конкретном случае это действие абсолютно бесполезно.

Механизм полнотекстового поиска в 1С отвечает за индексацию данных базы данных — элементов справочников, документов, записей регистров. Когда вы ищете конкретного контрагента или товар в форме списка, СУБД действительно обращается к таблицам полнотекстового поиска.

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

Как решить проблему и вернуть удобный поиск?

Существует несколько вариантов решения данной проблемы в зависимости от того, какими возможностями по обновлению системы вы располагаете.

Способ 1. Использование альтернативных горячих клавиш

Если вы вынуждены работать на релизах платформы линейки 8.3.12 — 8.3.14, единственным встроенным инструментом остается стандартный поиск.

Рассмотрим алгоритм действий:

  1. Откройте окно Все функции.
  2. Нажмите сочетание клавиш Ctrl+F.
  3. В появившемся окне введите искомую подстроку и нажмите Enter.
  4. Используйте клавишу F3 для перехода к следующему найденному элементу в дереве метаданных.

Способ 2. Обновление платформы на актуальные версии (рекомендуемый вариант)

Волна недовольства со стороны сообщества разработчиков заставила фирму «1С» пересмотреть подход к юзабилити этого интерфейса. В последующих версиях платформы (начиная с 8.3.15 и окончательно в 8.3.17+) механизм был полностью переработан:

  1. Команда Все функции была переименована в Функции для технического специалиста. Чтобы ее включить, необходимо перейти в меню Сервис — Параметры и установить флажок Отображать команду "Функции для технического специалиста".
  2. В самом окне функций появилась полноценная встроенная строка поиска в верхней части формы.
  3. Автоматическая фокусировка: Разработчики реализовали удобное поведение системы. Теперь пользователю не нужно нажимать никаких дополнительных клавиш. Достаточно открыть форму функций и просто начать набирать текст на клавиатуре. Курсор автоматически переносится в строку поиска, а дерево метаданных мгновенно фильтруется, показывая только те ветки и объекты, которые содержат введенную подстроку.

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

Способ 3. Создание собственной внешней обработки

Если по каким-то причинам вы не можете обновить платформу, а стандартное окно поиска по Ctrl+F замедляет вашу работу, отличным выходом будет использование внешней обработки, заменяющей стандартное окно Все функции.

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

Для создания дерева метаданных можно использовать следующий алгоритм на встроенном языке 1С:


// Процедура заполняет дерево значений объектами метаданных
Процедура ЗаполнитьДеревоМетаданных(ДеревоОбъектов) Экспорт
    
    ДеревоОбъектов.Строки.Очистить();
    
    // Добавим ветку для справочников
    ВеткаСправочники = ДеревоОбъектов.Строки.Добавить();
    ВеткаСправочники.Имя = "Справочники";
    ВеткаСправочники.Синоним = "Справочники";
    
    Для Каждого Метаобъект Из Метаданные.Справочники Цикл
        НоваяСтрока = ВеткаСправочники.Строки.Добавить();
        НоваяСтрока.Имя = Метаобъект.Имя;
        НоваяСтрока.Синоним = ?(ЗначениеЗаполнено(Метаобъект.Синоним), Метаобъект.Синоним, Метаобъект.Имя);
    КонецЦикла;
    
    // Добавим ветку для документов
    ВеткаДокументы = ДеревоОбъектов.Строки.Добавить();
    ВеткаДокументы.Имя = "Документы";
    ВеткаДокументы.Синоним = "Документы";
    
    Для Каждого Метаобъект Из Метаданные.Документы Цикл
        НоваяСтрока = ВеткаДокументы.Строки.Добавить();
        НоваяСтрока.Имя = Метаобъект.Имя;
        НоваяСтрока.Синоним = ?(ЗначениеЗаполнено(Метаобъект.Синоним), Метаобъект.Синоним, Метаобъект.Имя);
    КонецЦикла;
    
КонецПроцедуры

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

Таким образом, проанализировав ситуацию, мы видим, что временное неудобство с поиском в платформе 8.3.12 было лишь переходным этапом к гораздо более мощному и быстрому механизму фильтрации метаданных, который доступен всем пользователям современных версий платформ 1С.

← На главную