Как проверять код на языке 1С с помощью BSL Language Server

13.01.23

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

Некоторые разработчики на платформе 1С не проверяют свой код ни на соответствие стандартам 1С, ни на самые распространённые ошибки кодирования. И если раньше они могли оправдываться отсутствием инструментов для этого, то с появлением BSL Language Server оправданий больше нет.

Зачастую среднестатистическому разработчику на платформе 1С достаточно проверять свой код вручную с помощью этого инструмента - это занимает не так много времени, но приносит массу пользы.

В этой статье я рассматриваю только ручную проверку, как минимум с этого стоит начать, а потом уже озадачиваться пайплайнами CI/CD с OneScript, Jenkins и SonarCube.

 

Что такое BSL Language Server

BSL Language Server - это инструмент для статического анализа кода на языке 1С.

Он позволяет автоматически выявлять ошибки кодирования и запросов к базе данных, а благодаря подробному описанию ошибок является также инструментом обучения и развития правильных навыков для разработчиков на платформе 1С.

Сам по себе он представляет консольное Java-приложение, предназначенное для запуска из командной оболочки, при этом анализировать нужно заранее сохранённые файлы в указанной директории.

Использовать приложение из командной строки для ручного анализа кода неудобно, поэтому на базе BSL Language Server появились и другие инструменты, с возможностью анализа кода на языке 1С из интерфейса приложений.

О некоторых подобных инструментах для ручного анализа кода были публикации и здесь, например:

Все они предполагают использование каких-то "кастомных" инструментов на базе BSL Language Server.

Но на мой взгляд, самым простым и доступным для использования вариантом является расширение Language 1C (BSL) для VS Code.

 

Использование расширения для VS Code

 

Установка VS Code

Поскольку расширение предназначено для редактора Visual Studio Code, предварительно нужно установить сам редактор:

  1. Скачать редактор по ссылке.
  2. Установить редактор в каталог своего пользователя - можно устанавливать без полномочий администратора компьютера.

 

Установка расширений

Нужно установить следующие расширения.

Ссылки приведены на страницы в маркетплейсе, сами расширения можно установить прямо из VS Code через панель расширений (значок  в панели слева или сочетание клавиш Ctrl + Shift + X, а дальше поиск по наименованию).

  • Language 1C (BSL) - расширение, добавляющее поддержку языка 1С и языка запросов 1С в VS Code, в его составе есть BSL Language Server.
    Не помню, нужно ли устанавливать для него OneScript, если что, можно скачать здесь.
  • Russian Language Pack for Visual Studio Code - включает поддержку русского языка в интерфейсе VS Code.
    Если хорошо ориентируетесь в английском интерфейсе, можно не устанавливать.
  • Необязательные, но желательные расширения для исправления орфографических ошибок:
    • Code Spell Checker - базовая проверка орфографии в редакторе.
      Обязателен в случае установки следующего расширения.
    • Russian - Code Spell Checker - проверка орфографии на русском языке.

 

Как проверять код

Для проверки кода 1С в редакторе VS Code с помощью плагина Language 1C (BSL) не обязательно сохранять файл с кодом.

Достаточно:

  1. Скопировать код из модуля в конфигураторе 1С.
  2. Создать новый (пустой) файл в VS Code (меню File - New Text File или сочетание клавиш Ctrl + N).
  3. Указать для файла язык 1C BSL (bsl).
    Сделать это можно двумя способами:
    • Выбрать язык в нижней панели справа:

       
    • С помощью сочетания клавиш Ctrl + K M (то есть нажать одновременно Ctrl и K, а после отдельно нажать M).
      При этом отобразится окно выбора языка из списка, нужно выбрать 1C BSL (bsl):

       
  4. Вставить скопированный ранее код на языке 1С в VS Code в окно файла с выбранным языком.

После этого должен запуститься BSL Language Server, информация о его запуске будет отображаться в нижней панели слева:

 

 

После запуска код будет автоматически проверен, а в панель проблем в нижней части VS Code будет выведена информация по найденным проблемам.

На скриншоте ниже пример проблем в одном нетиповом общем модуле в старой конфигурации:

  • 922 - общее количество проблем.
  • 34 - критические проблемы.
  • 475 - предупреждения.
  • 413 - небольшие проблемы.

 

 

