Поиск по коду конфигурации 1С: Конфигуратор, выгрузка в файлы и EDT
Содержание
Найти нужную строку в коде конфигурации 1С быстрее всего глобальным поиском: в Конфигураторе откройте Правка → Глобальный поиск (или нажмите Ctrl+Shift+F), введите текст и получите список всех модулей, где он встречается. Для поиска внутри одного открытого модуля хватит Ctrl+F. А чтобы найти, где используется конкретный справочник или документ, щёлкните объект в дереве метаданных правой кнопкой и выберите Поиск ссылок на объект.
Это три базовых инструмента. Но у каждого есть ограничения: глобальный поиск не видит код, спрятанный в XML-свойствах, локальный работает только по активному окну, а поиск ссылок находит ссылки на метаданные, а не на произвольную подстроку. Когда база большая или искать нужно хитро, в ход идут выгрузка конфигурации в текстовые файлы и внешние утилиты.
| Задача | Чем искать |
|---|---|
| Строка в открытом модуле | Ctrl+F в Конфигураторе |
| Не знаю, в каком модуле лежит | Глобальный поиск Ctrl+Shift+F |
| Где используется справочник/документ | Поиск ссылок на объект |
| По регулярке, по XML, по всему сразу | Выгрузка в файлы + ripgrep/Notepad++ |
| Найти ошибки и неоптимальный код | BSL Language Server, SonarQube |
| Поиск использований метода | 1С:EDT, Ctrl+Shift+G |
Поиск внутри открытого модуля
Самый быстрый сценарий — вы уже стоите в нужном модуле и ищете переменную, имя процедуры или комментарий.
Ctrl+F— поиск по тексту текущего модуля. В диалоге задаются флагиС учётом регистраиСлово целиком.F3— перейти к следующему вхождению,Shift+F3— к предыдущему.Ctrl+H— поиск с заменой в текущем модуле.F12— перейти к определению процедуры или функции, на имени которой стоит курсор.Ctrl+-(минус) — вернуться назад после перехода поF12.
Отдельно полезна панель процедур и функций слева от текста модуля (список всех методов). По ней удобно прыгать, когда модуль на несколько тысяч строк, а искать нужно по имени метода, а не по вхождению текста.
Если нужно понять, откуда вызывается процедура, в которой вы находитесь, используйте не текстовый поиск, а глобальный поиск по её имени — так вы увидите все точки вызова из других модулей.
Глобальный поиск по всей конфигурации
Глобальный поиск — главный инструмент, когда вы не знаете, в каком именно модуле лежит нужный фрагмент.
- Откройте
Правка → Глобальный поискили нажмитеCtrl+Shift+F. - В поле поиска введите искомую строку — имя процедуры, кусок текста сообщения пользователю, имя реквизита.
- Задайте область поиска. Можно искать по всей конфигурации или ограничиться выделенной веткой дерева метаданных (например, только по документам).
- Отметьте флаги:
С учётом регистра,Слово целиком, а также что именно искать — по текстам модулей, по комментариям, по свойствам. - Нажмите
Искать. Результаты откроются отдельным окном списком.
Двойной щелчок по строке результата открывает нужный модуль и ставит курсор на найденное место. Окно результатов не закрывается само — можно последовательно обходить все вхождения.
Перед массовой заменой через глобальный поиск с заменой сделайте выгрузку конфигурации в файл (.cf) как резервную копию. Откатить пакетную замену по всем модулям вручную почти невозможно.
Глобальный поиск ищет по тексту модулей и по ряду строковых свойств, но не по всему содержимому XML. Запросы в схемах компоновки данных, макеты, роли и некоторые реквизиты форм он может не находить. Если поиск «ничего не нашёл», а вы уверены, что строка есть, — переходите к выгрузке в файлы.
Поиск ссылок на объект метаданных
Эта задача отличается от текстового поиска. Вам нужно узнать не «где встречается слово», а «где реально используется этот справочник, документ или реквизит».
Щёлкните объект в дереве конфигурации правой кнопкой и выберите Поиск ссылок на объект. Конфигуратор покажет все места, где объект задействован: реквизиты других объектов, формы, модули, подсистемы, роли, критерии отбора.
Когда это незаменимо:
- 🔍 Перед удалением объекта — чтобы не оставить битые ссылки. Удаление без проверки ссылок приводит к ошибкам при обновлении конфигурации.
- 🔗 Чтобы понять зависимости перед доработкой — что сломается, если изменить тип реквизита.
- 🧩 Для разбора чужой конфигурации — быстро увидеть, как связаны объекты.
Есть и обратная операция — Поиск ссылок на объект в документации и проверка ссылочной целостности при закрытии конфигурации, но для повседневной работы хватает контекстного Поиск ссылок на объект.
Выгрузка конфигурации в файлы и поиск по ним
Когда встроенного поиска не хватает — например, нужно искать по регулярному выражению, по всем свойствам сразу или сравнить две конфигурации , — код выгружают в текстовые файлы и ищут внешними средствами.
В Конфигураторе выберите Конфигурация → Выгрузить конфигурацию в файлы… и укажите пустую папку. На выходе — дерево каталогов: модули лежат в файлах .bsl, свойства объектов и формы — в .xml.
Не путайте две операции. Выгрузить конфигурацию в файл… создаёт один двоичный файл .cf — это бэкап, искать по нему текстом нельзя. Для поиска нужна именно выгрузка в файлы (во множественном числе).
Дальше ищите по папке любым инструментом полнотекстового поиска:
- Notepad++ —
Поиск → Найти в файлах(Ctrl+Shift+F), укажите папку и маску*.bsl. - ripgrep (
rg) в командной строке — быстрее всего на больших выгрузках. - VS Code — открыть папку и искать по проекту, в том числе по регулярным выражениям.
Пример поиска всех вызовов НачатьТранзакцию в выгруженных модулях через ripgrep:
rg "НачатьТранзакцию" --glob "*.bsl"
Поиск по XML-свойствам (например, найти, где используется конкретное имя реквизита формы), которого глобальный поиск Конфигуратора не видит:
rg "ИмяРеквизита" --glob "*.xml"
Плюс подхода: вы ищете сразу по всему — модулям, формам, макетам, ролям. Минус: после правок файлы нужно загрузить обратно через Конфигурация → Загрузить конфигурацию из файлов… и обновить конфигурацию
базы данных. Поэтому выгрузку в файлы чаще используют именно для анализа и поиска, а правят код в самом Конфигураторе.
Выгрузка без открытия Конфигуратора
Если нужно регулярно обновлять текстовую копию кода (например, для поиска или для хранения в системе контроля версий), выгрузку запускают пакетно из командной строки платформы — Конфигуратор при этом открывать не надо.
Команда использует ключ /DumpConfigToFiles: запускается 1cv8 в режиме DESIGNER, указываются база, пользователь и папка выгрузки. Точные параметры и синтаксис ключа смотрите в документации к платформе — их удобно один раз прописать в bat-файл и запускать по расписанию.
Текстовая выгрузка .bsl особенно полезна в паре с системой контроля версий. Один раз выгрузили код в репозиторий — и дальше ищете по нему не только по содержимому, но и по истории: кто и когда менял конкретную строку.
Утилиты и обработки для анализа кода
Текстовый поиск отвечает на вопрос «где». Анализаторы кода отвечают на вопрос «что не так» — находят потенциальные ошибки, неоптимальные запросы, нарушения стандартов. По сути это поиск по коду с умными правилами.
- BSL Language Server — открытый анализатор языка 1С. Даёт подсветку диагностик прямо в редакторе (VS Code, 1С:EDT) и умеет проверять выгруженные
.bslиз командной строки. - SonarQube с плагином для BSL — для командной разработки: считает метрики, копит историю замечаний, встраивается в сборку.
- Проверка модулей в самом Конфигураторе (
Конфигурация → Проверка модулей) — синтаксический контроль, поиск неиспользуемых переменных и обращений к несуществующим методам. - АПК (автоматизированная проверка конфигураций) — инструмент для проверки на соответствие требованиям к тиражным решениям.
Для рутинного поиска «подозрительных» мест — запросов в цикле, прямых обращений к таблицам, устаревших методов — удобнее один раз настроить BSL Language Server, чем каждый раз искать такие конструкции вручную глобальным поиском.
Типовые находки анализаторов, которые трудно отловить обычным поиском:
- 🔁 запрос внутри цикла — частая причина медленной работы;
- 🗑️ неиспользуемые процедуры и переменные — кандидаты на удаление;
- ⚠️ обращение к несуществующим методам и реквизитам — потенциальные ошибки при выполнении;
- 📐 отклонения от стандартов разработки — важны для тиражных решений.
Отдельно стоит синтакс-помощник платформы (Справка → Синтакс-помощник): это не поиск по вашему коду, а поиск по встроенному языку — быстро находит точное имя и синтаксис метода, когда вы помните смысл, но забыли написание.
Поиск по коду в 1С:EDT
1С:EDT построена на Eclipse и хранит код в текстовых файлах проекта, поэтому полнотекстовый поиск там гибче, чем в Конфигураторе.
Ctrl+H— открыть диалог поиска. На вкладкеFile Searchищите по тексту с поддержкой регулярных выражений и масок файлов.Ctrl+Shift+G(Найти использования) — найти все места, где используется выбранный метод, переменная или объект. Это аналогПоиск ссылок на объект, но работает и для процедур кода.F3на имени метода — перейти к объявлению.- Поиск по имени типа или объекта метаданных — через навигацию проекта.
Главное отличие от Конфигуратора: EDT понимает структуру кода, а не только текст. Поиск использований учитывает область видимости и находит именно обращения к конкретному методу, а не любое совпадение по строке. Для рефакторинга и разбора больших конфигураций это удобнее.
Если вы работаете в Конфигураторе, но нужен мощный поиск, рабочий компромисс — выгрузить конфигурацию в файлы и искать по .bsl внешним инструментом, не переходя на EDT целиком.
Поиск по истории изменений кода
Отдельный тип поиска — не «где строка», а «когда и кем она появилась». Пригождается при разборе регрессий: что-то работало, перестало, нужно найти правку.
- Хранилище конфигурации 1С хранит версии модулей. В Конфигураторе через
Конфигурация → Хранилище конфигурации → Историявидно, в какой версии менялся объект и чьим захватом. Это поиск по версиям на уровне объектов. - Git поверх текстовой выгрузки даёт построчную историю. После выгрузки в файлы и коммита работают обычные инструменты: поиск по истории правок конкретной строки, сравнение версий, просмотр, кто автор каждой строки файла.
Для командной разработки связка «текстовая выгрузка + git» постепенно вытесняет поиск по хранилищу: искать по истории строк в репозитории быстрее и нагляднее, чем сравнивать версии объектов в хранилище.
Типичные ошибки при поиске по коду
Несколько моментов, на которых чаще всего спотыкаются.
Ищут по .cf вместо выгрузки в файлы. Файл .cf двоичный, текстовый поиск по нему ничего не даст. Нужна выгрузка именно в файлы.
Забывают про флаг Слово целиком. Поиск Дата без этого флага найдёт и ДатаНачала, и ДатаОкончания, и десятки других вхождений. Для точного поиска имени включайте флаг.
Полагаются только на глобальный поиск. Он не видит часть XML-свойств. Если строка точно есть в конфигурации, а поиск её не находит, — проверьте через выгрузку в файлы.
Удаляют объект без Поиск ссылок на объект. Это даёт битые ссылки и ошибки при следующем обновлении конфигурации. Сначала проверка ссылок — потом удаление.
Делают массовую замену без копии. Глобальный поиск с заменой правит все модули сразу. Отката нет — только восстановление из .cf.
Частые вопросы
Какая горячая клавиша у глобального поиска в Конфигураторе?
Ctrl+Shift+F. Локальный поиск по текущему модулю — Ctrl+F, следующее вхождение — F3.Почему глобальный поиск не находит строку, которая точно есть?
Чем отличается поиск ссылок на объект от текстового поиска?
Как искать по коду по регулярному выражению?
.bsl через ripgrep, Notepad++ или VS Code, либо работайте в 1С:EDT.Можно ли искать по коду, не открывая Конфигуратор?
.bsl и .xml работает любой внешний поиск. Но саму выгрузку делают из Конфигуратора или пакетным запуском платформы.