Как проверять код на языке 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

См. также

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

ИИ для код-ревью – не просто модный тренд, а реальный инструмент, который уже помогает разработчикам экономить время и повышать качество кода. В статье разбираемся, как запустить локальную LLM на базе Ollama, подключить ее к Git через Webhook и Python-скрипт, а также какие параметры модели отвечают за точность и галлюцинации. Делимся схемой работы, настройками и результатами тестирования, доказывая, что автоматизированное код-ревью действительно может работать – даже без космического бюджета.

30.10.2025    1113    user2100900    3    

4

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

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

28.10.2025    1377    vaillant    29    

11

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

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

24.10.2025    1353    1c-izh    6    

6

Обновление 1С Рефакторинг и качество кода Программист 1С v8.3 Россия Абонемент ($m)

Представляю вашему вниманию конфигурацию "Проверка конфигураций (версия 3)", которая позволяет проверять любые конфигурации и расширения на наличие ошибок, связанных с вызовом экспортных функций и процедур общих модулей и модулей менеджеров объектов. Проверяются ошибки: 1) Метод объекта не обнаружен 2) Недостаточно фактических параметров. 3) Слишком много фактических параметров. Рекомендуется выполнять при подготовке обновлений.

10 стартмани

17.10.2025    4072    18    Suker86    12    

19

Рефакторинг и качество кода Программист 1С v8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

Сервер SQL хранит у себя данные по текущему состоянию и выполнению запросов. Например, какой запрос сколько раз выполнялся и сколько времени было потрачено. В топ таких запросов часто будут попадать тяжелые запросы и неоптимальные - которые и нужно будет найти и оптимизировать.

1 стартмани

06.10.2025    677    3    Alex_Smolensky    15    

4

Рефакторинг и качество кода БСП (Библиотека стандартных подсистем) Механизмы платформы 1С Программист 1С v8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

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

23.09.2025    4404    AlexeyPROSTO_1C    1    

14

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

Рассказываем о том, как не ухудшить производительность интеграционного решения в процессе разработки и рефакторинга, когда новых фич в коробке все больше, а требования по производительности все выше. На живом примере покажем реализованный подход с использованием таких инструментов, как Docker, Redash, Vanessa Automation.

02.09.2025    2486    user1827916    1    

3

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

GRASP-паттерны в 1С: меньше хаоса, больше архитектуры.

28.08.2025    10039    lapinio    46    

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

Источником для проверок является bsl ls.
user1158788; baranchikov; Good_Smile; ktb; AlekseiAdamov; Revachol; kuntashov; dvsidelnikov; +8 Ответить
4. nixel 1463 16.01.23 08:27 Сейчас в теме
Спасибо за статью, но не могу не отметить, что BSL Language Server - это не инструмент для статического анализа кода. Это инструмент для поддержки языка 1с в текстовых редакторах, реализующий Language Server Protocol. Он даёт подсказки при наведении, переходы к определению процедур и функций, показывает граф вызовов, места использования процедур, позволяет умно сворачивать код 1с и код запросов, собирает метрики по коду (и часть их них показывает в виде линз сложности над началом процедур) и многое другое. И да, среди прочего имеет механизм диагностирования ошибок и вывода отчётов по ним в разных форматах.
user1158788; baranchikov; SerVer1C; SagittariusA; cosmo2004; ktb; JohnyDeath; Cmapnep; AlekseiAdamov; Йожкин Кот; awk; Revachol; kuntashov; dvsidelnikov; +14 Ответить
5. AlekseiAdamov 195 16.01.23 10:44 Сейчас в теме
(4) Никита, большое спасибо за подробный ответ и за Вашу работу для сообщества!
baranchikov; +1 Ответить
7. sd_75 26.01.23 22:30 Сейчас в теме
(5)Так получается BSL Language Server не годится для проверки соответствия кода стандартам 1С?
8. AlekseiAdamov 195 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 2203 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 403 12.02.23 10:16 Сейчас в теме
В BSL Language Server можно загрузить сразу все тексты модулей конфигурации для анализа?
Есть в BSL Language Server возможность самому написать обработчик строк модулей кода? (не с целью диагностики, а с целью последующей обработки полученных аналитических преобразований)
10. AlekseiAdamov 195 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 393 28.11.24 15:21 Сейчас в теме
И если раньше они могли оправдываться отсутствием инструментов для этого, то с появлением BSL Language Server оправданий больше нет.

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