К статье
Практический материал

Разработка и Конфигурация · 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С и имеет доступ к базе данных.

Место размещения процедуры задаётся директивами компиляции: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Ошибка в выборе контекста — частая причина неработающего кода: например, из клиентской процедуры нельзя напрямую обратиться к базе данных, это вызовет ошибку исполнения.

Типичные ошибки новичков
01
Попытка выполнить запрос к базе данных в процедуре с директивой &НаКлиенте — код не скомпилируется или упадёт с ошибкой
02
Изменение типовых модулей вместо использования расширений — обновление конфигурации затрёт доработки
03
Игнорирование директивы Экспорт — процедура окажется недоступна из других модулей
04
Обращение к реквизиту объекта без проверки заполнения — получение пустого значения и ошибка в расчётах

Основные конструкции и встроенные типы данных

Набор конструкций BSL невелик и быстро осваивается: условный оператор Если...Тогда...Иначе...КонецЕсли, циклы Для...Цикл и Для Каждого...Из...Цикл, цикл Пока...Цикл, обработка исключений Попытка...Исключение...КонецПопытки. Этого достаточно, чтобы описывать любую бизнес-логику.

Реальная мощь языка — во встроенных типах. Чаще всего используются:

  • Запрос — выполнение запросов к базе на встроенном языке запросов, похожем на SQL;
  • ТаблицаЗначений — универсальная структура для хранения и обработки табличных данных в памяти;
  • Массив, Структура, Соответствие — коллекции для организации данных;
  • Дата — тип с богатым набором функций для работы с периодами.

Язык запросов — отдельная часть платформы, которую часто путают с самим BSL. Текст запроса пишется внутри BSL-кода как строка, но имеет собственный синтаксис с конструкциями ВЫБРАТЬ, ИЗ, ГДЕ, СГРУППИРОВАТЬ ПО. Владение языком запросов обязательно для любой серьёзной разработки на 1С.

Как BSL связан с объектами конфигурации

В отличие от универсальных языков, BSL жёстко привязан к метаданным. Когда разработчик пишет Документы.РеализацияТоваровУслуг.СоздатьДокумент(), он обращается к объекту конфигурации, который описан в дереве метаданных. Если такого документа в конфигурации нет — код не скомпилируется.

Это даёт важное преимущество: платформа контролирует корректность обращений к объектам ещё на этапе проверки модулей в конфигураторе. Опечатка в имени реквизита или документа будет обнаружена до запуска, а не в момент работы пользователя.

Типичный сценарий работы с объектом — обработчик проведения документа. В модуле объекта разработчик описывает, какие движения по регистрам должен сформировать документ: списание товара со склада, отражение выручки, расчёт взаиморасчётов. Вся эта логика пишется на BSL в предопределённой процедуре ОбработкаПроведения.

Инструменты разработки на BSL

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

Альтернатива — 1C:Enterprise Development Tools (EDT), среда на базе Eclipse с более строгой проверкой кода, поддержкой Git и командной разработки. Для любителей VS Code существуют расширения с поддержкой BSL, включая языковой сервер с диагностикой ошибок.

Где писать код на BSL

Конфигуратор

Стандартный инструмент, идёт с платформой. Подходит для доработок типовых конфигураций и небольших проектов. Ограничение — слабая поддержка версионирования.

1C:EDT

Среда для командной разработки с Git из коробки и строгой статической проверкой. Требует больше ресурсов и привыкания к интерфейсу Eclipse.

VS Code с плагином BSL

Удобен для анализа кода и работы с внешними обработками, но не заменяет конфигуратор для изменения метаданных.

С чего начать изучение BSL

Изучать BSL в отрыве от платформы бессмысленно — язык прост, а сложность в понимании объектной модели 1С. Рабочий путь выглядит так: сначала базовое знакомство с конфигуратором и деревом метаданных, затем простые доработки в учебной конфигурации, далее обработчики событий и запросы.

Порядок освоения BSL
  1. 1
    Установите учебную версию платформы и откройте конфигуратор на демонстрационной базе
  2. 2
    Изучите дерево конфигурации: справочники, документы, регистры — что хранит каждый объект
  3. 3
    Напишите первую процедуру в общем модуле и вызовите её из формы
  4. 4
    Освойте отладку: точки останова, табло, пошаговое выполнение
  5. 5
    Перейдите к языку запросов и обработчикам проведения документов
  6. 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С:Предприятие», на котором пишется вся бизнес-логика конфигураций. Он исполняется только внутри платформы, имеет русский и английский синтаксис и тесно связан с объектами метаданных. Осваивать его стоит в связке с конфигуратором, языком запросов и механизмом расширений, а проверять код — только на копии базы.