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

Разработка и Конфигурация · 11 мин

На чём написан язык 1С: устройство платформы и встроенного языка

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

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

Ядро платформы 1С:Предприятие написано преимущественно на C++ — это компилируемый язык, обеспечивающий высокую производительность исполняемого кода, работу с памятью, файловой системой и сетью. Пользовательский интерфейс тонкого и веб-клиента дополнительно использует веб-технологии, а серверная часть взаимодействует с СУБД через SQL-запросы. Точный состав технологий вендор полностью не раскрывает, но C++ как основа ядра — общеизвестный факт, подтверждаемый, в частности, требованиями к вакансиям разработчиков платформы.

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

Из чего состоит платформа 1С: технологические слои

Платформа 1С:Предприятие — это многослойная система. Нижний слой — ядро, написанное на C++: оно отвечает за исполнение встроенного языка, управление транзакциями, кэширование, работу с метаданными и взаимодействие с операционной системой. Именно ядро распространяется в виде исполняемых файлов для Windows и Linux, а также серверных компонентов.

Выше ядра располагается слой работы с данными. Платформа не хранит данные сама — она транслирует обращения встроенного языка и запросов в SQL для внешних СУБД: Microsoft SQL Server, PostgreSQL (включая адаптированные сборки), Oracle Database, IBM DB2. В файловом варианте работы используется собственный формат файловой базы (1Cv8.1CD), который также обслуживается ядром.

Клиентский слой включает толстый клиент, тонкий клиент и веб-клиент. Веб-клиент работает в браузере и опирается на HTML, CSS и JavaScript, а обмен между клиентом и сервером идёт по HTTP/HTTPS. Мобильная платформа — отдельная сборка ядра под Android и iOS.

Ядро платформыC++

Исполняемые файлы сервера и клиентов, исполнение встроенного языка

Прикладной кодВстроенный язык 1С

Модули конфигурации, написанные разработчиком

Хранение данныхSQL (MS SQL, PostgreSQL, Oracle, DB2) или файловая база

Платформа транслирует запросы в диалект конкретной СУБД

Веб-клиентHTML, CSS, JavaScript

Интерфейс в браузере без установки клиента

Что такое встроенный язык 1С

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

Характерная особенность — двуязычный синтаксис. Все ключевые слова, операторы и встроенные функции имеют русский и английский варианты: Если ... Тогда ... КонецЕсли; эквивалентно If ... Then ... EndIf;. Оба варианта можно смешивать в одном модуле, хотя в типовых конфигурациях принят русский синтаксис.

Язык слабо типизирован: одна и та же переменная может последовательно хранить число, строку или ссылку на объект базы данных. Это ускоряет разработку, но повышает риск ошибок времени выполнения — например, попытки сложить строку с датой. Пример простого фрагмента кода:

Функция РассчитатьСкидку(СуммаПокупки)

Если СуммаПокупки >= 100000 Тогда

Возврат СуммаПокупки * 0.1;

Иначе

Возврат 0;

КонецЕсли;

КонецФункции

На каком языке написано ядро платформы и почему это важно

Выбор C++ для ядра объясняется требованиями к производительности: платформа должна одновременно обслуживать сотни и тысячи пользователей, исполнять код встроенного языка, управлять блокировками и транзакциями. Интерпретатор встроенного языка, механизмы запросов, журнал регистрации и кластер серверов — всё это нативный код.

Для прикладного разработчика это имеет практическое следствие: скорость работы встроенного языка ограничена тем, что каждый оператор проходит через интерпретатор. Поэтому массовые обработки данных рекомендуется выполнять запросами (которые уходят в СУБД и выполняются её оптимизатором), а не циклами с обходом выборки. Это одна из базовых оптимизаций в 1С.

Ещё одно следствие — расширяемость через внешние компоненты. Если возможностей встроенного языка не хватает (работа с оборудованием, криптография, специфические протоколы), разрабатывают внешние компоненты по технологии Native API на C++ или COM-компоненты. Платформа загружает их как библиотеки и предоставляет доступ из встроенного языка.

Язык запросов 1С и его связь с SQL

Третий языковой элемент платформы — язык запросов 1С. Синтаксически он напоминает SQL и тоже имеет русские и английские ключевые слова (ВЫБРАТЬ ... ИЗ ... ГДЕ / SELECT ... FROM ... WHERE), но работает не с таблицами СУБД напрямую, а с объектами метаданных: справочниками, документами, регистрами.

При выполнении запроса платформа транслирует его текст в диалект конкретной СУБД с учётом физической структуры хранения: имена таблиц и полей в базе данных не совпадают с именами метаданных, а виртуальные таблицы (остатки, обороты, срезы) разворачиваются в сложные соединения и группировки. Поэтому попытка читать данные прямыми SQL-запросами к базе в обход платформы — рискованная практика: структура таблиц не документирована и может меняться при обновлении конфигурации.

