Когда конфигурация содержит тысячи объектов, сотни ролей и десятки расширений — понять, «что от чего зависит», становится нетривиальной задачей. Analyzer 1C решает эту проблему: инструмент парсит выгрузку конфигурации (ZIP), строит граф зависимостей между объектами и показывает результат в удобном веб-интерфейсе.
В статье покажу на примере 1С:ERP. Управление холдингом (18 780 модулей, 341 925 функций, 2 032 роли), как инструмент помогает разработчику ориентироваться в крупной конфигурации.
Ключевая особенность: Analyzer 1C загружает не только основную конфигурацию, но и все расширения. Конфигуратор 1С показывает расширение изолированно — вы видите объекты одного расширения, но не видите полной картины: какие функции основной конфигурации переопределены, какие объекты заимствованы несколькими расширениями одновременно, как расширения зависят друг от друга. Собрать эту информацию штатными средствами платформы практически невозможно — нужно открывать каждое расширение по отдельности и вручную сопоставлять. Analyzer 1C объединяет основную конфигурацию и все расширения в единый граф, показывая заимствования, переопределения и перекрёстные зависимости в одном интерфейсе.
Что умеет инструмент
- Парсит выгрузку конфигурации — загружаете ZIP-файл через веб-интерфейс, парсер извлекает все объекты метаданных, модули, функции, вызовы между ними и права ролей.
- Строит граф зависимостей — для каждого объекта показывает, какие модули он вызывает и кто вызывает его (входящие/исходящие связи).
- Анализирует запросы к таблицам — находит обращения к объектам метаданных через запросы в BSL-коде, динамических списках форм и макетах СКД. Показывает, кто читает данные из регистра или справочника, включая табличные части и виртуальные таблицы.
- Анализирует роли — какие роли имеют права на объект, с какими правами (чтение, изменение, добавление, удаление, RLS). Находит программные проверки РольДоступна() в коде — показывает, где логика зависит от роли.
- Полный анализ расширений — показывает заимствованные объекты, переопределённые функции, добавленные модули. Видно, какое расширение что изменило, и какие объекты затронуты несколькими расширениями одновременно.
- Навигация по подсистемам — дерево подсистем конфигурации с группировкой по типам метаданных.
- Конструктор профилей — выбираете набор ролей (включая роли из расширений) и получаете итоговую картину: какие объекты будут доступны пользователю и с какими правами.
- Поиск — мгновенный поиск по всем объектам, ролям и подсистемам. Результаты появляются по мере ввода текста.
Скорость: все операции выполняются практически мгновенно. Выбрали объект — зависимости, роли и связи отображаются за доли секунды. Для сравнения: «Поиск ссылок на объект» в конфигураторе 1С для крупной конфигурации вроде ERP может занимать минуты. Analyzer 1C работает с предварительно построенным графом в ArangoDB, поэтому любой запрос — это обход графа, а не полнотекстовый поиск по коду.
Навигация по конфигурации
Интерфейс разделён на две части: слева — дерево навигации, справа — панель деталей выбранного объекта. Переключение между режимами навигации — через вкладки «Подсист.», «Типы», «Роли», «Инфо».
Дерево типов
Режим «Типы» группирует все объекты конфигурации по типам метаданных: общие модули, справочники, документы, регистры и т.д. Каждая группа показывает количество объектов. Заголовки групп «прилипают» к верху при прокрутке — удобно ориентироваться в длинных списках.

Дерево типов 1С:ERP. Управление холдингом — 18 780 модулей в 20 типах метаданных
Дерево подсистем
Режим «Подсист.» отражает иерархию подсистем конфигурации. Для каждой подсистемы показываются вложенные подсистемы и типы объектов с количеством. Объекты расширений помечены жёлтой меткой «Доб.», заимствованные — зелёной «Заимств.» с именем расширения-источника. Это позволяет сразу видеть, какие расширения затронули каждую подсистему.

