Как ускорить поиск и рефакторинг в 1С при работе с конфигурациями, расширениями и внешними файлами?

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

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

Переход на 1C:Enterprise Development Tools (EDT)

Самый очевидный способ получить «умный» и быстрый поиск — это использование EDT. В отличие от стандартного Конфигуратора, EDT строит полноценный индекс всего проекта. Разберем основные преимущества этого подхода:

  1. Smart Rename: При изменении имени реквизита или метода система автоматически предлагает обновить все упоминания не только в программном коде, но и в формах, схемах компоновки данных (СКД) и других метаданных.
  2. Мгновенный поиск: После первичной индексации поиск по проекту происходит практически моментально.
  3. Проверка целостности: EDT подсвечивает ошибки в реальном времени, если после рефакторинга остались неразрешенные ссылки.

Использование VS Code и декомпозиция кода

Если переход на EDT кажется слишком сложным, проанализируем альтернативный вариант — связку VS Code и Git. Для этого необходимо выгрузить конфигурацию, расширения и внешние обработки в файлы (декомпозировать их). Рассмотрим по шагам, как это организовать:

  1. Используйте инструменты типа precommit1c или gitsync для автоматической выгрузки метаданных в файлы XML и модули .bsl.
  2. Откройте полученный каталог как Workspace в VS Code.
  3. VS Code автоматически проиндексирует все текстовые файлы. Поиск через Ctrl+Shift+F по всей структуре (конфигурация + расширения + внешние файлы) будет выполняться за доли секунды.

Интеллектуальный анализ с BSL Language Server

Чтобы поиск в VS Code был не просто текстовым, а контекстным, разберем возможность подключения BSL Language Server. Этот инструмент позволяет:

Сверхбыстрый поиск с помощью Ripgrep

Если ваша основная задача — только поиск строк в огромных конфигурациях (например, ERP), проанализируем утилиту ripgrep (rg). Это консольный инструмент, который работает значительно быстрее стандартного поиска Windows или VS Code. Его можно интегрировать прямо в VS Code, что позволит находить вхождения префиксов или имен реквизитов в тысячах файлов метаданных почти мгновенно.

Автоматизация через OneScript

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


// Пример логики перебора файлов для замены текста
Файлы = НайтиФайлы(КаталогПроекта, "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
    Текст = Новый ЧтениеТекста(Файл.ПолноеИмя);
    Содержимое = Текст.Прочитать();
    Текст.Закрыть();
    
    НовоеСодержимое = СтрЗаменить(Содержимое, "преф_Реквизит", "Реквизит");
    
    Запись = Новый ЗаписьТекста(Файл.ПолноеИмя);
    Запись.Записать(НовоеСодержимое);
    Запись.Закрыть();
КонецЦикла;

Важное замечание по платформе

Стоит отметить, что в последних версиях платформы (начиная с 8.3.27) многие проблемы с работой СКД в расширениях были исправлены. Это позволяет более смело переносить доработки из внешних отчетов в расширения, что упрощает глобальный поиск и рефакторинг стандартными средствами Конфигуратора, так как всё хранится в рамках одной информационной базы.

← На главную