Разработка и Конфигурация · 10 мин
1С BSL: что это такое и как работает встроенный язык 1С
1С BSL — встроенный язык платформы 1С:Предприятие. Разбираем, что это, где используется, как выглядит код, чем отличается от других языков и с чего начать изучение.
1С BSL (1C:Enterprise Built-in Script Language) — это встроенный язык программирования платформы «1С:Предприятие», на котором пишется вся бизнес-логика прикладных решений: обработка документов, расчёты в отчётах, проведение, проверки заполнения и интеграции. Если вы открываете конфигуратор 1С и видите модули с кодом — это и есть BSL, который раньше называли просто «встроенный язык 1С».
Название BSL закрепилось относительно недавно вместе с развитием экосистемы вокруг платформы: появился языковой сервер 1C:Enterprise Language Tools, плагины для VS Code, статические анализаторы кода. Сам язык при этом существует десятилетиями и знаком любому, кто дорабатывал «1С:Бухгалтерию», «Управление торговлей» или «Зарплату и управление персоналом».
Ключевая особенность BSL — он не существует отдельно от платформы. Код на нём выполняется только внутри «1С:Предприятия» и оперирует объектами конфигурации: справочниками, документами, регистрами, запросами. Поэтому изучение BSL неразрывно связано с пониманием устройства самой платформы.
Что представляет собой язык BSL
BSL — процедурный язык с динамической типизацией. Переменные не требуют объявления типа, значения присваиваются оператором «=», а структура программы строится из процедур и функций, размещённых в модулях. Язык изначально проектировался для бизнес-задач, поэтому в нём есть встроенные типы для работы с датами, денежными суммами, таблицами значений и запросами к базе данных.
Характерная черта — двуязычный синтаксис. Один и тот же код можно писать на русском или на английском: Если ... Тогда ... КонецЕсли; эквивалентно If ... Then ... EndIf;. В российских конфигурациях традиционно используется русский синтаксис, и это нормальная практика, а не упрощение «для непрограммистов».
Пример простого кода на BSL:
Функция РассчитатьСуммуСНДС(Сумма, СтавкаНДС) Экспорт
Если СтавкаНДС = 0 Тогда
Возврат Сумма;
КонецЕсли;
Возврат Сумма + Сумма * СтавкаНДС / 100;
КонецФункции
Где выполняется код: клиент, сервер и контексты
Одна из первых сложностей для новичков — понимание того, где именно исполняется код. В управляемом приложении 1С код делится на клиентский и серверный. Клиентский код работает на компьютере пользователя и отвечает за интерфейс: обработку нажатий, открытие форм, диалоги. Серверный код выполняется на сервере 1С и имеет доступ к базе данных.
Место размещения процедуры задаётся директивами компиляции: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Ошибка в выборе контекста — частая причина неработающего кода: например, из клиентской процедуры нельзя напрямую обратиться к базе данных, это вызовет ошибку исполнения.
Основные конструкции и встроенные типы данных
Набор конструкций BSL невелик и быстро осваивается: условный оператор Если...Тогда...Иначе...КонецЕсли, циклы Для...Цикл и Для Каждого...Из...Цикл, цикл Пока...Цикл, обработка исключений Попытка...Исключение...КонецПопытки. Этого достаточно, чтобы описывать любую бизнес-логику.
Реальная мощь языка — во встроенных типах. Чаще всего используются:
- Запрос — выполнение запросов к базе на встроенном языке запросов, похожем на SQL;
- ТаблицаЗначений — универсальная структура для хранения и обработки табличных данных в памяти;
- Массив, Структура, Соответствие — коллекции для организации данных;
- Дата — тип с богатым набором функций для работы с периодами.
Язык запросов — отдельная часть платформы, которую часто путают с самим BSL. Текст запроса пишется внутри BSL-кода как строка, но имеет собственный синтаксис с конструкциями ВЫБРАТЬ, ИЗ, ГДЕ, СГРУППИРОВАТЬ ПО. Владение языком запросов обязательно для любой серьёзной разработки на 1С.
Как BSL связан с объектами конфигурации
В отличие от универсальных языков, BSL жёстко привязан к метаданным. Когда разработчик пишет Документы.РеализацияТоваровУслуг.СоздатьДокумент(), он обращается к объекту конфигурации, который описан в дереве метаданных. Если такого документа в конфигурации нет — код не скомпилируется.
Это даёт важное преимущество: платформа контролирует корректность обращений к объектам ещё на этапе проверки модулей в конфигураторе. Опечатка в имени реквизита или документа будет обнаружена до запуска, а не в момент работы пользователя.
Типичный сценарий работы с объектом — обработчик проведения документа. В модуле объекта разработчик описывает, какие движения по регистрам должен сформировать документ: списание товара со склада, отражение выручки, расчёт взаиморасчётов. Вся эта логика пишется на BSL в предопределённой процедуре ОбработкаПроведения.
Инструменты разработки на BSL
Основная среда разработки — конфигуратор «1С:Предприятие». Он включает редактор кода с подсветкой синтаксиса, контекстную подсказку, синтакс-помощник по встроенным функциям и отладчик с точками останова, просмотром переменных и пошаговым исполнением. Для большинства задач возможностей конфигуратора достаточно.
Альтернатива — 1C:Enterprise Development Tools (EDT), среда на базе Eclipse с более строгой проверкой кода, поддержкой Git и командной разработки. Для любителей VS Code существуют расширения с поддержкой BSL, включая языковой сервер с диагностикой ошибок.
Где писать код на BSL
Стандартный инструмент, идёт с платформой. Подходит для доработок типовых конфигураций и небольших проектов. Ограничение — слабая поддержка версионирования.
Среда для командной разработки с Git из коробки и строгой статической проверкой. Требует больше ресурсов и привыкания к интерфейсу Eclipse.
Удобен для анализа кода и работы с внешними обработками, но не заменяет конфигуратор для изменения метаданных.
С чего начать изучение BSL
Изучать BSL в отрыве от платформы бессмысленно — язык прост, а сложность в понимании объектной модели 1С. Рабочий путь выглядит так: сначала базовое знакомство с конфигуратором и деревом метаданных, затем простые доработки в учебной конфигурации, далее обработчики событий и запросы.
- 1Установите учебную версию платформы и откройте конфигуратор на демонстрационной базе
- 2Изучите дерево конфигурации: справочники, документы, регистры — что хранит каждый объект
- 3Напишите первую процедуру в общем модуле и вызовите её из формы
- 4Освойте отладку: точки останова, табло, пошаговое выполнение
- 5Перейдите к языку запросов и обработчикам проведения документов
- 6Изучите механизм расширений для безопасной доработки типовых конфигураций
Для практики полезно брать реальные задачи: написать внешнюю обработку, которая выгружает данные в файл, добавить печатную форму к документу, сделать отчёт на СКД. Каждая такая задача задействует сразу несколько механизмов платформы и закрепляет синтаксис языка лучше, чем чтение документации без практики.
Ограничения и особенности языка
BSL не является языком общего назначения. На нём нельзя написать драйвер, мобильное приложение или веб-сайт — он решает задачи внутри экосистемы 1С. Для интеграций с внешним миром используются HTTP-запросы, веб-сервисы и COM/внешние компоненты, которые вызываются из BSL-кода.
Другие ограничения, которые важно знать:
- нет классов и наследования в привычном понимании ООП — вместо них объекты метаданных и общие модули;
- код хранится внутри конфигурации, а не в отдельных файлах (исключение — EDT и выгрузка в файлы);
- производительность интерпретируемого кода ниже компилируемых языков, поэтому тяжёлые вычисления выносят в запросы или на уровень СУБД.
Если расчёт на BSL работает медленно, чаще всего проблема не в языке, а в обращении к базе внутри цикла. Перенесите выборку данных в один запрос, обойдите результат в цикле — и время выполнения обычно сокращается в разы без какой-либо оптимизации самого кода.
Частые вопросы о 1С BSL
BSL — это то же самое, что 1C:Script?
Нет. 1C:Script (OneScript) — независимый open-source интерпретатор с синтаксисом, похожим на встроенный язык 1С. Он выполняется вне платформы и используется для скриптов автоматизации, сборок и инструментов разработчика. BSL же исполняется только внутри «1С:Предприятия».
Нужно ли знать другой язык программирования перед изучением BSL?
Не обязательно. BSL вполне подходит как первый язык: простой синтаксис, русские ключевые слова, быстрый видимый результат. Однако базовые понятия — переменные, циклы, функции — проще освоить на любом учебном материале по программированию, а затем перенести на 1С.
Можно ли писать на BSL английскими ключевыми словами?
Да, синтаксис полностью дублируется: If/Then/EndIf вместо Если/Тогда/КонецЕсли. Платформа понимает оба варианта и даже их смешение, но на практике придерживаются одного стиля в рамках проекта — в российских конфигурациях это обычно русский синтаксис.
Чем BSL отличается от языка запросов 1С?
Это два разных языка внутри платформы. BSL описывает алгоритмы и логику, а язык запросов — выборку данных из базы, по синтаксису напоминающую SQL. Текст запроса пишется внутри BSL-кода строкой и выполняется через объект Запрос.
Где посмотреть справку по встроенным функциям BSL?
Прямо в конфигураторе: меню Справка → Синтакс-помощник содержит описание всех операторов, функций и объектов платформы с примерами. Также работает контекстная справка по клавише F1 на любом элементе кода.
Подходит ли BSL для интеграции 1С с внешними системами?
Да, это стандартный сценарий. В BSL есть объекты для HTTP-запросов, работы с JSON и XML, файлами и веб-сервисами. Большинство обменов с сайтами, банками и сервисами реализуется именно кодом на BSL внутри конфигурации.
Что важно запомнить
1С BSL — встроенный язык платформы «1С:Предприятие», на котором пишется вся бизнес-логика конфигураций. Он исполняется только внутри платформы, имеет русский и английский синтаксис и тесно связан с объектами метаданных. Осваивать его стоит в связке с конфигуратором, языком запросов и механизмом расширений, а проверять код — только на копии базы.