Поиск по коду конфигурации 1С: Конфигуратор, выгрузка в файлы и EDT

· 9 мин

Содержание

Найти нужную строку в коде конфигурации 1С быстрее всего глобальным поиском: в Конфигураторе откройте Правка → Глобальный поиск (или нажмите Ctrl+Shift+F), введите текст и получите список всех модулей, где он встречается. Для поиска внутри одного открытого модуля хватит Ctrl+F. А чтобы найти, где используется конкретный справочник или документ, щёлкните объект в дереве метаданных правой кнопкой и выберите Поиск ссылок на объект.

Это три базовых инструмента. Но у каждого есть ограничения: глобальный поиск не видит код, спрятанный в XML-свойствах, локальный работает только по активному окну, а поиск ссылок находит ссылки на метаданные, а не на произвольную подстроку. Когда база большая или искать нужно хитро, в ход идут выгрузка конфигурации в текстовые файлы и внешние утилиты.

ЗадачаЧем искать
Строка в открытом модулеCtrl+F в Конфигураторе
Не знаю, в каком модуле лежитГлобальный поиск Ctrl+Shift+F
Где используется справочник/документПоиск ссылок на объект
По регулярке, по XML, по всему сразуВыгрузка в файлы + ripgrep/Notepad++
Найти ошибки и неоптимальный кодBSL Language Server, SonarQube
Поиск использований метода1С:EDT, Ctrl+Shift+G
Перед поиском по коду
Выполнено: 0 / 5

Поиск внутри открытого модуля

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

  • Ctrl+F — поиск по тексту текущего модуля. В диалоге задаются флаги С учётом регистра и Слово целиком.
  • F3 — перейти к следующему вхождению, Shift+F3 — к предыдущему.
  • Ctrl+H — поиск с заменой в текущем модуле.
  • F12 — перейти к определению процедуры или функции, на имени которой стоит курсор.
  • Ctrl+- (минус) — вернуться назад после перехода по F12.

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

Если нужно понять, откуда вызывается процедура, в которой вы находитесь, используйте не текстовый поиск, а глобальный поиск по её имени — так вы увидите все точки вызова из других модулей.

Глобальный поиск по всей конфигурации

Глобальный поиск — главный инструмент, когда вы не знаете, в каком именно модуле лежит нужный фрагмент.

  1. Откройте Правка → Глобальный поиск или нажмите Ctrl+Shift+F.
  2. В поле поиска введите искомую строку — имя процедуры, кусок текста сообщения пользователю, имя реквизита.
  3. Задайте область поиска. Можно искать по всей конфигурации или ограничиться выделенной веткой дерева метаданных (например, только по документам).
  4. Отметьте флаги: С учётом регистра, Слово целиком, а также что именно искать — по текстам модулей, по комментариям, по свойствам.
  5. Нажмите Искать. Результаты откроются отдельным окном списком.

Двойной щелчок по строке результата открывает нужный модуль и ставит курсор на найденное место. Окно результатов не закрывается само — можно последовательно обходить все вхождения.

Перед массовой заменой через глобальный поиск с заменой сделайте выгрузку конфигурации в файл (.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.
Почему глобальный поиск не находит строку, которая точно есть?
Он ищет по текстам модулей и части строковых свойств, но не по всему XML. Запросы в СКД, макеты, часть свойств форм он может пропустить. Выгрузите конфигурацию в файлы и ищите по ним.
Чем отличается поиск ссылок на объект от текстового поиска?
Текстовый ищет совпадение строки. Поиск ссылок на объект находит реальные места использования справочника, документа или реквизита — включая формы, роли и реквизиты других объектов.
Как искать по коду по регулярному выражению?
Встроенный поиск Конфигуратора регулярки не поддерживает. Выгрузите конфигурацию в файлы и ищите по .bsl через ripgrep, Notepad++ или VS Code, либо работайте в 1С:EDT.
Можно ли искать по коду, не открывая Конфигуратор?
Да, если заранее выгрузить конфигурацию в файлы. По папке с .bsl и .xml работает любой внешний поиск. Но саму выгрузку делают из Конфигуратора или пакетным запуском платформы.