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

См. также

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

Штатная страховка внутри цепочки обработки умеет прятать дефекты того шага, который стоит перед ней. У нас так и вышло: валидатор чинил результат постфактум, на выходе всё выглядело корректно, и никто не видел, что предыдущий шаг молча теряет данные. Вылезло это только на независимой проверке чужими глазами. Разбираю, чем инвариант отличается от сценарного теста и почему обычное умножение вытащило дефект из красивой метрики 0,997. Отдельно про 13 дублей, которые приехали из источника ещё до всякой обработки, и про две находки, которые оказались вообще не моими: они жили в эталонной реализации, откуда я списывал логику. Вторая часть про лимит выхода модели: почему обрезка ответа по длине это тихий ноль в мониторинге и как смена формата на дельты уронила выход до 4 951 токена. Есть отклонённые гипотезы и честный список того, чего мы так и не померили.

вчера в 12:20    143    nedomolkov.ivan    1    

1

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

Я сел проверять внутренний поисковый сервис по коду: можно ли доверять ему в автоматическом режиме. Сверка с обычным текстовым поиском по файлам дала 261 из 261, 264 из 264 и 182 из 182 совпадений, разбор структуры файла - 318 функций из 318. Стопроцентная точность. Этот же замер и вскрыл, что опираться на сервис нельзя: искал он безупречно, только совсем не в том месте, которое я ему называл. Внутри разбор трёх дефектов, сложившихся в один тихий отказ: аргумент, проглоченный без ошибки; умолчание, выставленное когда-то наугад; снимок данных, у которого в ответе не указан возраст. Плюс регулярное задание, которое вся команда считала работающим и которого не существовало никогда. Перенос на 1С прилагается: готовый цикл проверки, после которого HTTP-сервис перестаёт молча принимать мусор.

вчера в 12:10    149    nedomolkov.ivan    0    

0

Логистика, склад и ТМЦ Рефакторинг и качество кода Разработчик Аналитик Руководитель проекта 1С 8.3 Бесплатно (free)

Кладовщик получает задачу: на складе проверки лежат две штуки. Идёт в зону, а там всё на месте и никакой задачи в складской системе нет. Так работала автоматическая сверка остатков между учётной и складской системами: разницу она переносила документом, а комментарий к этому документу восемь месяцев отправлял людей искать несуществующий ноль. Робота разобрали до кода. Обе сравниваемые величины оказались синтетическими: слева физический срез с вычетами по активности и окнами в 60 минут и 12 часов, справа учётный остаток на конец дня минус трёхчасовой хвост непроведённых ордеров. Порог срабатывания стоял в нуле, поэтому робот исправно оформлял собственный шум измерения: за 60 дней он сам создал 62,7% оборота технического склада, а 2 081 артикул из 2 102 приезжал туда и уезжал обратно. Внутри обе формулы, замер лага отгрузки, снятая гипотеза и честная граница данных.

вчера в 12:00    123    nedomolkov.ivan    0    

0

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

Как за вечер проверить, годится ли локальная модель для поиска ошибок в вашем коде 1С, и не обмануть себя по дороге. Разбираю замер Qwen2.5-Coder 1.5B, 3B и 7B на коде с заранее известными дефектами: почему полноту и шум надо считать раздельно, как 3B набирает высокий балл, вообще не читая код, сколько минут уходит на боевую процедуру на процессоре и на GTX 1650, и чем кончилась попытка подложить модели справку по методам платформы.

16.09.2026    1107    nedomolkov.ivan    4    

1

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

Железо перестало быть проблемой, и качество ответов немедленно встало в потолок. Дальше пошли три улучшения, каждое из которых выглядело очевидно правильным: свой справочник стандартов, код процедур в поисковом индексе и переписывание вопроса отдельной моделью. Первое работало, но стоило пятнадцать тысяч токенов в каждом запросе. Второе уронило находимость на двадцать процентов. Третье уронило качество с 0,864 до 0,782 и растянуло прогон с 88 секунд до 302. Рассказываю, чем я это померил, почему на глаз ни одно ухудшение не видно и почему добавление правдивой информации регулярно делает поиск хуже.

14.09.2026    655    solbol    0    

3

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

Продолжение статьи «BSL Language Server внутри 1С:EDT: коннектор, которого не хватало». Там мы научили EDT видеть расширенную диагностику BSLLS, а здесь замкнем контур: научим ИИ-агентов автоматически исправлять эти ошибки строго по официальным стандартам разработки 1С.

02.09.2026    1779    malikov_pro    2    

6

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

В справочнике дополнительных обработок любой базы старше трёх лет лежит два-три десятка файлов. Часть писали вы, часть предыдущий разработчик, часть прислал подрядчик. Завтра одну из них надо править, и первый вопрос не "как править", а "что она вообще делает". Обычный ответ - открыть и читать: полторы тысячи строк это полдня. Показываю, как уложиться в пять минут: пять шагов, у каждого сказано, что он даёт. Внутри распределение 1 135 находок по ста чужим обработкам (четыре первых места из шести - одно и то же), что нашлось в наших собственных обработках, и честный список того, чего этот способ не даёт.

01.09.2026    1963    nedomolkov.ivan    6    

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