Проверки BSL Language Server прямо в 1С:EDT: оживляем коннектор

01.09.26

Разработка - Рефакторинг и качество кода

Если вы разрабатываете в 1C:EDT, то наверняка знакомы со штатной системой статического анализа через плагин 1C:Code style V8. Но вы также могли заметить, что база встроенных правил давно не обновлялась: последний стабильный релиз плагина вышел ещё в декабре 2023 года. Чтобы вернуть в EDT свежие и актуальные проверки, я форкнул и доработал проект коннектора к BSL Language Server. В этой статье расскажу, как устроена интеграция, зачем она нужна в эпоху LLM и как подключить плагин за пять минут.

Три источника проверок кода в экосистеме 1С

Статический анализ кода в мире 1С развивается уже много лет, и сегодня на практике используются три ключевых инструмента:

Инструмент Особенности и назначение
1С:АПК Официальная конфигурация фирмы «1С» («Автоматизированная проверка конфигураций»). Анализирует файлы выгрузки, ориентирована на аудит релизов и контроль качества готовых решений, а не на мгновенную обратную связь в процессе написания кода.
1C:Code style V8 Штатный открытый плагин от фирмы «1С», встроенный в 1C:EDT. Проверяет синтаксис, стандарты и структуру метаданных прямо во время редактирования модулей в IDE.
BSL Language Server Флагманский open-source проект сообщества 1c-syntax. Содержит около 190 детальных диагностик по стандартам 1С, работает по протоколу LSP в сторонних редакторах (VS Code, VSCodium), а также в конвейерах CI/CD (через SonarQube и bsl-ls-cli).

Подробный ретроспективный разбор инструментов статического анализа в 1С ещё в 2020 году опубликовал Олег Тымко в статье «Автоматическая проверка качества кода 1С в системе SonarQube». С тех пор экосистема шагнула вперёд, но базовое разделение ролей осталось прежним.

 

1C:Code style V8

Встроенный плагин 1C:Code style V8 — отличный инструмент: он бесшовно интегрирован в EDT, проверки привычно настраиваются в свойствах проекта, а предупреждения появляются в родной панели «Ошибки конфигурации». Однако у него есть существенное ограничение: последний стабильный релиз v0.5 вышел 16 декабря 2023 года (для EDT 2023.1), а предрелизный v0.6.alpha — для EDT 2023.2. С тех пор прошло почти три года без официальных релизов.

При этом сам репозиторий не заброшен: разработчики обновляют зависимости под новые версии среды (вплоть до EDT 2026.2), принимают отдельные pull request'ы от сообщества и вносят точечные правки. Но релизный конвейер остановлен. В результате разработчики получают свежие правила анализа только вместе с крупными обновлениями самой EDT, а в трекере проекта накопилось более 600 открытых issues.

 

BSL Language Server

В отличие от плагина Code Style, проект BSL Language Server (BSL LS) развивается непрерывно: только в августе 2026 года вышли версии 1.0.7 и 1.1.0-rc. Каталог правил регулярно пополняется, а каждая диагностика снабжена уникальным кодом, подробным описанием и ссылками на стандарты разработки 1С.

Казалось бы, логично использовать BSL LS прямо внутри EDT. Но на практике возникает серьёзный архитектурный барьер:

  • BSL Language Server — это самостоятельное внешнее Java-приложение.
  • Плагины 1C:EDT функционируют внутри контейнера Eclipse/OSGi, где версии всех базовых библиотек строго зафиксированы средой.
  • Например, библиотека протокола LSP4J в EDT 2025.2 имеет версию 0.23.1, а в EDT 2026.1 — уже 1.0.0. Попытка объединить их в единый classpath неизбежно приводит к конфликтам зависимостей (JAR hell).

Решение этой проблемы ещё в 2020 году предложил Олег Тымко, создав плагин-коннектор dt.bsl.lsconnector. Коннектор запускает BSL LS как изолированный дочерний процесс и общается с ним по протоколу LSP через стандартные потоки ввода-вывода. Однако оригинальный проект остановился на версии v0.2.1 в декабре 2020 года. В феврале 2026 года сообщество адаптировало коннектор под EDT 2025.1 (v0.3.0), после чего разработка снова затихла.

 

Зачем понадобился форк

