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

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

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

Разбираем, на каких языках написана платформа 1С:Предприятие: C++, встроенный язык 1С, SQL-запросы, веб-технологии и их роль в работе системы.

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

Третий слой — обращение к базам данных. Платформа не хранит данные сама (кроме файлового варианта), а транслирует запросы в SQL для Microsoft SQL Server, PostgreSQL, Oracle Database или IBM DB2. Поэтому в экосистеме 1С одновременно существуют как минимум три языка: C++ ядра, встроенный язык конфигураций и SQL-диалект запросов, плюс язык запросов 1С как надстройка над SQL.

Для веб-клиента и мобильной платформы добавляются стандартные веб-технологии: HTML, CSS, JavaScript на стороне браузера, HTTP/HTTPS и REST/OData-интерфейсы для интеграций. Понимание этого «слоёного пирога» важно практически: от него зависит, какие навыки нужны разработчику, где искать узкие места производительности и как безопасно дорабатывать систему.

Ядро платформы: C++ и нативный код

Исполняемые файлы сервера 1С (ragent, rmngr, rphost), толстый и тонкий клиенты, конфигуратор — это скомпилированные нативные приложения. Основной язык их разработки — C++, что типично для высоконагруженных систем, где критичны скорость работы с памятью, многопоточность и кроссплатформенность (Windows и Linux). Прямого доступа к исходному коду ядра у пользователей нет: платформа распространяется в бинарном виде.

Для расширения функциональности ядра предусмотрен механизм внешних компонентов по технологии Native API или COM. Внешнюю компоненту можно написать на C++ (Native API) или на любом языке, поддерживающем COM (C#, Delphi и другие). Это официальный способ «достучаться» до низкоуровневых возможностей: работа с оборудованием, специфическими протоколами, шифрованием.

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

Встроенный язык 1С: на чём пишут конфигурации

Прикладная логика всех типовых конфигураций — «Управление торговлей», «Зарплата и управление персоналом», «Бухгалтерия предприятия» — написана на встроенном языке 1С. Это интерпретируемый язык с динамической типизацией, исполняемый виртуальной машиной платформы. Исходный код модулей хранится внутри конфигурации и компилируется платформой в байт-код при сохранении.

Характерные черты языка: ключевые слова на русском (допустим и английский синтаксис), отсутствие явного объявления типов, встроенные объекты для работы с документами, справочниками, регистрами. Язык заточен под предметную область учёта, поэтому в нём нет низкоуровневых конструкций вроде указателей или ручного управления памятью.

bsl
Функция ПолучитьОстаток(Номенклатура)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ Остатки.КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Ном) КАК Остатки";
    Запрос.УстановитьПараметр("Ном", Номенклатура);
    Выборка = Запрос.Выполнить().Выбрать();
    Возврат ?(Выборка.Следующий(), Выборка.КоличествоОстаток, 0);
КонецФункции

Производительность встроенного языка ниже, чем у компилируемых языков, — это плата за удобство. Тяжёлые циклы по большим массивам данных следует выносить в запросы к СУБД, а не обрабатывать построчно в коде. Это одна из главных причин «тормозов» самописных доработок.

Язык запросов 1С и SQL: где реально лежат данные

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

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

СлойЯзык/технологияКто с ним работает
Ядро платформыC++Разработчики фирмы «1С»
КонфигурацииВстроенный язык 1С1С-разработчики, внедренцы
Запросы к даннымЯзык запросов 1С → SQLРазработчики, администраторы БД
Веб-клиентHTML, CSS, JavaScriptПлатформа генерирует автоматически
ИнтеграцииHTTP, REST, OData, SOAP, XML/JSONРазработчики интеграций
Расширения ядраC++ (Native API), COM-языкиРазработчики компонент

Веб-клиент, мобильная платформа и интерфейсные технологии

Веб-клиент 1С позволяет работать с конфигурацией через браузер без установки платформы. Интерфейс при этом генерируется платформой автоматически из описания форм в конфигурации: разработчик не пишет HTML вручную, а платформа сама преобразует декларативное описание формы в HTML/CSS/JavaScript на стороне браузера.