Подсистемы ERP УХ с объектами расширения «Управление Лизинговой компании»
Поиск
Поиск работает по всем типам объектов одновременно: модулям, справочникам, документам, ролям, подсистемам. Результаты группируются по типам с цветовыми маркерами и появляются по мере ввода текста. Объекты, добавленные или изменённые расширениями, помечаются жёлтой меткой «Доб.» с именем расширения — сразу видно, что пришло из расширения, а что из основной конфигурации.

Поиск «лизинг» — обычные объекты, заимствованные (зелёная метка «Заимств.») и устаревшие в одном списке
Анализ зависимостей объекта
При выборе объекта в дереве открывается панель деталей. Она показывает все связи объекта, сгруппированные по типам метаданных:
- Общие модули — какие модули вызываются из кода объекта
- Справочники, Документы, Регистры — ссылки на реквизиты и обращения из кода
- Перечисления, ПВХ — используемые значения
- Роли — кто имеет права на этот объект
- Расширения — какие расширения затрагивают объект
Заголовок показывает общее количество связей и путь: Документы › Реализация товаров и услуг 287/287. Фильтры «Тип», «Направление», «Права» позволяют сузить выборку.

Документ «Реализация товаров и услуг» — 287 связей: 156 общих модулей, 44 справочника, 29 документов, 27 регистров накопления
Таблица зависимостей
Каждая группа раскрывается в таблицу с колонками: имя объекта, тип метаданных, направление связи (ссылается на / используется в). Для документа «Реализация товаров и услуг» видно, с какими документами он связан — заказы клиентов, возвраты, резервирования. Клик левой кнопкой по строке таблицы показывает символьное имя объекта (программный идентификатор), правой кнопкой — переход к зависимостям выбранного объекта.

Связанные документы: заказы, возвраты, акты, резервирования
Анализ запросов к таблицам
Помимо вызовов модулей и ссылок реквизитов, Analyzer 1C анализирует обращения к таблицам через запросы. Инструмент находит конструкции ИЗ и СОЕДИНЕНИЕ с указанием типа метаданных и имени объекта в трёх источниках:
- BSL-код — строковые литералы с текстом запросов в модулях объектов
- Динамические списки форм — запросы в свойствах
QueryTextи ссылки вMainTable - Макеты СКД — запросы в наборах данных схем компоновки
Для каждого найденного обращения создаётся связь «Запрос к» / «Запрос из», включая обращения к табличным частям (Справочник.Номенклатура.Штрихкоды) и виртуальным таблицам регистров (РегистрНакопления.ОстаткиТоваров.Остатки, РегистрСведений.Курсы.СрезПоследних).

Регистр сведений «Относительные курсы валют» в ERP УХ — 159 связей: 48 общих модулей и 31 документ обращаются к регистру через запросы (СрезПоследних), направление «Запрос из» показывает, кто читает данные
Нагрузочный анализ: выбрав регистр сведений или накопления, можно сразу увидеть, сколько объектов читают из него данные через запросы, а сколько — пишут (через ссылки реквизитов и вызовы). Например, в регистр сведений «Курсы валют» пишет 1 документ, а читают через запросы 20 модулей — это помогает оценить нагрузку и зону влияния при изменении структуры регистра.
Анализ ролей
Режим «Роли» в левой панели показывает все роли конфигурации с количеством объектов в каждой. При выборе роли — видно, на какие объекты она даёт права.
При выборе объекта в панели деталей отображаются все роли, которые на него ссылаются, с детализацией прав (чтение, добавление, изменение, удаление, RLS и т.д.). Фильтр «Права» позволяет отобрать связи по конкретным видам прав — например, показать только роли, дающие право удаления. Кнопка «Права: 7 из 16» означает, что выбрано 7 видов прав из 16 доступных для фильтрации.
Помимо прав, назначенных через конфигуратор, Analyzer 1C находит программные проверки ролей в коде — вызовы РольДоступна() и Пользователи.РолиДоступны(). Это позволяет увидеть полную картину: не только где роль даёт права на объекты, но и в каких модулях от неё зависит логика выполнения кода.

