MetaVision for 1C
Хорошулин Андрей Викторович, разработчик.

Откуда взялась идея
Я 1С-разработчик с десятилетним стажем. Думаю, вы тоже проходили через это: открываешь модуль чужой конфигурации, а там 50 тысяч строк. Чтобы понять, кто кого вызывает, где открывается транзакция и почему документ проводится полчаса, ты вооружаешься блокнотом, Ctrl+F и собственным воображением. В голове пытаешься удержать граф вызовов, а глаз дёргается от попытки найти парный оператор «КонецЕсли» где-то на строке 17 432.
Платформа 1С за все годы так и не дала нам:
-
визуализации логики функций,
-
карты зависимостей между методами,
-
статического анализатора уязвимостей,
-
поиска узких мест производительности,
-
нормального полнотекстового поиска по всей кодовой базе.
В какой-то момент я устал ждать и написал MetaVision for 1C. Это десктоп-приложение, которое загружает выгруженную конфигурацию и делает всю грязную работу по анализу за вас. Проект опубликован на Инфостарте, а исходный код выложен на GitHub под лицензией MIT.
В этой статье я расскажу:
-
Как устроен MetaVision изнутри и почему он работает быстро,
-
Какие реальные проблемы он решает (с конкретными примерами находок),
-
Почему интерфейс получился интуитивным с первого запуска,
-
Что уже нашли в реальных конфигурациях за первые месяцы использования,
-
И что будет дальше.
Как это работает: архитектура без магии
Расскажу про технические решения, потому что многие спрашивают.
Парсинг конфигурации. Программа берёт XML-файлы выгрузки конфигурации и разбирает их напрямую. Никаких COM-соединений с платформой 1С, никаких внешних зависимостей. Написано на C#, данные хранятся в SQLite. Загрузка конфигурации размером ~8 Гб (типовая ERP) занимает 5–7 минут на машине с 32 Гб ОЗУ и SSD. База данных приложения при этом весит примерно 70% от размера исходных файлов.
Почему не BSL Language Server. BSL — отличный проект с глубоким синтаксическим разбором. Но для моих задач он избыточен. Мне нужен был быстрый парсер, который выделяет:
-
структуру функций (условия, циклы, транзакции, блокировки),
-
вызовы методов,
-
вложенность конструкций,
-
потенциально опасные паттерны.
Поэтому я написал собственный анализатор подмножества языка 1С. Он легче, быстрее и заточен именно под те задачи, которые решает MetaVision.
Безопасность превыше всего. Программа работает полностью локально. Код вашей конфигурации не отправляется в интернет, не анализируется на сторонних серверах, не передаётся третьим лицам. Единственная сетевая активность — проверка обновлений самой программы и анонимная статистика использования (без единой строчки вашего кода). Исходный код открыт — можете убедиться лично.
Почему интерфейс получился интуитивным
Я делал MetaVision в первую очередь для себя. А когда делаешь инструмент для собственной ежедневной работы — интерфейс получается удобным естественно, без спринтов, дизайн-макетов и фокус-групп. Вот ключевые моменты.
Первое, что видишь — дерево метаданных. Оно работает быстрее, чем в конфигураторе. Клик по объекту — и сразу видишь список его функций с иконками и счётчиком. Выбираешь функцию — и моментально получаешь три вещи:
-
Граф структуры функции (узлы: условия, циклы, транзакции, вызовы).
-
Полный текст функции с подсветкой синтаксиса.
-
Список тех, кто эту функцию вызывает.
Двусторонняя навигация между графом и кодом работает мгновенно. Кликнул по узлу на графе — строка в коде подсветилась. Кликнул по строке — узел на графе подсветился. Это настолько естественно, что через пять минут после запуска ты уже не понимаешь, как жил без этого раньше.
Граф можно крутить, масштабировать, сохранять в PDF. Для больших функций (а мне попадались экземпляры на 200+ узлов) это незаменимо. Визуализация делает понятным то, что в тексте скрыто за десятками вложенных конструкций.
Все проверки доступны в один клик. Открыл вкладку «Сканер проблем» — нажал кнопку «Безопасность» — получил список всех уязвимостей с описанием, уровнем критичности и рекомендациями. Никаких конфигурационных файлов, никаких сложных настроек порогов срабатывания. Всё готово к работе сразу.
Шесть вкладок, которые закрывают основные боли
Расскажу про каждую вкладку коротко, но с примерами — чтобы было понятно, что именно MetaVision даёт разработчику.
1. Анализатор кода
Центральная вкладка. Дерево метаданных → список функций → граф + код. В этой вкладке проходит 80% работы по изучению незнакомой конфигурации. Пример из жизни: приходит жалоба, что документ долго проводится. Открываешь функцию проведения — на графе видны три вложенных цикла и транзакция внутри. Причина понятна за 20 секунд, хотя в коде это было размазано на 800 строк.

