Каждый разработчик 1С рано или поздно сталкивается с ситуацией, когда стандартного глобального поиска (Ctrl+Shift+F) становится недостаточно. В классическом конфигураторе поиск работает исключительно по точному вхождению подстроки. Если вам нужно найти фрагмент кода, где между двумя ключевыми словами (например, Функция и Массив) находится неопределенный текст, обычный поиск не справится. В этой статье мы разберем несколько эффективных способов решения данной задачи с использованием встроенных и внешних инструментов.
Рассмотрим наиболее современный и официальный способ решения проблемы. Среда разработки EDT, построенная на базе Eclipse, изначально проектировалась с учетом потребностей в мощном поиске. В отличие от старого конфигуратора, здесь реализована полноценная поддержка регулярных выражений (RegEx).
Для выполнения поиска выполним следующие шаги:
Функция.*?Массив.Этот механизм позволяет гибко настраивать область поиска, ограничиваясь конкретными проектами, объектами или даже рабочими наборами (working sets). Проанализируем преимущество: поиск в EDT работает значительно быстрее глобального поиска в конфигураторе за счет предварительной индексации файлов.
Если вы привыкли работать в классическом конфигураторе, но вам нужно выполнить сложный поиск по маске, воспользуемся проверенным методом выгрузки исходных кодов. Разберем этот процесс по шагам:
В VS Code нажмем Ctrl+Shift+F и включим режим регулярных выражений (иконка .*). Теперь мы можем использовать сложные маски поиска. Например, для поиска всех экспортных процедур с определенным словом в названии используем шаблон:
Процедура\s+.*Массив.*\(.*\)\s+Экспорт
Важно помнить, что поиск через сторонние редакторы позволяет находить текст, разделенный переносами строк, что практически невозможно в стандартном окне 1С.
Для тех, кто хочет сэкономить время на ручной выгрузке, проанализируем возможность использования пакетного режима работы конфигуратора. Мы можем создать скрипт, который будет автоматически выгружать модули и запускать поиск. Команда для выгрузки выглядит следующим образом:
1cv8.exe DESIGNER /IBName "ИмяБазы" /DumpConfigToFiles "C:\Dist" /Out "C:\log.txt"
После выгрузки мы можем использовать системные утилиты поиска, такие как findstr в Windows или grep в Linux/WSL. Рассмотрим пример простой команды в PowerShell для поиска по маске:
Select-String -Path "C:\Dist\*.bsl" -Pattern "Функция.*Массив"
Этот способ особенно полезен, когда нужно регулярно проверять код на соответствие стандартам разработки или искать определенные паттерны в больших конфигурациях.
Если вы не хотите покидать привычную среду конфигуратора и не готовы переходить на EDT, разберем возможности сторонних аддонов. Популярный инструмент Снегопат добавляет функционал, которого не хватает в стандартной поставке платформы.
Для поиска по регулярным выражениям в Снегопате:
Этот инструмент позволяет искать текст по регулярным выражениям прямо внутри открытого конфигуратора, не прибегая к выгрузке файлов.
Выясним важный технический нюанс: ни один из вышеперечисленных методов (кроме ручного поиска в конфигураторе) не поможет, если текст находится в зашифрованном модуле или в модуле без исходных кодов. При выгрузке конфигурации в файлы такие модули будут либо проигнорированы, либо представлены в зашифрованном виде. Для работы с ними необходимо знать пароль и открывать их непосредственно в редакторе платформы.
Таким образом, несмотря на отсутствие встроенного поиска по маске в платформе 1С:Предприятие, мы имеем широкий арсенал инструментов. Выбор зависит от ваших задач: для разового поиска подойдет выгрузка в VS Code, для постоянной разработки — переход на EDT, а для расширения возможностей текущего конфигуратора — использование специализированных аддонов.