Роль «Администратор системы» в ERP УХ — 298 объектов, справочники с детализацией прав
Анализ подписок на событие
Подписки на события (EventSubscription) — один из самых «невидимых» источников поведения 1С. При записи документа, константы или набора записей регистра срабатывают процедуры из общих модулей, перечисленные в поле Handler подписок. Найти эти цепочки вручную очень сложно: в конфигураторе нужно открыть каждую подписку по отдельности и понять, какие объекты она затрагивает.
Analyzer 1C парсит раздел EventSubscriptions основной конфигурации и расширений, извлекает событие (ПередЗаписью, ПриЗаписи, ОбработкаПроведения и так далее), список источников и обработчик, и строит двунаправленные связи в графе: от объектов-источников к подписке и от подписки к общему модулю-обработчику.
Подписки отображаются в дереве типов в папке «Общие» — так же, как в конфигураторе 1С. Если подписка добавлена расширением, в дереве и в результатах поиска она помечается меткой «Доб. <Расширение>». Если расширение заимствовало базовую подписку, на ней показывается «Заимств. <Расширение>».

Подписка «Отмена проведения цепочки документов» добавлена расширением «УправлениеЛизингом» к трём документам 1С:ERP. Управление холдингом. Обработчик — общий модуль «ЛизДопОбработчикиВызовСервера»
В карточке подписки сверху выводится заголовок с русским названием события (например, [Перед записью]) и меткой расширения, ниже — две группы: объекты-источники (направление «Подписан») и общий модуль-обработчик (направление «Вызывает»). Порядок строк отражает каноническую хронологию событий 1С: сначала обработка заполнения и проверка, затем «Перед записью» → «При записи» → «Обработка проведения», в конце — «Перед удалением».
Как применять на практике. При изменении общего модуля, который является обработчиком подписок, impact analysis автоматически проходит через цепочку subscribes → handled_by → calls и показывает все объекты, запись которых будет затронута. При диагностике медленной записи документа достаточно открыть его карточку и посмотреть блок «Подписки» — все подписки, срабатывающие при записи, видны как отдельные строки с отметкой хронологии события. Если на одном документе висит пять подписок «Перед записью», каждое сохранение последовательно вызывает пять процедур в общих модулях — вот и источник «тормозов».
Анализ качества кода: монстр-функции и метрики
Длинные процедуры — главная причина «страшно менять». Процедура на 2 000 строк с 80 ветвлениями и запросами в цикле обнаруживается случайно, когда уже поздно. Analyzer 1C считает метрики по каждой функции и выделяет проблемные прямо в интерфейсе.
Режим «Анализ функций» — отдельное дерево по типам объектов, где проблемные модули подсвечены сразу при открытии:
- 🔴 Монстр-функция — хотя бы одна из четырёх причин: более 500 строк кода, более 50 ветвлений (
Если/Пока/Для/Попытка), запросы к БД внутри цикла (N+1), более 10 вызовов.Выполнить()в одной функции. - 🟡 Предупреждение — функция приближается к опасным значениям: 200–500 строк, 20–50 ветвлений, 5–10 запросов.
В таблице функций модуля — цветная колонка «Строк» и «Ветв.», колонка «Запросов» с отметкой b88; N (M в цикле) при N+1. Строки текста запросов (начинающиеся с |) исключены из подсчёта: весь текст запроса считается за одну логическую строку и не влияет на оценку сложности.
Функции расширений в общем контексте. Если расширение добавляет новую функцию в заимствованный модуль или переопределяет существующую через &Вместо, &Перед, &После — они тоже появляются в списке с меткой 🔌 РасширениеХ. Для функций-перехватов считаются эффективные метрики: строки и ветвления самого перехватчика плюс оригинальной функции. Это даёт честную картину реальной нагрузки при поддержке этой связки.
Фильтры в таблице функций: «Все», «Предупреждения и выше», «Монстры», «Только расширения». При клике на функцию — правая панель с подробным объяснением: почему именно она попала в монстры и какие числа за этим стоят.

