Как быстро найти расширение, в котором добавлен или изменен объект метаданных?

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

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

Метод 1. Использование глобального поиска в Конфигураторе

Это самый очевидный способ, но у него есть одна важная особенность: платформа ищет только в тех объектах, которые «видны» конфигуратору в данный момент. Разберем по шагам, как правильно настроить глобальный поиск для охвата всех расширений.

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

  1. Откроем список расширений через меню Конфигурация — Расширения конфигурации.
  2. Для того чтобы поиск сработал, расширения должны быть открыты. Однако открывать 300 штук вручную — трудоемкая задача. Попробуем воспользоваться горячими клавишами Ctrl + Shift + F для вызова окна глобального поиска.
  3. В поле «Где искать» нажмем на кнопку выбора (три точки). В появившемся окне настройки области поиска нам нужно найти закладку «Конфигурация».
  4. Важный момент: в списке конфигураций для поиска нужно отметить не только основную конфигурацию, но и все расширения. Если их много, обратим внимание на кнопку «Выделить все». Если она спрятана, попробуем растянуть окно или найти её в контекстном меню.

Проанализируем ситуацию: если документ был именно добавлен в расширении (а не просто заимствован), поиск по имени документа в метаданных быстро выдаст результат. Если же нас интересует изменение в модуле, в строке поиска следует указать уникальную строку кода или имя процедуры.

Метод 2. Программный поиск через встроенный язык

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

Рассмотрим пример кода, который поможет найти, в каком расширении находится документ с определенным именем:


ВыборкаРасширений = РасширенияКонфигурации.Получить();
ИмяИскомогоОбъекта = "ИмяВашегоДокумента";

Для Каждого ТекущееРасширение Из ВыборкаРасширений Цикл
    // Проверяем, активно ли расширение и загружено ли оно
    МетаданныеРасширения = ТекущееРасширение.ПолучитьМетаданные();
    
    Если МетаданныеРасширения.Документы.Найти(ИмяИскомогоОбъекта) <> Неопределено Тогда
        Сообщить("Объект найден в расширении: " + ТекущееРасширение.Имя);
    КонецЕсли;
КонецЦикла;

Этот способ хорош тем, что он не требует ручного открытия деревьев метаданных. Мы просто перебираем коллекцию объектов МенеджерРасширенийКонфигурации и используем метод Найти() в соответствующих коллекциях метаданных.

Метод 3. Выгрузка всех расширений в файлы и текстовый поиск

Когда количество расширений зашкаливает, а поиск внутри 1С работает медленно, на помощь приходит консоль дизайнера. Мы можем выгрузить все расширения в текстовые файлы (XML) и воспользоваться мощными инструментами поиска типа Notepad++, VS Code или системной утилитой grep.

Разберем процесс автоматизации выгрузки. Для этого запустим конфигуратор через командную строку с параметром /DumpConfigToFiles. Особенность в том, что нам нужен ключ -AllExtensions, который заставит платформу выгрузить не только основную конфигурацию, но и все подключенные расширения.

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

"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /S"Сервер\База" /N"Админ" /P"Пароль" /DumpConfigToFiles "C:\Distr\AllConfigs" -AllExtensions

После выполнения команды в каталоге C:\Distr\AllConfigs появится множество подпапок, соответствующих каждому расширению. Теперь нам достаточно запустить поиск по файлам в этом каталоге. Ищем файлы с расширением .bsl (модули) или файлы метаданных документов. Этот метод является самым надежным («хардкорным»), так как он позволяет увидеть физическое присутствие кода или объекта в конкретной папке расширения.

Метод 4. Переход к объекту из режима «1С:Предприятие»

Малоизвестный, но эффективный метод — использование стандартных функций платформы в режиме пользователя. В последних версиях платформы 8.3, если у пользователя есть права администратора, можно открыть форму документа и воспользоваться меню «Сервис и настройки» (или кнопка «три точки» в заголовке формы).

Выясним, как это работает:

  1. В режиме «Предприятие» откроем нужный документ.
  2. Найдем пункт меню «Открыть в конфигураторе».
  3. Платформа автоматически переключит фокус на Конфигуратор и позиционирует курсор на объекте в дереве метаданных.

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

Метод 5. Анализ через замер производительности и отладку

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

Проанализируем ситуацию с помощью замера производительности:

  1. Включим Замер производительности в Конфигураторе.
  2. Выполним действие в программе (например, нажмем кнопку «Провести»).
  3. Остановим замер.

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

Метод 6. Использование Журнала регистрации

Если документ был добавлен в расширении и это привело к записи данных, информация об этом может отразиться в Журнале регистрации. Платформа фиксирует события метаданных, и в колонке «Метаданные» может отображаться полное имя объекта, включающее имя расширения. Разберем, как это использовать: установим фильтр по искомому объекту и внимательно изучим структуру его полного имени в событиях «Данные.Изменение» или «Данные.Создание».

Резюме и рекомендации

Работа с 300+ расширениями требует системного подхода. Мы рекомендуем:

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

← На главную