Разработка и Конфигурация · 12 мин
На чём написана 1С: платформа, встроенный язык и технологии
Разбираем, на чём написана 1С: платформа на C++, встроенный язык, запросы, веб-клиент и расширения. Что нужно знать разработчику и администратору 1С.
Вопрос «на чём написана 1С» имеет два разных ответа в зависимости от того, что именно интересует. Сама технологическая платформа — исполняемые файлы сервера, клиентов и конфигуратора — написана преимущественно на C++ с использованием кроссплатформенных компонентов. А прикладные решения (конфигурации: «Бухгалтерия», «Управление торговлей», «Зарплата и управление персоналом») написаны на встроенном языке 1С, который разработчики иногда называют «языком 1С» или «1С:Предприятие script».
Это разделение важно понимать практически: доработка конфигурации не требует знания C++, а проблемы производительности платформы не решаются правкой встроенного кода. Ниже разберём устройство каждого слоя, какие технологии используются внутри, и что из этого реально нужно знать разработчику, внедренцу или администратору.
Из чего состоит система 1С: три уровня кода
Архитектурно 1С состоит из трёх различных слоёв, и на каждом используется свой «язык». Первый слой — технологическая платформа: исполняемые файлы, которые устанавливаются на сервер и рабочие места. Второй слой — конфигурация: метаданные (справочники, документы, регистры) и программный код на встроенном языке. Третий слой — данные, которые хранятся в файловой базе или в СУБД (MS SQL Server, PostgreSQL, Oracle, IBM DB2).
Когда пользователь запускает «1С:Бухгалтерию», он работает с конфигурацией, которая исполняется платформой, а платформа уже обращается к базе данных. Поэтому корректная формулировка звучит так: платформа написана на компилируемом языке (C++), а бизнес-логика — на интерпретируемом встроенном языке 1С, который платформа выполняет в своей среде.
Такое разделение сделано намеренно: фирма «1С» развивает платформу, а тысячи партнёров и штатных разработчиков пишут и дорабатывают прикладные решения, не имея доступа к исходному коду ядра и не перекомпилируя его.
Платформа: C++ и кроссплатформенность
Ядро платформы 1С:Предприятие реализовано на C++. Это подтверждается косвенно и прямо: дистрибутивы поставляются в виде скомпилированных бинарных файлов для Windows и Linux, а механизм внешних компонент по технологии Native API предполагает разработку именно на C++ с подключением заголовочных файлов от фирмы «1С».
Выбор C++ объясняется требованиями к производительности: платформа должна быстро исполнять встроенный язык, строить запросы к СУБД, отрисовывать интерфейс и обслуживать сотни одновременных соединений в клиент-серверном режиме. Кластер серверов 1С — это тоже нативные процессы (rphost, ragent, rmngr), написанные на компилируемом языке.
Кроссплатформенность достигается за счёт единой кодовой базы: один и тот же функционал собирается под Windows и Linux, а тонкий клиент существует также в версиях для macOS и мобильных ОС. Веб-клиент, работающий в браузере без установки платформы, использует стандартные веб-технологии — HTML, CSS и JavaScript, которые генерируются серверной частью.
Встроенный язык 1С: на чём пишут конфигурации
Весь прикладной код конфигураций — обработчики событий документов, расчётные алгоритмы, формирование отчётов — написан на встроенном языке 1С. Его характерная особенность — двуязычный синтаксис: одни и те же конструкции можно писать по-русски («Если ... Тогда ... КонецЕсли») или по-английски («If ... Then ... EndIf»), и платформа одинаково исполнит оба варианта.
Язык интерпретируемый, с динамической типизацией и автоматическим управлением памятью. Он ориентирован на бизнес-задачи: в нём есть встроенные типы для работы с документами, справочниками, регистрами, датами и периодами, но нет низкоуровневых операций с памятью или указателями. Это снижает порог входа, но ограничивает применимость языка за пределами платформы — код на нём не исполняется ничем, кроме 1С.
Код размещается в модулях: модулях объектов, форм, общих модулях, модулях менеджеров. Платформа делит контекст исполнения на клиентский и серверный, и разработчик явно указывает директивами, где должен выполняться код. Это одна из первых сложностей для новичков: процедура, помеченная как серверная, недоступна на клиенте и наоборот.
Язык запросов 1С и его связь с SQL
Отдельный компонент — язык запросов 1С. Синтаксически он напоминает SQL: конструкции «ВЫБРАТЬ ... ИЗ ... ГДЕ» соответствуют SELECT ... FROM ... WHERE. Но это не SQL: запрос оперирует объектами метаданных (документами, регистрами), а не физическими таблицами, и поддерживает специфические возможности — виртуальные таблицы, итоги, иерархию, разделители данных.
Платформа транслирует запрос 1С в SQL конкретной СУБД — MS SQL Server, PostgreSQL, Oracle или DB2. Поэтому один и тот же запрос работает на любой поддерживаемой базе, но его фактический план выполнения зависит от того, какой SQL сгенерировала платформа. При проблемах с производительностью администраторы смотрят именно транслированный SQL через технологический журнал или средства СУБД.
Если запрос в 1С работает медленно, полезно получить текст SQL, который платформа отправила в СУБД. Часто выясняется, что соединение таблиц или условие на виртуальную таблицу порождает неоптимальный план, и переписывать нужно именно запрос 1С, а не настраивать сервер баз данных.
Веб-клиент, мобильная платформа и расширения
Веб-клиент 1С работает в браузере и использует JavaScript, HTML и CSS. Разработчик конфигурации при этом пишет тот же встроенный язык — платформа сама преобразует логику форм в браузерное представление. Прямое программирование на JavaScript внутри конфигурации не предусмотрено, за исключением полей HTML-документа, где можно разместить произвольную веб-страницу.
Мобильная платформа — отдельная сборка под Android и iOS. Прикладной код для неё также пишется на встроенном языке 1С с ограничениями: доступен урезанный набор объектов и интерфейсных возможностей. Сборка мобильного приложения выполняется через специальный сборщик, а не через стандартные IDE этих платформ.
Для задач, которых встроенный язык не покрывает — работа с оборудованием, специфическая криптография, интеграция с нативными библиотеками — существуют внешние компоненты. Их разрабатывают на C++ по технологии Native API, либо используют COM-объекты и .NET-сборки на Windows. Также популярна интеграция через HTTP-сервисы: 1С может и публиковать REST-подобные сервисы, и вызывать внешние API.
Чем дорабатывать 1С под задачу
Основной способ: доработка конфигурации или расширение. Подходит для любой бизнес-логики, не требует внешних инструментов.
Доработка без изменения типовой конфигурации. Подходит для обновляемых типовых решений, но имеет ограничения по изменяемым объектам.
Для работы с оборудованием и нативными библиотеками. Требует навыков C++ и сборки под все целевые ОС.
Интеграция со сторонними системами на любом языке — Python, C#, Java. Логика живёт вне 1С, обмен идёт по сети.
Что это значит для разработчика: какие языки учить
Для профессии «разработчик 1С» обязателен только встроенный язык и язык запросов. Знание C++ не требуется — исходники платформы закрыты, и дорабатывать её нельзя. Однако общее понимание программирования (циклы, рекурсия, сложность алгоритмов) переносится напрямую, поскольку встроенный язык — полноценный императивный язык с процедурами, функциями и структурами данных.
Полезные смежные навыки: SQL — для анализа производительности и прямых выгрузок; JavaScript и HTML — для нестандартных интерфейсных решений через поля HTML-документа; основы C# или C++ — если планируется разработка внешних компонент. Для интеграций важны HTTP, JSON и XML: типовые механизмы обмена строятся именно на них.
Отдельно стоит упомянуть EDT (1C:Enterprise Development Tools) — среду разработки на базе Eclipse. Сама среда написана на Java, но язык разработки в ней тот же встроенный язык 1С; Java здесь — лишь технология среды, а не инструмент прикладного программиста.
Какой язык изучать под вашу задачу
Частые заблуждения о технологиях 1С
Первое распространённое заблуждение — «1С написана на 1С». Встроенный язык — это язык прикладного уровня; сама среда исполнения реализована на C++, и путаница приводит к неверным ожиданиям: например, к попыткам «исправить платформу» кодом конфигурации.
Второе заблуждение — что язык запросов 1С и есть SQL. На практике между ними стоит транслятор платформы, и приёмы оптимизации из «чистого» SQL (хинты, прямые обращения к таблицам) в запросах 1С недоступны. Третье — что для 1С нужен «настоящий» язык вроде Python или Java: вся типовая и заказная бизнес-логика пишется встроенными средствами, а внешние языки нужны только для интеграций и компонентов.
Как проверить устройство конкретной системы самостоятельно
Если нужно понять, из чего состоит конкретная работающая система, начните с пункта меню «О программе»: там указаны версия платформы и версия конфигурации. Режим работы (файловый или клиент-серверный) виден в строке подключения информационной базы. Для клиент-серверного варианта тип СУБД определяется настройками кластера или косвенно — по службам на сервере баз данных.
Список подключённых внешних компонент и расширений смотрите в конфигураторе или в разделе администрирования типовой конфигурации. Это даст полную картину: какая платформа исполняет какую конфигурацию, какие расширения и компоненты добавлены сверху и какая СУБД хранит данные.
Как проверить состав системы
Указаны в окне 'О программе', платформа поддерживается вендором
Платформа давно не обновлялась, есть известные исправленные ошибки
Файловый для небольшой базы или клиент-серверный при многопользовательской нагрузке
Файловая база при десятках активных пользователей — риск блокировок
Список известен, источники понятны, обновления контролируются
Неизвестные расширения без документации и ответственного
Частые вопросы
1С — это язык программирования или программа?
И то, и другое. «1С:Предприятие» — это технологическая платформа (программный комплекс), а встроенный язык 1С — язык, на котором пишут прикладные конфигурации для этой платформы. Вне платформы код на встроенном языке не исполняется.
Правда ли, что платформа 1С написана на C++?
Да, ядро платформы реализовано на C++ и поставляется в виде скомпилированных бинарных файлов под Windows и Linux. Исходный код закрыт, поэтому детали реализации известны по документации и интерфейсам внешних компонент Native API.
Почему в 1С русский синтаксис — это отдельный язык?
Нет, это один язык с двумя вариантами лексики. Русские и английские ключевые слова взаимозаменяемы, платформа одинаково компилирует оба варианта, и в одном модуле их можно смешивать, хотя на практике так делать не принято.
Можно ли писать для 1С на Python или C#?
Напрямую внутри конфигурации — нет, только на встроенном языке. Но внешние системы на любом языке могут обмениваться данными с 1С через HTTP-сервисы, а на Windows доступно подключение COM-объектов, что позволяет вызывать код на других языках извне.
Чем язык запросов 1С отличается от SQL?
Запрос 1С оперирует объектами метаданных, а не физическими таблицами, и платформа транслирует его в SQL конкретной СУБД. Поэтому один запрос работает на разных базах, но SQL-специфичные приёмы (хинты, прямой доступ к таблицам) в нём недоступны.
Нужно ли знать C++, чтобы стать разработчиком 1С?
Нет. Для доработки конфигураций достаточно встроенного языка и языка запросов. C++ понадобится только для разработки внешних компонент по Native API, что является узкой и необязательной специализацией.
Что важно запомнить
Платформа 1С написана на C++ и закрыта для изменений, а прикладные конфигурации пишутся на встроенном языке с русским или английским синтаксисом. Для работы с данными используется собственный язык запросов, транслируемый в SQL. Разработчику 1С достаточно встроенного языка и запросов; C++, JavaScript и другие языки нужны лишь для компонентов и интеграций.