Заимствованный модуль «Ввод остатков внеоборотных активов» (расширение УправлениеЛизингом) — 8 функций, первая: 1344 строки, 50 ветвлений, 275 вызовов. Правая панель объясняет, почему функция попала в монстры
Конструктор профилей
Одна из ключевых задач при настройке прав — понять, какие итоговые доступы получит пользователь с определённым набором ролей. В конфигураторе 1С для этого нужно открыть каждую роль по отдельности и вручную сопоставить права. Если роли добавлены расширениями — задача усложняется многократно.
Конструктор профилей в Analyzer 1C решает это: вы отмечаете нужные роли чекбоксами (включая роли из расширений, помеченные «Доб.»), нажимаете «Показать итоговые разрешения» — и получаете объединённую картину: на какие объекты профиль даёт доступ, с какими правами, и из какой роли каждое право пришло.

Профиль из 2 ролей (398 объектов) — итоговые разрешения на справочники с детализацией прав
Результат показывает все объекты, к которым профиль даёт доступ, сгруппированные по типам: конфигурация, подсистемы, общие модули, справочники, документы, регистры. Фильтр «Права» позволяет отобрать только объекты с определёнными правами (чтение, изменение, удаление и т.д.). Помимо объектных прав, в итоговую картину включаются программные проверки ролей — вызовы РольДоступна() и Пользователи.РолиДоступны() в коде, которые могут влиять на поведение системы для пользователя с данным профилем.
Зачем это нужно: при аудите прав, при проектировании новой роли, при подключении расширения — сразу видно итоговую картину доступов. Не нужно вручную складывать права из нескольких ролей и расширений. А учёт программных проверок РольДоступна() показывает, где логика кода зависит от наличия роли — то, что невозможно увидеть в стандартном интерфейсе настройки прав.
Визуализация графа
Переключатель «Таблица / Граф» в правой панели позволяет визуализировать зависимости выбранного объекта в виде интерактивного графа. Узлы графа — связанные объекты, рёбра — типы связей (вызовы, ссылки, заимствования). Граф интерактивный: правый клик по узлу — переход к зависимостям этого объекта (навигация вглубь графа).

Граф зависимостей документа «Реализация товаров и услуг»
Статистика конфигурации
Вкладка «Инфо» показывает общую статистику загруженной конфигурации:

1С:ERP. Управление холдингом: 907 подсистем, 18 780 модулей, 341 925 функций, 110 489 вызовов
Загрузка конфигураций и расширений
После запуска Analyzer 1C нужно загрузить выгрузку конфигурации. Нажмите кнопку обновления (?) рядом с выбором системы — откроется меню со списком загруженных конфигураций и пунктом «Загрузить новую...».

Меню управления конфигурациями — загруженные системы, расширения и кнопка загрузки новой
В диалоге загрузки укажите имя папки (произвольное) и выберите ZIP-файл с выгрузкой конфигурации. Выгрузка создаётся в конфигураторе: Конфигурация ? Выгрузить конфигурацию в файлы (формат ZIP).

Загрузка ZIP-архива конфигурации — имя папки и выбор файла
Расширения загружаются аналогично: в конфигураторе откройте расширение, выгрузите его в файлы (ZIP), затем в Analyzer 1C загрузите в ту же папку, что и основная конфигурация. Инструмент автоматически определит расширение и привяжет его объекты к основной конфигурации — заимствования, переопределения и добавленные объекты будут отображаться с соответствующими метками.
Можно загрузить несколько конфигураций одновременно и переключаться между ними через выпадающий список в шапке.
Загрузка из Git
Если конфигурация хранится в git-репозитории, её можно загрузить напрямую. Переключите режим на «Git-репозиторий», укажите URL и при необходимости ветку (например, release или develop). Для приватных репозиториев укажите токен доступа либо в диалоге, либо в переменной окружения ANALYZER_GIT_TOKEN в файле .env — токен автоматически подставится при клонировании и последующих git pull.