Как устроена конфигурация и где хранится код

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

Прикладной код не компилируется в машинные инструкции — платформа переводит его во внутреннее представление (байт-код) и исполняет интерпретатором ядра. Исходный текст модулей хранится в базе и может поставляться закрытым (без исходного кода) — так вендоры защищают лицензируемые решения.

Для командной разработки конфигурацию выгружают в файлы XML или в формат проекта EDT, где модули сохраняются как текстовые файлы с расширением bsl. Это позволяет использовать системы контроля версий, например Git.

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

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

Классическая среда разработки, встроенная в платформу. Подходит для большинства задач, но слабо поддерживает командную работу и контроль версий.

1C:Enterprise Development Tools (EDT)

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

Расширения, внешние компоненты и интеграции

Когда встроенного языка недостаточно, платформа предлагает несколько механизмов расширения. Расширения конфигурации позволяют дописывать модули и добавлять объекты поверх типовой конфигурации без её изменения — код по-прежнему пишется на встроенном языке.

Внешние компоненты (Native API, COM) пишутся на C++ или других компилируемых языках и подключаются как библиотеки. Так реализуют, например, работу со сканерами штрихкодов, кассовым оборудованием и электронной подписью.

Для интеграции с внешними системами используются HTTP-сервисы, веб-сервисы (SOAP), файловый обмен и брокеры сообщений — всё это программируется из встроенного языка штатными объектами платформы. Таким образом, связка «ядро на C++ плюс встроенный язык» покрывает и внутреннюю логику, и большинство интеграционных задач без выхода в другие среды разработки.

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

Частые заблуждения о языке 1С

Распространено мнение, будто 1С «написана на самой себе» или что встроенный язык — это «диалект BASIC». Первая формулировка неверна: ядро — нативный код на C++, а встроенный язык — лишь один из компонентов, исполняемых ядром. Вторая — упрощение: синтаксис действительно напоминает BASIC по структуре операторов, но язык включает собственную объектную модель, систему типов и предметно-ориентированные механизмы (запросы, движения документов, регистры), которых в BASIC нет.

Ещё одно заблуждение — что для работы с 1С нужно знать C++ или SQL. Прикладному разработчику достаточно встроенного языка и языка запросов; знание SQL помогает при диагностике производительности, но не обязательно. C++ требуется только для разработки внешних компонентов или работы в команде самой платформы.

Типичные ошибки
01
Считать, что встроенный язык компилируется в exe — код исполняется интерпретатором платформы, и переносить его вне 1С нельзя
02
Писать массовые обработки циклами вместо запросов — интерпретатор медленнее оптимизатора СУБД, обработки выполняются в разы дольше
03
Править данные напрямую в СУБД — нарушается целостность базы и служебные механизмы платформы
04
Смешивать русский и английский синтаксис без необходимости — код становится трудно читать и сопровождать
Итог

Что важно запомнить

Ядро платформы 1С:Предприятие написано на C++, клиентские веб-части используют HTML/CSS/JavaScript, данные хранятся во внешних СУБД через SQL. Прикладные конфигурации пишутся на собственном встроенном языке с русским и английским синтаксисом, который исполняется платформой. Для 1С-разработчика основные языки — встроенный язык и язык запросов.

Часто задаваемые вопросы

1С написана на 1С?

Нет. Платформа (ядро) написана на C++ и поставляется в виде готовых исполняемых файлов. На встроенном языке 1С написаны только прикладные конфигурации, которые работают внутри платформы.

Можно ли писать для 1С на других языках?

Прикладную логику — только на встроенном языке. Другие языки допустимы для внешних компонентов (C++ по технологии Native API, COM-объекты) и для внешних систем, взаимодействующих с 1С через HTTP-сервисы, веб-сервисы или файловый обмен.

Нужно ли знать SQL разработчику 1С?

Для повседневной разработки достаточно языка запросов 1С — платформа сама транслирует его в SQL. Знание SQL полезно при разборе проблем производительности и чтении планов запросов на стороне СУБД, но не является обязательным.

Почему у встроенного языка русский синтаксис?

Это осознанное решение для снижения порога входа: бухгалтеры и аналитики без программистского бэкграунда легче читают код на родном языке. Английский вариант синтаксиса полностью эквивалентен и поддерживается параллельно.

Чем встроенный язык 1С отличается от Python или C#?

Главное отличие — предметная направленность: язык 1С «знает» о документах, регистрах и проведении из коробки, но не существует вне платформы. Python и C# — универсальные языки общего назначения с собственными средами исполнения и экосистемой библиотек.

Можно ли исполнить код 1С без платформы?

Нет. Встроенный язык не имеет отдельного компилятора или интерпретатора — он исполняется только ядром платформы 1С:Предприятие в контексте информационной базы и метаданных конфигурации.