При нажатии на строку описания проблемы автоматически выбирается соответствующая строка кода.

При нажатии на гиперссылку в строке описания проблемы вызывается диалог открытия страницы с подробным описанием ошибки, обоснованием, почему это именно ошибка, и (во многих случаях) примером, как нужно делать взамен.

Если добавить домен с описаниями проблем в список доверенных расположений, диалоговое окно больше выводиться не будет, будет сразу открываться нужная страница.

Чтобы изменения кода анализировались автоматически, например, при вставке нового кода в то же окно редактора, в файле настроек BSL Language Server должна быть установлена настройка "computeTrigger": "onType".

 

Зачем всё это нужно

Если внимательно читать информацию и выполнять рекомендации, указанные на страницах описания ошибок, можно:

  • научиться избегать подобных ошибок в будущем;
  • усвоить на практике некоторые особенности платформы 1С и стандарты разработки 1С;
  • сделать свой код качественнее и проще в поддержке и доработке.

Однако нужно быть готовым к тому, что не все проблемы удастся решить. Например, если приложение 1С работает в среде Windows, а в коде используется COM-объект, то просто так заменить его использование может быть проблематичным или невозможным. Но если не планируется миграция на Linux, то это и не нужно.

В подобных случаях можно игнорировать такие проблемы или отключить эти диагностики в том же файле настроек BSL Language Server.

OneDebugger — отладка кода 1С

Решение OneDebugger — мощный инструмент отладки кода для 1С:8.3. Поддерживает пошаговое выполнение, просмотр значений переменных, анализ стека вызовов и вычисление выражений. Обеспечивает синтаксический контроль, остановку по ошибке и удобную работу с процедурами и функциями.


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

качество кода анализ статический bsl language server

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

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

См. также

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

Показываем, как встроить ИИ-помощника в code review 1С без Git, SonarQube и EDT – только с Конфигуратором, RAG-контекстом и набором MCP-инструментов. Разбираем архитектуру решения на Open Web UI и OpenRouter, методику сравнения моделей по Precision, Recall, BonusRate и PenaltyRate, а также объясняем, почему контекст влияет на качество ревью сильнее, чем выбор самой модели. На реальных примерах показываем, какие ошибки ИИ находит хорошо, где все еще нужен архитектор и почему на старте пилота время ревью может не сократиться, а вырасти. В финале делимся метриками внедрения и выводами для команд, которые хотят повторить такой подход у себя.

17.06.2026    325    NVyunova    0    

2

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

Кажется, что code-review с помощью искусственного интеллекта устроено просто: достаточно отправить код в LLM, задать промт и получить список замечаний. На практике такой подход быстро упирается в недетерминированность результата, неверную оценку критичности ошибок в 1С-коде и рекомендации, которые сложно отличить от полезных замечаний. Описываем гибридный подход к автокод-ревью: статический анализатор работает вместе с LLM, а база знаний из стандартов 1С превращается в набор машиночитаемых норм. Такая архитектура помогает снизить количество галлюцинаций, точнее определять критичность нарушений и постепенно развивать качество ревью через итеративное пополнение правил.

09.06.2026    1083    Repich    5    

9

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

Чем активнее развивается старая система, тем страшнее бывает её менять. Снаружи всё выглядит живым: релизы выходят, бизнес получает новые функции, пользователи работают. Но внутри уже появляются фразы, после которых разговор заканчивается: «это лучше не трогать», «там когда-то всё упало», «давайте сделаем рядом». И в какой-то момент становится непонятно: система ещё развивается — или команда уже просто учится обходить опасные места.

04.06.2026    769    IgorVasilyev    29    

4

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

MetaVision for 1C PRO — профессиональная версия статического анализатора и визуализатора кода. Загружает выгрузки конфигураций, расширения и внешние файлы, за секунды строит графы функций, находит уязвимости безопасности и подсвечивает проблемы производительности. В арсенале: визуализация логики в виде графов условий, циклов, транзакций и вызовов, статический аудит безопасности с поиском RCE, SSRF, COM-инъекций и паролей в коде, выявление запросов в циклах и вложенных блокировок, полнотекстовый поиск по всем модулям, встроенный редактор с конвертером запросов и автоформатированием, а также честная статистика по объектам и функциям. Главное новшество PRO — до пяти конфигураций одновременно с мгновенным переключением, наложение до пяти расширений как в конфигураторе, анализ внешних файлов в единой связке с основной конфигурацией и пять тем оформления. Инструмент для тех, кто ведёт несколько проектов параллельно и хочет видеть полную картину в одном окне — быстро, наглядно и безопасно.