Решение сделать форк и довести коннектор до полноценного рабочего состояния созрело благодаря совпадению трёх факторов:

  1. Появление AI-агентов и протокола MCP в EDT.
    Я активно использую EDT-MCP — открытый MCP-сервер, который позволяет AI-агентам (Claude Code, opencode и др.) взаимодействовать с проектом в 1C:EDT: считывать список ошибок, вносить исправления и сразу валидировать результат. Список проблем агент запрашивает через метод get_project_errors из стандартной панели «Ошибки конфигурации». Старый коннектор сохранял маркеры в отдельной служебной области, из-за чего LLM их попросту не видела. Возникал парадокс: типовые замечания EDT нейросеть исправляла легко, а строгие правила BSL LS игнорировала.

  2. Потребность в актуальной базе стандартов.
    Пока 1C:Code style V8 находится на паузе, сообщество BSL LS постоянно улучшает диагностику антипаттернов. Подключение свежего движка BSL LS — самый прямой и действенный способ расширить покрытие стандартов в EDT.

  3. Новая экономика разработки open source.
    В этом проекте я выступаю как продакт-оунер и архитектор: формирую требования, проектирую сценарии использования, провожу ревью изменений и тестирую каждый билд в живой среде EDT. Написание кода и рутину сборки выполняет LLM-ассистент (GLM-5.3-Flash от Z.ai). Когда перезапуск и развитие сложного плагина занимают не месяцы упорного труда в одиночку, а пару недель итераций с AI, поддержка open-source инструментов становится по-настоящему доступной.

 

Возможности обновлённого коннектора

Вот что умеет коннектор в текущем виде:

  • Автоматическая установка BSL LS: сервер не нужно скачивать или настраивать вручную. Плагин сам загружает нужный релиз с GitHub в локальный каталог — доступен как native-бинарник под вашу ОС (Java не требуется), так и универсальный JAR (требуется Java 21+).
  • 187 индивидуальных проверок в EDT: каждая диагностика BSL LS зарегистрирована как самостоятельная проверка EDT со своим каноническим кодом (LineLength, MethodSize, CognitiveComplexity и др.). Вы можете гибко включать и отключать конкретные правила в стандартном дереве настроек проверок.
  • Единая панель «Ошибки конфигурации»: все замечания BSL LS выводятся в общий список с понятным префиксом [BSL LS] — их удобно фильтровать, сортировать и передавать AI-агентам.
  • Параллельная работа: проверки срабатывают при открытии, редактировании и сохранении модулей, а также по команде контекстного меню «Проверить». Анализ выполняется асинхронно и не конфликтует со штатными проверками EDT.
  • Интерактивные карточки стандартов: по кнопке «Открыть проверку» в панели проблем отображается детальное описание диагностики с примерами из базы знаний v8std.ru.
  • Корректное подавление замечаний: кнопка «Подавить» оборачивает проблемный фрагмент кода в парные комментарии // BSLLS:Код-off … // BSLLS:Код-on, аккуратно очищая неработающие вставки //@skip-check. Поддерживается отмена действия через единый Ctrl+Z.
  • Гибкая конфигурация: при наличии файла .bsl-language-server.json в корне проекта плагин передаёт его серверу, позволяя переопределять уровни важности и параметры правил под проектные соглашения.

 

Проект опубликован под лицензией AGPL-3.0 (в соответствии с BSL Language Server) с сохранением копирайта оригинального автора (MIT © 2020 Oleg Tymko).

Пример экрана EDT c добавленным плагином

 

 

Пошаговая инструкция по установке

Установить коннектор в 1C:EDT можно за несколько простых шагов:

  1. В главном меню EDT откройте Справка (Help) - Установить новое ПО (Install New Software...).
  2. В поле Работать с (Work with) вставьте адрес репозитория:
    https://malikov-pro.github.io/bslls-connector-for-edt/
    и нажмите кнопку Добавить (Add...).
  3. В появившемся дереве компонентов отметьте пункт BSL LS connector for EDT.
    Примечание: флаг «Обращаться во время инсталляции ко всем сайтам обновления для поиска требуемого ПО» должен быть включён (при установке из локального zip-архива со страницы Releases его, наоборот, следует снять).
  4. Нажмите Далее - примите условия лицензии - Готово и перезапустите 1C:EDT.