2. Работа с модулем
Компактная IDE для бытовых задач: преобразование запросов (вертикальные черты ↔ обычный текст), проверка синтаксических ошибок (незакрытые скобки, нарушенные блоки Если/КонецЕсли), автоформатирование, проверка орфографии в комментариях и строках через Яндекс.Спеллер. Мелочи, которые экономят кучу времени, когда под рукой нет полноценной IDE.
3. Поиск по модулям
Полнотекстовый поиск по всем модулям конфигурации. Ввёл название метода — получил таблицу с контекстом и мгновенным переходом к коду. В отличие от штатного поиска 1С, работает молниеносно и ищет по всей конфигурации сразу.
4. Сканер проблем в коде
То, ради чего ко мне приходят безопасники и тимлиды. Шесть направлений проверок: безопасность (RCE, SSRF, COM-инъекции, пароли в коде), многопоточность (фоновые задания без обработки ошибок), транзакции (корректность закрытия, диалоги внутри транзакций), блокировки (вызовы внутри циклов, рекурсия), плохие имена переменных (a, b, tmp, сч), доступ к реквизитам через точку внутри циклов.
Каждая проблема сопровождается понятным описанием, уровнем опасности и рекомендацией по исправлению. При выборе проблемы сразу подсвечивается нужная строка в коде.
5. Производительность
Два режима: поиск запросов внутри циклов (с оценкой глубины вложенности) и анализ вложенных конструкций. Строит граф цепочки вызовов, показывая, как проблема «путешествует» между функциями. Это позволяет находить узкие места, которые размазаны по нескольким модулям и почти невидимы при ручном анализе.

6. Статистика
Панорамный взгляд на конфигурацию: количество объектов, модулей, функций, циклов, транзакций, блокировок, запросов. Диаграммы распределения и таблица метаданных. Полезна тимлидам для оценки сложности проекта, обоснования рефакторинга перед руководством и сравнения версий конфигурации.

Что мы уже нашли в реальных проектах
Самое интересное — это результаты. Вот несколько реальных находок, которые лично меня впечатлили (названия компаний не называю, но это живые проекты):
Уязвимости безопасности
-
В одной крупной ERP нашли 4 вектора SSRF в HTTP-сервисах. Код работал в продакшене несколько лет.
-
Там же обнаружили COM-инъекцию в обработке 10-летней давности. Никто не знал.
-
В разных проектах регулярно находятся пароли и секреты в комментариях — то, что разработчики оставляли для отладки и забывали удалить.
Проблемы производительности
-
Более 30 запросов внутри циклов в legacy-конфигурации 1С:ERP.
-
12 незакрытых транзакций, которые приводили к плавающим блокировкам.
-
Цепочка «цикл → транзакция → блокировка», растянутая между тремя функциями в разных модулях. На графе она видна целиком, глазами её найти практически невозможно.
Технический долг
В одном проекте сканер нашёл больше 1500 переменных с именами a, b, tmp, сч. Тимлид был в шоке. После первого прогона команда сократила время на код-ревью примерно втрое — просто потому, что инструмент сразу подсвечивает то, что обычно ищут часами.
Кому это реально нужно
MetaVision я делал для себя, но оказалось, что он нужен целой экосистеме специалистов. Вот кто, на мой взгляд, получит максимум пользы:
-
Разработчики 1С — быстрое понимание чужого кода, визуализация сложных функций, раннее выявление проблем производительности.
-
Техлиды и архитекторы — аудит кода команды без ручного чтения тысяч строк, объективные метрики сложности, контроль качества перед релизами.
-
Аудиторы и консультанты — быстрая оценка чужой конфигурации с отчётами и наглядными графами для заказчика.
-
Специалисты по безопасности — автоматический поиск уязвимостей, паролей и опасных вызовов во всей кодовой базе.
-
Преподаватели и менторы — визуальное объяснение структуры кода студентам, демонстрация «плохих» паттернов на реальных примерах.
Планы развития
Текущая версия — это только начало. Вот что в ближайших планах:
-
Поддержка нескольких конфигураций одновременно и сравнение между ними.
-
Полноценная работа с расширениями (анализ перекрытий, конфликтов, точек внедрения).
-
Анализ ролей и прав доступа с построением матриц.
-
Интеграция с CI/CD для автоматического аудита при сборке.
-
Типизация функций и интеллектуальный анализ типов.
MetaVision — не разовая утилита, а платформа, которая будет расти вместе с потребностями сообщества. Каждое скачивание, каждый отзыв, каждое сообщение об ошибке — это топливо для развития.
Почему это важно для сообщества
MetaVision — мой вклад в 1С-экосистему. Я хочу, чтобы у разработчиков наконец появился удобный, быстрый и интуитивный инструмент для анализа кода. Не нужно больше тратить часы на рутинный поиск, рисовать графы в блокноте или гадать, что скрывается в модуле на 80 тысяч строк.
Инструмент полностью бесплатный. Исходный код открыт под лицензией MIT: https://github.com/AndreyHhh/MetaVision. Вы можете не только пользоваться, но и изучать код, модифицировать под свои задачи, распространять копии.
Скачайте MetaVision сегодня. Проверьте свою конфигурацию. Возможно, вы найдёте то, о чём даже не подозревали. А если инструмент окажется полезным — поставьте звезду на GitHub, расскажите коллегам, напишите отзыв. Это прямо влияет на скорость разработки и появление новых возможностей.
Сделано с заботой о времени разработчиков 1С. Потому что своё время жалко.
ссылка на оригинал статьи https://habr.com/ru/articles/1034000/