7 стартмани

19.05.2026    3054    31    KHoroshulinAV    7    

13

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

Есть запросы, которые сразу вызывают подозрение: десятки соединений, множество временных таблиц, объединения, группировки и длинный список условий. Но чаще проблемы прячутся в другом месте — в запросах, которые выглядят вполне приемлемо. Пара обращений через точку, отбор после виртуальной таблицы, РАЗЛИЧНЫЕ «чтобы убрать дубли», большой список в параметре, реквизит регистратора через составной тип — и вот уже на тестовой базе все летает, а в рабочей базе отчет открывается минуту. Разберу такие случаи из практики: не синтаксические ошибки, а именно запросы, которые формально нормальные, но на больших данных начинают вести себя плохо.

04.05.2026    2044    YA_2060655612    11    

9

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

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

29.04.2026    1063    _apelsin4ik    0    

5

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

Код в 1С редко начинает тормозить сразу. Намного чаще он долго выглядит нормальным, а проблемы проявляются позже — когда растут данные, пользователи и количество доработок. В статье разбираю типичные причины такой деградации: запросы в цикле, лишние ПолучитьОбъект(), тяжёлые формы и обработку “по одному”. Статья практическая: с примерами, типичными ошибками и понятными признаками того, что код уже плохо масштабируется.

21.04.2026    2137    YA_2060655612    6    

11

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

Инструмент для тех, кто устал читать модули по 50 тысяч строк и искать ошибки глазами. MetaVision загружает выгруженные файлы конфигурации и за секунды строит графы функций, находит уязвимости и подсвечивает проблемы производительности. Ключевые возможности: Визуализация логики функций (графы условий, циклов, транзакций и вызовов). Статический аудит безопасности (RCE, SSRF, COM-инъекции, пароли в коде). Поиск проблем производительности (запросы в циклах, вложенные блокировки). Полнотекстовый поиск по всем модулям конфигурации. Статистика по объектам и функциям. Безопасность: Программа работает строго локально. Код вашей конфигурации не отправляется в интернет и не анализируется на сторонних серверах. Попробуйте MetaVision сегодня — узнайте, что скрывает ваш код.

20.04.2026    12015    1260    KHoroshulinAV    56    

92
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. IVSH 218 16.01.23 06:23 Сейчас в теме
Пробовали какой - нибудь БСП модуль там прогонять? Интересно какое он там количество проблем покажет )
caterpillar1276; +1 Ответить
2. AlekseiAdamov 200 16.01.23 07:11 Сейчас в теме
(1) Нет, пока особо не интересовался, т.к. стараюсь типовые модули не трогать:)
Основная учётная база на старой перепиленной конфигурации КА 1.1 - за время экплуатации там накопилось много доработок, и сравнивать тексты модулей с конфигурацией поставщика ради этого не хочется.
К тому же за годы развития БСП они могли многие проблемы в коде вычистить, в старых мрака наверняка хватает: начиная с использования ТекущаяДата() и КаталогВременныхФайлов() и заканчивая отсутствующими описаниями параметров в описаниях функций.
3. nixel 1474 16.01.23 08:00 Сейчас в теме
(1) бсп целиком автоматически прогоняется на нашем сервере SonarQube: https://sonar.openbsl.ru/dashboard?id=ssl_3_1