Диалог клонирования git-репозитория — имя папки, URL, ветка и токен доступа
Поддерживаются три варианта организации репозитория:
- Монорепо — основная конфигурация в src/cf/, расширения в src/cfe/{имя_расширения}/. Один репозиторий — один клон, всё определяется автоматически.
- Отдельные репозитории — основная конфигурация и каждое расширение в отдельном репо, клонируются в подпапки одной папки (main/, ext1/, ext2/).
- Одиночный репозиторий — репозиторий содержит только одну конфигурацию (основную или расширение).
Инструмент автоматически определяет, что является основной конфигурацией, а что расширением — по наличию ConfigurationExtensionPurpose в Configuration.xml. Формат выгрузки (git-sync или 1C:EDT) также определяется автоматически. При повторной загрузке системы выполняется git pull; для монорепо — один раз, для отдельных репозиториев — в каждой подпапке.
Развёртывание
Analyzer 1C поставляется как готовый Docker-образ (~310 МБ). Для развёртывания нужен только Docker — ни Python, ни Node.js, ни ArangoDB устанавливать отдельно не требуется. Всё упаковано в образ.
Windows 10/11:
- Скачайте Docker Desktop
- Запустите установщик, перезагрузите компьютер
- Убедитесь, что Docker запущен (иконка в трее)</li>
Ubuntu / Debian:
sudo apt update
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
# Перелогиньтесь, чтобы применить группу
CentOS / RHEL / Astra Linux:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
Скопируйте на сервер пять файлов (распакуйте архив):
- analyzer-1c-offline.tar — Docker-образ
- docker-compose.prod.yaml — конфигурация запуска
- deploy.sh (Linux) или deploy.bat (Windows) — скрипт деплоя
- start.sh (Linux) или start.bat (Windows) — скрипт для повторного запуска
- stop.sh (Linux) или stop.bat (Windows) — скрипт остановки
Linux:
bash deploy.sh
Скрипт использует sudo для команд Docker. Если ваш пользователь уже входит в группу docker и имеет права на запуск контейнеров без sudo — удалите sudo из команд в deploy.sh и stop.sh.
Windows (cmd или PowerShell):
deploy.bat
Скрипт загрузит образ, запустит контейнер и удалит архив. После запуска приложение доступно по адресу http://localhost:8000.
Для остановки:
Linux:
bash stop.sh
Windows:
stop.bat
Повторный запуск после остановки:
Linux:
bash start.sh
Windows:
start.bat
Откройте веб-интерфейс, в выпадающем списке систем выберите «Загрузить новую...» и укажите папку для загрузки и ZIP-выгрузку конфигурации или адрес git-репозитория и ветку из которой надо грузить. Расширения должны загружаться в ту же папку, что и основная конфигурация с другим именем архива. Разбо р и загрузка ERP УХ (18 780 модулей) занимает около 5–10 минут. Можно загрузить несколько конфигураций и переключаться между ними.
Программа не задействует платформу. Тестировалась выгрузка на 8.3.27.1719, но будет одинаково работать с любой платформой, где реализована выгрузка данных конфигурации в файлы.
На слайдах 1С:ERP. Управление холдингом (3.2.8.11).
1.2.15 - добавлен анализ подписок на события, включая добавленные расширениями.
1.3.42 - добавлен анализ функций на сложность, длину, включая строки, добавленные расширениями и подсветкой функций-монстров с большой цикломатической сложностью, длиной, запросами в циклах.
Остались вопросы?
Для получения дополнительной информации и помощи в настройке модуля под нужды вашего бизнеса — оставьте заявку