Первый запуск и проверка связи

  1. Перейдите в меню: Окно - Параметры - раздел Коннектор BSL LS.
  2. Выберите желаемый режим (рекомендуется native под вашу операционную систему) и нажмите кнопку «Скачать». Плагин автоматически загрузит дистрибутив BSL LS в рабочий каталог и подготовит его к запуску.
  3. Тест работы: откройте любой модуль конфигурации и добавьте строку длиной более 120 символов. Сохраните модуль — в стандартной панели «Ошибки конфигурации» мгновенно появится предупреждение [BSL LS] Длина строки превышает 120 символов.

 

Планы развития

Проект продолжает активно развиваться. В ближайших планах:

  • Быстрые исправления (Quick Fixes): автоматическое применение исправлений по кодам диагностик BSL LS через меню автоисправления EDT.
  • Улучшение юзабилити: кнопка быстрого перехода в рабочую папку сервера и оптимизация каналов валидации (задачи #15 и #16).
  • Статья об AI-разработке в 1С: отдельный подробный материал о связке 1C:EDT + EDT-MCP + BSL LS и практических сценариях работы с AI-агентами.

 

Как поддержать проект

Для open-source проектов обратная связь — главный источник мотивации:

  • Поставьте звёздочку репозиторию malikov-pro/bslls-connector-for-edt на GitHub — это помогает проекту расти.
  • Протестируйте коннектор в своей рабочей среде EDT и делитесь отзывами или баг-репортами в GitHub Issues.
  • Поддержите звёздами и смежные проекты, на которых держится эта интеграция: BSL Language Server и EDT-MCP.

Спасибо за внимание и качественного вам кода в 1C:EDT!

Вступайте в нашу телеграмм-группу Инфостарт

#1c_edt #bsl_language_server #статический_анализ #1с_разработка #качество_кода #edt_mcp #ai_1c #open_source

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Нейросети Рефакторинг и качество кода Запросы Разработчик 1С 8.3 Абонемент ($m)

Нейросеть написала запрос или процедуру для вашей базы 1С, и непонятно, все ли имена в нём настоящие. Обработка компилирует текст без выполнения, сверяет его с метаданными этой базы и к каждой ошибке пишет настоящее имя, например ВНаличииОстаток вместо выдуманного КоличествоОстаток. Список ошибок с подсказками одной кнопкой копируется обратно в чат с моделью.

10 стартмани

02.11.2026    367    2    nedomolkov.ivan    3    

3

Рефакторинг и качество кода Разработчик 1С:Предприятие 8 Россия Бесплатно (free)

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

29.10.2026    382    YA_777378709    0    

4

Рефакторинг и качество кода Разработчик Бесплатно (free)

Рассказываем, почему качественный код – это не техническая прихоть, а актив, который помогает бизнесу быстрее адаптироваться к изменениям и запускать новые фичи без бесконечного преодоления техдолга. Показываем, как объяснить бизнесу ценность рефакторинга через понятные признаки: замедление разработки, неточные оценки, страх перед legacy и хрупкость системы. Разбираем, почему неправильный рефакторинг может быть дороже его отсутствия, какие анти-паттерны ломают процесс и как не превратить улучшения в бесконечную переделку ради переделки. Объясняем, как сделать рефакторинг частью культуры команды: договориться с бизнесом, научить разработчиков видеть проблемные места, закрепить правила и поддерживать улучшения на уровне тимлидов, архитекторов и всей команды.

28.10.2026    498    Pavel791    0    

2

Рефакторинг и качество кода HighLoad оптимизация Системный администратор Разработчик Стажер 1С 8.3 Абонемент ($m)

Если к HTTP-сервису 1С обращаются сразу несколько программ, сколько запросов в секунду он успеет обработать? Я опубликовала простой HTTP-сервис на нашей "подопытной" конфигурации «Нано-УТ» (файловая база, Apache, без прав администратора) и нагрузила его скриптом на Python. Ответ: около 15-16 запросов в секунду, сколько бы клиентов ни обращалось одновременно. Запросы ждут своей очереди, и при 32 клиентах ответ приходит через 2 секунды вместо 64 мс. Заодно разобрала скрипт из первого варианта статьи: он «проверял» сервер, который отвечал по одному, и считал ошибки вместе с успешными ответами. В архиве исправленный скрипт, учебный сервер, HTTP-сервис для 1С и инструкция по запуску.

1 стартмани

23.10.2026    530    Ninel_S    3    

2

Рефакторинг и качество кода Разработчик 1С 8.3 Абонемент ($m)

Запустили Analyzer 1C 2.7.65 на промышленной конфигурации (596 модулей, 13 669 функций) и исследовали перегруженные функции (до 1887 строк), циклические зависимости и экран «Циклы» (кольцо из 64 модулей). Разобрали, почему популярные метрики (McCabe, связность) не представлены в продукте вендора, и составили пошаговый план разделения модуля. Привели проверенный платформой 8.3.27 пример до и после рефакторинга и выявили скрытую ловушку загрузки модулей с точкой в имени.

9 стартмани

19.10.2026    469    Ninel_S    2    

2

Рефакторинг и качество кода EDT СКД Разработчик 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Бесплатно (free)

Одиннадцать граблей схем компоновки, которые не видно в конструкторе и не ловит EDT, на реальных отчетах БП КОРП. Формат числа задается в двух местах, и условное оформление варианта перебивает формат поля. Ресурс складывает штуки с часами, и помогает выражение «только когда единица одна». Ресурс пуст в детальных записях, параметр не появляется в шапке без userSettingID, valueListAllowed ломает границы периода, Остатки и СрезПоследних с параметром периода падают с «Несоответствием типов», title без xsi:type дает «Исключение XDTO» при загрузке. В конце код проверки схемы из файла до обновления базы, сводная таблица и чеклист.

16.10.2026    546    Konstmax13    2    

2

Инструментарий разработчика Нейросети Рефакторинг и качество кода EDT Разработчик 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Бесплатно (free)

Как ИИ-агент (Claude Code) работает в живом EDT-проекте 1С:Бухгалтерии КОРП 3.0: из чего собрать стенд с MCP-сервером для EDT, как ставить задачи агенту, где он ломает проект и какие проверки это ловят. Реальные случаи: рукописные метаданные, ронявшие конфигуратор; четыре дня зависшего обновления из-за порядка блоков в Rights.rights; ошибки, которые EDT пропускает, а платформа нет; сплошная сверка вместо «вроде работает». В приложении шаблон CLAUDE.md, шаблон правила, чеклист перед обновлением базы и скрипты проверки ролей и схем СКД.

15.10.2026    3511    Konstmax13    11    

11

Рефакторинг и качество кода Тестирование QA Разработчик 1С 8.3 Абонемент ($m)

Инженерный анализ влияния (Impact Analysis) при изменении общего метода в 1С:Предприятии: почему штатный поиск ссылок скрывает 99% зависимостей и как обратный обход графа вызовов выявляет 370 скрытых потребителей на глубине 3 уровней. В статье — верификация сквозной цепочки обмена с маркетплейсом; в архиве-компаньоне — автономный BFS-анализатор на Python, слепки графа и план регрессионного тестирования.

1 стартмани

12.10.2026    332    Ninel_S    0    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. chessvelsk 12 09.09.26 19:09 Сейчас в теме
Проверил на "ERP Управление холдингом".
Запустилась расширенная проверка. Процессор грузит, процент 0%, ждал час, плюнул и снес.
Овчинка выделки не стоит.
4. artbear 1590 09.09.26 19:59 Сейчас в теме
(1) Расширенная проверка работает долго, да.
возможно, при запуске в первый раз?
5. malikov_pro 1409 10.09.26 15:04 Сейчас в теме
(4) Пока падает по таймаутам, issue есть, думаю на неделе поправлю.
7. malikov_pro 1409 26.09.26 06:50 Сейчас в теме
(1) (4) (6) Поправил вопросы производительности, добавил отключение на уровне модуля. Вер 0.6.2, будет время - проверьте.
2. artbear 1590 09.09.26 19:51 Сейчас в теме
Большое спасибо за труд. Установлю, проверю
3. artbear 1590 09.09.26 19:58 Сейчас в теме
(0) Отлично, работает. вижу замечания от бсл лс. наконец-то )
6. dock 46 16.09.26 08:45 Сейчас в теме
Хорошая штука, вот только EDT 2026.2.0 виснет...
в режиме "Нативный" вроде получше: хотя бы видно, что "шевелится" и кушает ресурсы - 20-30% проца и 1,5 - 3гб оперативы. В режиме Jar же наглухо блочил EDT, хотя при этом нагрузка на проц ~0%, оперативы Ява съедала те же 2-3 гб
Как его теперь корректно отключить (временно) и/или управлять проверкой ? ибо импортируешь новую конфигурацию и всё - ты в зависоне жестком: по идее лучший вариант "по умолчанию" отключить все проверки и включать уже вручную.
Для отправки сообщения требуется регистрация/авторизация