Разработка и Конфигурация · 9 мин
На чём написана 1С: языки платформы, конфигураций и расширений
Разбираемся, на чём написана 1С: язык платформы, встроенный язык конфигураций, роль C++, SQL и внешних компонентов. Практические ответы для разработчиков.
Вопрос «на чём написана 1С» имеет два разных ответа, потому что под «1С» обычно понимают либо саму технологическую платформу, либо прикладные конфигурации — «Бухгалтерию», «Управление торговлей», «Зарплату и управление персоналом». Это разные слои, созданные на разных языках и разными инструментами.
Платформа «1С:Предприятие» — это исполняемый код: сервер приложений, клиентские приложения, конфигуратор. Прикладная конфигурация — это метаданные и программный код, которые платформа интерпретирует и исполняет. Пользователь, работающий в «1С:Бухгалтерии», видит результат совместной работы обоих слоёв.
Ниже разберём, какие языки и технологии стоят за каждым слоем, что нужно знать разработчику, чтобы писать код внутри 1С, и как подключаются внешние компоненты на других языках.
На каком языке написана сама платформа 1С
Ядро платформы «1С:Предприятие» реализовано на C++. Это касается сервера приложений, толстого и тонкого клиентов, веб-клиента и конфигуратора. Выбор компилируемого языка объясняется требованиями к производительности: платформа обслуживает одновременную работу сотен и тысяч пользователей, выполняет проведение документов, построение отчётов и транзакционную запись в базу данных.
Фирма «1С» не публикует исходный код платформы, поэтому точное распределение по языкам внутри не раскрывается. Однако из технологической документации, интерфейсов разработки внешних компонентов и публичных выступлений разработчиков платформы известно, что основной язык — C++, а отдельные части (например, веб-клиент) используют JavaScript и связанные веб-технологии.
Важно понимать: код платформы недоступен для изменения. Разработчик в 1С никогда не правит ядро — он работает только с прикладным слоем через конфигуратор. Если поведение платформы не устраивает, применяют обходные приёмы на встроенном языке или внешние компоненты.
Встроенный язык 1С: на чём пишутся конфигурации
Прикладные решения — «1С:Бухгалтерия», «1С:Управление торговлей», «1С:ERP» и другие — написаны на встроенном языке 1С. Это предметно-ориентированный язык, заточенный под описание бизнес-логики: проведение документов, расчёт зарплаты, формирование отчётов. Синтаксис существует в двух вариантах — русском и английском, причём их можно смешивать в одном модуле, хотя на практике этого лучше не делать.
Язык 1С — интерпретируемый и динамически типизированный. Код не компилируется в машинные инструкции напрямую: платформа преобразует его во внутренний байт-код и исполняет. Поэтому синтаксические ошибки часто обнаруживаются только при обращении к конкретному модулю, а не при сохранении конфигурации.
Типичный фрагмент кода выглядит так:
Функция РассчитатьСуммуДокумента(ДокументСсылка) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(Товары.Сумма) КАК ИтоговаяСумма
|ИЗ
| Документ.РеализацияТоваров.Товары КАК Товары
|ГДЕ
| Товары.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Результат = Запрос.Выполнить().Выбрать();
Возврат ?(Результат.Следующий(), Результат.ИтоговаяСумма, 0);
КонецФункции
Обратите внимание: внутри кода встречается запрос на отдельном языке — это язык запросов 1С, синтаксически похожий на SQL, но работающий с объектами конфигурации (документами, справочниками, регистрами), а не с физическими таблицами базы данных.
Роль SQL и СУБД в работе 1С
Файловый вариант базы 1С использует собственный формат хранения, но в клиент-серверном режиме данные размещаются во внешней СУБД: Microsoft SQL Server, PostgreSQL (в том числе адаптированные сборки), Oracle Database или IBM DB2. Платформа сама формирует SQL-запросы к этим базам — разработчик не пишет чистый SQL в типовых сценариях.
Прямое обращение к таблицам СУБД в обход платформы — частая причина повреждения данных. Структура таблиц в базе не документирована и может меняться между релизами платформы; кроме того, платформа кэширует данные и ведёт служебные регистры, поэтому внешняя вставка записей нарушает целостность.
Для чтения данных извне (например, для аналитики) безопаснее использовать типовые механизмы: HTTP-сервисы, OData-интерфейс, планы обмена или выгрузку в промежуточную базу, над которой уже можно выполнять произвольный SQL.
Внешние компоненты: когда встроенного языка не хватает
Если задачу нельзя решить встроенным языком — например, нужна работа с оборудованием, криптография, сложная математика или интеграция со специфическим протоколом, — применяют внешние компоненты по технологии Native API или COM. Их пишут на C++, C#, Java и других языках, подключают к конфигурации и вызывают из кода 1С как обычные объекты.
Кроме того, платформа поддерживает интеграцию через веб-сервисы (SOAP и HTTP/REST), что позволяет выносить любую логику во внешние приложения на любом языке — Python, Go, PHP — и обращаться к ним из 1С по сети. Это самый гибкий и безопасный способ расширения, потому что внешний сервис не влияет на стабильность сервера 1С.
Способы расширить возможности 1С
Подходит для всей бизнес-логики. Ограничение: нет прямого доступа к ОС, оборудованию и низкоуровневым API.
Для работы с оборудованием и сложных вычислений. Ограничение: нужна сборка под каждую платформу, риск падения сервера при ошибке в компоненте.
Для интеграций и тяжёлой логики на любом языке. Ограничение: требуется отдельная инфраструктура и контроль доступности сервиса.
Что нужно знать, чтобы программировать в 1С
Для прикладной разработки достаточно встроенного языка и языка запросов 1С. Знание C++ не требуется — исходный код платформы всё равно закрыт. Базовый набор разработчика выглядит так:
- встроенный язык 1С (русский или английский синтаксис);
- язык запросов 1С и конструктор запросов;
- объектная модель конфигурации: документы, справочники, регистры, отчёты;
- система компоновки данных (СКД) для отчётов;
- основы работы СУБД и понимание транзакций — для клиент-серверных внедрений.
Дополнительно полезны: JavaScript и HTML — для веб-клиента и публикации интерфейсов; SQL — для диагностики проблем производительности на уровне СУБД; один из языков общего назначения (C#, Python) — для интеграций и внешних обработок данных.
- 1Откройте конфигуратор и найдите интересующий объект — это встроенный язык 1С.
- 2Если логика вызывается через ПодключитьВнешнююКомпоненту — это внешняя компонента на C++ или .NET.
- 3Если код обращается к HTTPСоединение или WSПрокси — логика вынесена во внешний сервис, язык которого определяется на стороне сервиса.
- 4Проверьте, нет ли прямых обращений к СУБД — их наличие говорит о рискованной доработке вне платформы.
Частые заблуждения о языках 1С
Распространённое заблуждение — что «1С написана на 1С». На встроенном языке написаны только прикладные конфигурации; платформа, которая этот код исполняет, создана на C++ и поставляется в готовом виде. Другое заблуждение — что для работы с 1С нужно знать SQL: платформа сама генерирует запросы к СУБД, а разработчик использует язык запросов 1С, который лишь похож на SQL.
Также неверно считать встроенный язык «неправильным русским программированием»: двуязычный синтаксис — осознанное решение для предметной области, а сам язык полноценен в рамках своих задач, хотя и не является языком общего назначения.
Что важно запомнить
Платформа 1С написана на C++ и закрыта для изменений. Конфигурации пишутся на встроенном языке 1С с запросами на языке, похожем на SQL. Данные хранятся в СУБД (MS SQL, PostgreSQL и др.), но править их нужно только через платформу. Для нестандартных задач используют внешние компоненты (C++, .NET, Java) или интеграцию через веб-сервисы на любом языке.
Частые вопросы
1С — это язык программирования или программа?
И то, и другое. «1С:Предприятие» — это платформа (программный комплекс), а внутри неё есть собственный встроенный язык, на котором пишут прикладные конфигурации. Когда говорят «программист 1С», имеют в виду разработчика на встроенном языке платформы.
Нужно ли знать C++, чтобы работать программистом 1С?
Нет. Исходный код платформы закрыт, и прикладной разработчик с ним не работает. Достаточно встроенного языка 1С и языка запросов. C++ понадобится только если вы решите создавать внешние компоненты по технологии Native API.
Почему в 1С русский синтаксис, а не английский?
Язык создавался для предметной области учёта, где работают бухгалтеры и экономисты без программистского бэкграунда. Русские ключевые слова снижают порог входа. Английский синтаксис тоже поддерживается полностью, и типовые механизмы платформы работают с обоими вариантами.
Можно ли писать для 1С на Python или C#?
Напрямую внутри конфигурации — нет, только на встроенном языке. Но можно создать внешний сервис на Python, C# или любом другом языке и вызывать его из 1С через HTTP, либо оформить функциональность как внешнюю компоненту (для .NET — через COM-технологии).
Какой SQL используется в 1С?
Разработчик пишет запросы на языке запросов 1С — он похож на SQL, но оперирует объектами конфигурации. Платформа сама транслирует их в диалект конкретной СУБД: Microsoft SQL Server, PostgreSQL, Oracle или DB2. Чистый SQL внутри конфигурации не используется.
Можно ли посмотреть исходный код платформы 1С?
Нет, платформа распространяется в скомпилированном виде, исходники закрыты. Доступен для просмотра и изменения только код конфигураций — и то типовые конфигурации могут поставляться с закрытыми модулями, защищёнными паролем или поставкой без исходных текстов.