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

См. также

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

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

10 стартмани

02.11.2026    253    1    nedomolkov.ivan    1    

2

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

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

29.10.2026    301    YA_777378709    0    

4

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

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

28.10.2026    405    Pavel791    0    

2

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

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

1 стартмани

23.10.2026    471    Ninel_S    3    

2

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

Скрипт, который должен был проверять код 1С в Docker, на деле проверял только, что файл не пустой: из 11 модулей с ошибками он пропустил все. Я переписала проверку и сравнила её с самой 1С на тех же 11 модулях из нашей конфигурации «Нано-УТ». Новый скрипт нашёл незакрытые «Если», процедуры и скобки в 10 случаях из 11. Вызов несуществующей процедуры находит только сама 1С. В архиве скрипт, файлы для Docker, примеры с ошибками и журналы проверки.

5 стартмани

23.10.2026    412    Ninel_S    4    

0

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

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

9 стартмани

19.10.2026    413    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    440    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    3342    Konstmax13    11    

11
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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с и код запросов, собирает метрики по коду (и часть их них показывает в виде линз сложности над началом процедур) и многое другое. И да, среди прочего имеет механизм диагностирования ошибок и вывода отчётов по ним в разных форматах.
YA_1454059215; caterpillar1276; baranchikov; SerVer1C; SagittariusA; cosmo2004; ktb; JohnyDeath; Cmapnep; AlekseiAdamov; Йожкин Кот; awk; AlexGr00vy; kuntashov; dvsidelnikov; +15 – Ответить
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 2276 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 409 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 419 28.11.24 15:21 Сейчас в теме
И если раньше они могли оправдываться отсутствием инструментов для этого, то с появлением BSL Language Server оправданий больше нет.

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