Разработка и Конфигурация · 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С. Это интерпретируемый язык с динамической типизацией, исполняемый виртуальной машиной платформы. Исходный код модулей хранится внутри конфигурации и компилируется платформой в байт-код при сохранении.
Характерные черты языка: ключевые слова на русском (допустим и английский синтаксис), отсутствие явного объявления типов, встроенные объекты для работы с документами, справочниками, регистрами. Язык заточен под предметную область учёта, поэтому в нём нет низкоуровневых конструкций вроде указателей или ручного управления памятью.
Функция ПолучитьОстаток(Номенклатура)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Остатки.КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Ном) КАК Остатки";
Запрос.УстановитьПараметр("Ном", Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Возврат ?(Выборка.Следующий(), Выборка.КоличествоОстаток, 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С «написана на 1С». Встроенный язык исполняется платформой и не может существовать без неё: это язык прикладного слоя, а не язык реализации самой системы. Другое заблуждение — что знание C++ поможет «чинить платформу»: исходники закрыты, и низкоуровневые знания пригодятся только для внешних компонент.
Как проверить, что вы всё поняли правильно
Контрольные точки
В диспетчере задач видны 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.