Разработка и Конфигурация · 9 мин
На какой программе написана 1С: язык платформы и конфигураций
Разбираемся, на каком языке написана платформа 1С:Предприятие, чем отличается код платформы от кода конфигураций и что нужно знать разработчику 1С.
Вопрос «на какой программе написана 1С» обычно означает одно из двух: на каком языке программирования написано само ядро платформы 1С:Предприятие и на каком языке пишут прикладные решения — конфигурации вроде «1С:Бухгалтерии» или «1С:Управление торговлей». Это разные уровни, и ответы на них различаются.
Ядро платформы 1С:Предприятие разработано компанией «1С» преимущественно на языке C++. Именно этот код обеспечивает работу сервера приложений, клиентских приложений, механизмов СУБД-взаимодействия, веб-клиента и мобильной платформы. Исходный код ядра закрыт и доступен только внутри фирмы «1С» — партнёрам и разработчикам он не поставляется.
Прикладные решения — конфигурации — написаны не на C++, а на встроенном языке 1С, который часто называют «язык 1С», «1С-скрипт» или по аналогии с архитектурой — языком объектной модели платформы. Это высокоуровневый предметно-ориентированный язык с русскоязычным синтаксисом, интерпретируемый платформой во время выполнения.
Из чего состоит технологический стек 1С
Система 1С:Предприятие — это многослойная конструкция, и «язык написания» зависит от того, о каком слое идёт речь. Нижний слой — исполняемые модули платформы: сервер 1С, толстый и тонкий клиенты, веб-клиент, мобильная платформа. Этот слой написан на C++ и компилируется в машинный код под Windows, Linux и мобильные ОС.
Средний слой — метаданные конфигурации: структура справочников, документов, регистров, отчётов. Они описываются декларативно в Конфигураторе и хранятся в базе данных. Верхний слой — программный код модулей на встроенном языке 1С, который платформа компилирует в промежуточный байт-код и исполняет.
Закрытый исходный код, поставляется в виде скомпилированных дистрибутивов
Открытый код модулей, редактируется в Конфигураторе
Подключаются по технологии Native API или COM
Платформа сама генерирует стандартные интерфейсы обмена
На каком языке написано ядро платформы
Фирма «1С» официально не публикует подробную карту языков ядра, но из технологической документации, вакансий разработчиков платформы и выступлений на конференциях известно, что основная часть ядра написана на C++. Выбор объясним: платформе требуется высокая производительность при работе с большими объёмами данных, кроссплатформенность и низкоуровневый контроль памяти — всё это традиционные сильные стороны C++.
Отдельные части экосистемы используют другие технологии. Веб-клиент работает в браузере и опирается на JavaScript и HTML. Механизмы публикации на веб-сервере используют расширения для Apache и IIS. Однако конечному разработчику конфигураций эти детали недоступны и не нужны: платформа для него — это «чёрный ящик» с документированным API.
Встроенный язык 1С: на чём пишут конфигурации
Встроенный язык 1С — предметно-ориентированный язык, созданный специально для описания бизнес-логики учётных систем. Его ключевая особенность — двуязычный синтаксис: ключевые слова и встроенные функции доступны на русском и английском языках, причём варианты можно смешивать в одном модуле. На практике в типовых конфигурациях используется русский синтаксис.
Язык не требует явного объявления типов переменных, поддерживает работу с объектами метаданных (документы, справочники, регистры), запросы на собственном языке запросов, похожем на SQL, и событийную модель. Код размещается в модулях: общих модулях, модулях объектов, форм, менеджеров. Платформа компилирует его в байт-код при сохранении конфигурации, поэтому синтаксические ошибки обнаруживаются до запуска.
Пример простого фрагмента на встроенном языке:
Функция ПолучитьОстатокТовара(Номенклатура)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ СУММА(Остатки.Количество) КАК Остаток
|ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Товар) КАК Остатки";
Запрос.УстановитьПараметр("Товар", Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Остаток;
Иначе
Возврат 0;
КонецЕсли;
КонецФункцииГде пишут код: среда разработки Конфигуратор
Основной инструмент разработчика — Конфигуратор, входящий в поставку платформы. В нём редактируют дерево метаданных, пишут код модулей, проектируют формы, макеты печатных документов и обновляют конфигурацию базы данных. Для запуска достаточно открыть базу в режиме «Конфигуратор» из стартера 1С.
Альтернатива — 1C:Enterprise Development Tools (EDT), среда на базе Eclipse. Она ориентирована на командную разработку, поддерживает Git, статический анализ кода и более удобна для больших проектов. Код в EDT тот же самый — встроенный язык 1С, меняется только инструментарий.
Инструменты разработки 1С
Подходит для большинства задач, идёт в поставке платформы; ограничение — слабая поддержка командной работы и контроля версий
Подходит для крупных проектов и команд с Git; требует отдельной установки и привыкания к интерфейсу Eclipse
Подходит для просмотра и подсветки синтаксиса bsl; полноценная компиляция и отладка недоступны
Внешние компоненты: когда одного встроенного языка мало
Когда возможностей встроенного языка не хватает — например, для работы со сканером штрих-кодов, специфического оборудования или сложных вычислений — используют внешние компоненты. Их пишут на C++ по технологии Native API, на C# или других .NET-языках через COM, а для мобильных и кроссплатформенных сценариев — на Java.
Компонента подключается к конфигурации и вызывается из кода на встроенном языке как обычный объект. Такой подход позволяет сочетать скорость разработки бизнес-логики на языке 1С с производительностью компилируемых языков в узких местах.
Что выбрать для задачи
Частые заблуждения о технологиях 1С
Распространено мнение, что 1С написана «на самой себе» или что конфигурации пишутся на C++. Это неверно: прикладной разработчик никогда не сталкивается с C++ при доработке типовых решений. Обратное заблуждение — что встроенный язык «ненастоящий». На деле это полноценный язык с компиляцией в байт-код, отладчиком, замерами производительности и собственной экосистемой.
Ещё одна ошибка — пытаться править типовую конфигурацию напрямую вместо использования механизма расширений. Расширения позволяют менять поведение типового решения без снятия его с поддержки, что критично для последующих обновлений.
Что нужно знать, чтобы начать писать для 1С
Для старта достаточно установить учебную версию платформы и открыть Конфигуратор. Базовый путь: изучить структуру метаданных, освоить встроенный язык и язык запросов, научиться пользоваться отладчиком. Знание C++ или C# не требуется — оно понадобится только для узких задач с внешними компонентами.
- 1Установите платформу и откройте демонстрационную базу в Конфигураторе
- 2Изучите дерево конфигурации: справочники, документы, регистры, отчёты
- 3Напишите первый обработчик в модуле формы или общем модуле на встроенном языке
- 4Освойте язык запросов и консоль запросов для проверки выборок
- 5Научитесь пользоваться отладчиком: точки останова, просмотр переменных, стек вызовов
- 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# нужны только для внешних компонент и работы с оборудованием.