Мобильная платформа — отдельная сборка ядра для Android и iOS, поверх которой работают мобильные конфигурации, написанные на том же встроенном языке 1С с ограниченным составом объектов. Сборка мобильного приложения выполняется через специальную сборщицу, итоговое приложение — нативное для целевой ОС.

Для кастомных интерфейсов (личные кабинеты, виджеты) доступны поля HTML-документа, внутри которых можно выполнять произвольный JavaScript и взаимодействовать с кодом 1С через механизм оповещений. Это компромисс: полная свобода верстки есть, но отладка такой связки сложнее обычных форм.

Сервера, протоколы и интеграционные технологии

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

Для интеграций платформа предоставляет: автоматический REST-интерфейс по протоколу OData (публикация через веб-сервер Apache или IIS), HTTP-сервисы и веб-сервисы (SOAP), которые разработчик описывает в конфигурации, а также механизмы обмена через XML и JSON. Внешние системы могут читать и писать данные 1С без установки платформы — достаточно HTTP-клиента.

Какие навыки нужны под разные задачи

Типовая доработка конфигурации — только встроенный язык 1С и язык запросов. Оптимизация производительности добавляет к этому чтение планов запросов и понимание индексов конкретной СУБД. Интеграция с внешними системами требует знания HTTP, JSON/XML и принципов REST.

Задачи уровня «написать драйвер для нестандартного оборудования» или «ускорить криптографическую операцию» — это уже C++ и Native API, таких задач в обычном внедрении немного. Выбирать обучение стоит от целевой роли, а не от «языка платформы» в абстрактном смысле.

Маршрут решения

Как выбрать направление

Нужно дорабатывать типовые конфигурацииИзучайте встроенный язык 1С, язык запросов и механизм расширений
Нужно ускорить медленные отчёты и проведение документовИзучайте SQL, планы запросов и индексы вашей СУБД
Нужна интеграция с сайтом или внешней системойИзучайте HTTP-сервисы, OData и форматы JSON/XML
Нужна работа с оборудованием или низкоуровневые функцииИзучайте C++ и технологию Native API внешних компонент

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

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

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

Как проверить, что вы всё поняли правильно

Контрольные точки

Контрольные точки

Состав процессов сервера 1С
Норма

В диспетчере задач видны ragent, rmngr, rphost — нативные процессы

Тревожный признак

Ожидание увидеть java или dotnet-процессы как ядро сервера

Язык модуля в конфигураторе
Норма

Код на встроенном языке 1С, компилируется платформой

Тревожный признак

Попытка вставить C# или Python напрямую в модуль

Хранение данных в клиент-сервере
Норма

Данные в таблицах MS SQL/PostgreSQL, доступ через платформу

Тревожный признак

Попытка найти файлы данных в каталоге сервера 1С

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

Итог

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

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

Частые вопросы

Можно ли писать для 1С на Python, C# или Java?

Напрямую в модулях конфигурации — нет, только на встроенном языке 1С. Но внешние компоненты по COM-технологии можно создавать на C#, а взаимодействие с 1С из Python, Java и других языков возможно через HTTP-сервисы, OData или COM-соединение.

Почему фирма «1С» выбрала C++ для ядра, а не managed-язык?

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

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

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

Чем EDT отличается от конфигуратора и на чём написан?

EDT — среда разработки на базе Eclipse (написана на Java), ориентированная на командную разработку с Git и хранение конфигурации в виде файлов проекта. Конфигуратор — встроенный инструмент платформы. Язык разработки конфигураций в обоих случаях один — встроенный язык 1С.

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

Нет, исходный код ядра закрыт и распространяется только в скомпилированном виде. Доступны исходники прикладного слоя: модули типовых конфигураций открыты для просмотра в конфигураторе, если конфигурация не поставляется в закрытом виде.

На чём писать мобильное приложение для 1С?

На встроенном языке 1С в рамках мобильной платформы — платформа сама соберёт нативное приложение для Android или iOS. Альтернатива — обычное мобильное приложение на Kotlin/Swift, которое обменивается данными с сервером 1С через HTTP-сервисы или OData.