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

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

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

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

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

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

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

Из чего состоит технологический стек 1С

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

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

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

Закрытый исходный код, поставляется в виде скомпилированных дистрибутивов

КонфигурацииВстроенный язык 1С

Открытый код модулей, редактируется в Конфигураторе

Внешние компонентыC++, C#, Java

Подключаются по технологии Native API или COM

ИнтеграцииHTTP, REST, SOAP, OData

Платформа сама генерирует стандартные интерфейсы обмена

На каком языке написано ядро платформы

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

Отдельные части экосистемы используют другие технологии. Веб-клиент работает в браузере и опирается на JavaScript и HTML. Механизмы публикации на веб-сервере используют расширения для Apache и IIS. Однако конечному разработчику конфигураций эти детали недоступны и не нужны: платформа для него — это «чёрный ящик» с документированным API.

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

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

Язык не требует явного объявления типов переменных, поддерживает работу с объектами метаданных (документы, справочники, регистры), запросы на собственном языке запросов, похожем на SQL, и событийную модель. Код размещается в модулях: общих модулях, модулях объектов, форм, менеджеров. Платформа компилирует его в байт-код при сохранении конфигурации, поэтому синтаксические ошибки обнаруживаются до запуска.

Пример простого фрагмента на встроенном языке:

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

Где пишут код: среда разработки Конфигуратор

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

Альтернатива — 1C:Enterprise Development Tools (EDT), среда на базе Eclipse. Она ориентирована на командную разработку, поддерживает Git, статический анализ кода и более удобна для больших проектов. Код в EDT тот же самый — встроенный язык 1С, меняется только инструментарий.

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

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

Подходит для большинства задач, идёт в поставке платформы; ограничение — слабая поддержка командной работы и контроля версий

1C:EDT

Подходит для крупных проектов и команд с Git; требует отдельной установки и привыкания к интерфейсу Eclipse

Внешние редакторы (VS Code с плагинами)

Подходит для просмотра и подсветки синтаксиса bsl; полноценная компиляция и отладка недоступны

Внешние компоненты: когда одного встроенного языка мало

Когда возможностей встроенного языка не хватает — например, для работы со сканером штрих-кодов, специфического оборудования или сложных вычислений — используют внешние компоненты. Их пишут на C++ по технологии Native API, на C# или других .NET-языках через COM, а для мобильных и кроссплатформенных сценариев — на Java.

Компонента подключается к конфигурации и вызывается из кода на встроенном языке как обычный объект. Такой подход позволяет сочетать скорость разработки бизнес-логики на языке 1С с производительностью компилируемых языков в узких местах.

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

Что выбрать для задачи

Нужно автоматизировать учёт, документы, отчётыИспользуйте встроенный язык 1С в Конфигураторе — этого достаточно для подавляющего большинства задач
Нужна работа с оборудованием или низкоуровневые функции ОСРазработайте внешнюю компоненту на C++ (Native API) или C# (COM)
Нужна интеграция с внешними системамиИспользуйте встроенные механизмы HTTP, REST, OData и веб-сервисы платформы
Нужна командная разработка с контролем версийПереведите проект на 1C:EDT и Git

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

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

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

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

Что нужно знать, чтобы начать писать для 1С

Для старта достаточно установить учебную версию платформы и открыть Конфигуратор. Базовый путь: изучить структуру метаданных, освоить встроенный язык и язык запросов, научиться пользоваться отладчиком. Знание C++ или C# не требуется — оно понадобится только для узких задач с внешними компонентами.

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

FAQ

1С написана на C++ — значит ли это, что для работы с ней нужно знать C++?

Нет. Знание C++ нужно только разработчикам ядра платформы внутри фирмы «1С» и тем, кто пишет внешние компоненты. Прикладной разработчик работает со встроенным языком 1С, который изучается самостоятельно и не требует опыта системного программирования.

Почему в 1С русский язык программирования, а не английский?

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

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

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

На чём писать, если нужно подключить сканер штрих-кодов или ККТ?

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

Чем язык запросов 1С отличается от SQL?

Язык запросов 1С похож на SQL синтаксически, но работает с объектами метаданных (справочники, регистры), а не с физическими таблицами СУБД. Платформа сама транслирует запрос в диалект используемой базы данных — MS SQL, PostgreSQL, Oracle или IBM Db2.

Подходит ли 1С-разработка как первый язык программирования?

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

Итог

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

Ядро платформы 1С написано на C++ и закрыто, а прикладные решения создаются на встроенном языке 1С в Конфигураторе или 1C:EDT. Для типовых задач учёта встроенного языка достаточно; C++ и C# нужны только для внешних компонент и работы с оборудованием.