Проверки 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 1С 8.5 Абонемент ($m)

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

3 стартмани

27.08.2026    269    0    KonMa    0    

2

Перенос данных 1C Рефакторинг и качество кода Программист 1С 8.3 Бесплатно (free)

Правила обмена умеют лежать в двух местах сразу: в макете конфигурации, где их находит глобальный поиск и где их так удобно поправить, и в регистре сведений, откуда они на самом деле исполняются. Пока не проверишь, какой источник включён у плана обмена, правка макета выглядит сделанной и не делает ничего. Разбор задачи, где одно и то же значение ставки оказалось зашито в четырёх местах трёх разных слоёв: карта соответствий в модуле веб-сервиса, обработчик "ПослеЗагрузки" в правиле обмена, числовой ВЫБОР с внутренним ИНАЧЕ 0 внутри сгенерированных правил и общий модуль интеграции с внешним поставщиком чеков. Отдельно - почему у истории с вернувшимися карточками нет доказанной причины, хотя признак сузили до одного вида номенклатуры, и как тестовый прогон на пяти записях сломал сходимость итогового отчёта.

27.08.2026    485    nedomolkov.ivan    0    

1

HighLoad оптимизация Рефакторинг и качество кода Системный администратор Программист 1С 8.3 Бесплатно (free)

Режим снимка(snapshot) убрал почти все дедлоки: с 73 в час до 7-8. Через несколько дней выяснилось, что разделяемые замки раньше сами обеспечивали сериализацию там, где код читал, решал и писал. После включения снимка эта защита пропала. Пришлось пересмотреть код: 234 места с намерением записи, 59 оставили разделяемыми, чтобы не получить взаимные блокировки. Проверка "хватит ли данных" часто стояла выше открытия транзакции - такие места линтер и ревьюер не видят. Дальше - про поддельные блокировки, опасность смены умолчания и шесть проверок.

25.08.2026    630    nedomolkov.ivan    1    

4

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

Обработка читает исходники других внешних обработок и отчётов прямо из базы и отвечает на два вопроса: с какой из них начинать смотреть и что именно в ней смотреть. На выходе HTML-отчёт: индекс качества от 0 до 100, светофор, оценка технического долга в минутах и находки с номером строки, фрагментом кода и подсветкой синтаксиса. Двадцать восемь правил: запрос в цикле, транзакция без отката, небезопасное выполнение строки, тяжёлые схемы компоновки. Считается всё на чистом BSL, без интернета, внешних компонент и отдельного сервиса рядом, поэтому анализируемый код не покидает машину. Прогон по двум десяткам обработок выстраивает их по индексу качества, худшие сверху, и сразу видно, с чего начинать разбор.

10 стартмани

20.08.2026    576    2    nedomolkov.ivan    2    

4

Рефакторинг и качество кода Программист 1С 8.3 Бесплатно (free)

Библиотека из 6 слоев анализа, от внешней обработки до готового отчёта. Каталог из двадцати восьми правил, у каждого свой уровень и вес. И всё это крутится на чистом BSL, без Java, без git, без какого-то внешнего сервера анализа и без отправки чужого кода наружу. Разбираю, как устроен этот анализатор внешних обработок и по каким признакам он решает, что код плохой. Почему запрос в цикле получает шестьдесят баллов, как правило вообще проходит фильтр перед релизом и почему часть правил у меня помечена как сломанные. Проверял я его на себе: взял семнадцать своих обработок, которые лежат на площадке и продаются. Получил 239 замечаний и пятнадцать рабочих дней технического долга. У самой худшей индекс качества - 20 из 100 и красный светофор. А ещё расскажу, где у инструмента границы, за которые он не заходит, и про грабли - самая дорогая из них молчала.

20.08.2026    907    nedomolkov.ivan    0    

1

Рефакторинг и качество кода Программист 1С 8.3 Бесплатно (free)

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

20.08.2026    885    n_mezentsev    10    

2

Рефакторинг и качество кода Нейросети Программист Бесплатно (free)

Передача двух модулей BSL в Cursor AI для классического сравнения без использования искусственного интеллекта (ИИ) и для проведения code review с помощью ИИ.

12.08.2026    2810    ScaNNer    0    

5

Рефакторинг и качество кода Обновление 1С Программист 1С 8.3 1С:ERP. Управление холдингом Бесплатно (free)

К нам на проект сложного обновления пришла конфигурация «1С:ERP УХ» с доработанным отчетом, построенным на базе типового «Задолженность поставщикам по срокам». После обновления целевая форма открывалась без учета переданных данных.

05.08.2026    1023    1c-izh    4    

4
Для отправки сообщения требуется регистрация/авторизация