Источником для проверок является bsl ls.
user2113727; caterpillar1276; baranchikov; Good_Smile; ktb; AlekseiAdamov; AlexGr00vy; kuntashov; dvsidelnikov; +9 Ответить
4. nixel 1474 16.01.23 08:27 Сейчас в теме
Спасибо за статью, но не могу не отметить, что BSL Language Server - это не инструмент для статического анализа кода. Это инструмент для поддержки языка 1с в текстовых редакторах, реализующий Language Server Protocol. Он даёт подсказки при наведении, переходы к определению процедур и функций, показывает граф вызовов, места использования процедур, позволяет умно сворачивать код 1с и код запросов, собирает метрики по коду (и часть их них показывает в виде линз сложности над началом процедур) и многое другое. И да, среди прочего имеет механизм диагностирования ошибок и вывода отчётов по ним в разных форматах.
caterpillar1276; baranchikov; SerVer1C; SagittariusA; cosmo2004; ktb; JohnyDeath; Cmapnep; AlekseiAdamov; Йожкин Кот; awk; AlexGr00vy; kuntashov; dvsidelnikov; +14 Ответить
5. AlekseiAdamov 200 16.01.23 10:44 Сейчас в теме
(4) Никита, большое спасибо за подробный ответ и за Вашу работу для сообщества!
baranchikov; +1 Ответить
7. sd_75 26.01.23 22:30 Сейчас в теме
(5)Так получается BSL Language Server не годится для проверки соответствия кода стандартам 1С?
8. AlekseiAdamov 200 27.01.23 18:41 Сейчас в теме
(7) А Вы список диагностик, видимо, даже не смотрели?
Вот пример со ссылкой на стандарт: https://1c-syntax.github.io/bsl-language-server/diagnostics/AssignAliasFieldsInQuery/
Часть стандартов, вероятно, трудно проверять программно.
Если Вам каких-то проверок не хватает и есть опыт разработки на Java - можете поучаствовать в проекте: https://1c-syntax.github.io/bsl-language-server/contributing/
6. kuzyara 2255 16.01.23 12:29 Сейчас в теме
Для контроля ошибок использую:
- для vscode плагин Language 1C (BSL)
- для конфигуратора Phoenix BSL для 1С
- для EDT плагин SilverLint(платный) или bslls-connector-for-edt(бесплатный)
- сонаркуб

Полный список диагностик https://1c-syntax.github.io/bsl-language-server/diagnostics/
baranchikov; +1 Ответить
12. Denis211990 20 12.12.24 11:14 Сейчас в теме
(6) Какие настройки плагина "bslls-connector-for-edt" в EDT позволяют запускать проверки?
9. roman72 404 12.02.23 10:16 Сейчас в теме
В BSL Language Server можно загрузить сразу все тексты модулей конфигурации для анализа?
Есть в BSL Language Server возможность самому написать обработчик строк модулей кода? (не с целью диагностики, а с целью последующей обработки полученных аналитических преобразований)
10. AlekseiAdamov 200 12.02.23 12:38 Сейчас в теме
(9) Выше nixel написал, что
Это инструмент для поддержки языка 1с в текстовых редакторах, реализующий Language Server Protocol.


Соответственно, как конкретный пользователь будет его запускать - это уже его личное дело в зависимости от задач.
Я лишь описал, как эти инструментом пользоваться с помощью VS Code без дополнительных сложностей.

Вы бы хоть на страницу проекта зашли и прочитали документацию.
Вот про запуск в режиме анализатора: https://1c-syntax.github.io/bsl-language-server/#analyze
Как конкретно Вы будете обрабатывать отчёт об ошибках - это Ваше дело.
Вы можете встроить его в пайплайн CI и обрабатывать его автоматически с помощью готовых инструментов типа SonarQube.
Вот на вскидку несколько статей на эту тему, достаточно вбить "BSL Language Server" в поиск по Инфостарту:
https://infostart.ru/public/1117485/
https://infostart.ru/1c/articles/1096770/
https://infostart.ru/1c/articles/1089670/
https://infostart.ru/1c/articles/1175305/

а с целью последующей обработки полученных аналитических преобразований

Что Вы под этим подразумеваете?
Даже если Вам чего-то не хватает в имеющихся возможностях BSL LS, Вы можете написать свой инструмент и проверять через него дополнительно или встроить его в тот же пайплайн.
11. Viktor_Ermakov 402 28.11.24 15:21 Сейчас в теме
И если раньше они могли оправдываться отсутствием инструментов для этого, то с появлением BSL Language Server оправданий больше нет.

А я вот заступлюсь, например за себя, оправдания есть, например не возможность установить VSC и сопутствующие плагины))) ( касается только текущего места работы)
Для отправки сообщения требуется регистрация/авторизация