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

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

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

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

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

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

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

Из чего состоит система 1С и почему важно различать слои

Архитектура «1С:Предприятия» трехуровневая: клиентское приложение (толстый, тонкий или веб-клиент), сервер 1С (или файловый режим для небольших баз) и система управления базами данных. Каждый уровень реализован своими средствами, поэтому ответ на вопрос о языке зависит от того, о каком слое идет речь.

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

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

Исполняемый код платформы — сервер приложений, клиентские программы, компоненты доступа к данным — написан преимущественно на C++. Это объясняет требования к производительности: платформа обрабатывает запросы сотен одновременных пользователей, компилирует модули встроенного языка в промежуточный код и управляет транзакциями.

Исходный код платформы закрыт: фирма «1С» не публикует его, и доработать ядро обычным способом нельзя. Расширить возможности платформы можно только через документированные механизмы: внешние компоненты по технологии Native API или COM, расширения конфигурации и внешние обработки.

Для разработчиков внешних компонент доступен C++ (Native API), а также возможна интеграция через COM-объекты на Windows. Это путь для задач, которых нет во встроенном языке: работа со специфическим оборудованием, криптография, нестандартные протоколы.

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

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

Код пишется в модулях: модулях объектов, модулей форм, общих модулях, модулях менеджеров. Редактором служит конфигуратор или среда 1C:Enterprise Development Tools (EDT), построенная на базе Eclipse. EDT добавляет привычные разработчикам вещи: систему контроля версий через Git, статический анализ и более удобную навигацию по коду.

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

Функция ПолучитьОстатокТовара(Товар) Экспорт

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ ЕСТЬNULL(СУММА(Остатки.Количество), 0) КАК Остаток

|ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Товар) КАК Остатки";

Запрос.УстановитьПараметр("Товар", Товар);

Выборка = Запрос.Выполнить().Выбрать();

Выборка.Следующий();

Возврат Выборка.Остаток;

КонецФункции

Отдельно существует язык запросов 1С — декларативный язык с синтаксисом, похожим на SQL, но работающий с объектами метаданных, а не с физическими таблицами. Платформа транслирует такие запросы в SQL конкретной СУБД.

Если вы знаете любой процедурный язык — Pascal, BASIC, JavaScript, — встроенный язык 1С осваивается быстро. Основная сложность не в синтаксисе, а в понимании объектной модели: как устроены регистры, проведение документов и механизм запросов.
ПЗ
Практическое замечание

Веб-клиент, мобильная платформа и внешние технологии

Веб-клиент 1С работает в браузере без установки платформы: интерфейс формируется с помощью HTML, CSS и JavaScript, а обмен с сервером идет через веб-сервисы. Поэтому при диагностике проблем веб-клиента полезны инструменты разработчика браузера — там видны сетевые запросы и ошибки JavaScript.

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

Для интеграций 1С поддерживает стандартные протоколы и форматы: HTTP-сервисы и REST, веб-сервисы SOAP, XML, JSON, работу с файлами. Это позволяет связывать 1С с сайтами, CRM и внешними системами без правки ядра.

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

Сервер, клиенты, исполнение встроенного языка

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

Прикладная логика, проведение, отчеты

Запросы к даннымЯзык запросов 1С → SQL

Транслируется платформой в диалект выбранной СУБД

Веб-клиентHTML, CSS, JavaScript

Отображение интерфейса в браузере

Расширения ядраC++ (Native API), COM

Внешние компоненты для нестандартных задач

Где хранятся данные и какую роль играет СУБД

Сама 1С не хранит данные «в себе». В клиент-серверном режиме используется внешняя СУБД: Microsoft SQL Server, PostgreSQL (включая сборки, адаптированные под 1С), Oracle Database или IBM Db2. В файловом режиме база хранится в одном файле формата 1Cv8.1CD — это собственный формат платформы, подходящий для небольших баз с ограниченным числом пользователей.

Важно понимать: разработчик конфигурации не пишет SQL напрямую в обычных сценариях — платформа сама генерирует запросы. Но администратору знание СУБД необходимо: резервное копирование, обслуживание индексов и анализ блокировок выполняются средствами СУБД.

Что учить, если вы хотите разрабатывать под 1С

Стартовый минимум для 1С-разработчика: встроенный язык, язык запросов, объектная модель (справочники, документы, регистры), работа в конфигураторе и основы типовой конфигурации, с которой предстоит работать. Знание C++ не требуется — оно нужно только для узкой ниши внешних компонентов.

Полезные смежные навыки: основы SQL для понимания, что делает платформа с запросами; JavaScript и HTTP для интеграций и расширения веб-функций; Git при работе через EDT. Для администраторов приоритет смещается к СУБД, кластеру серверов 1С и лицензированию.

Порядок входа в разработку на 1С
  1. 1
    Установите учебную версию платформы и конфигуратор
  2. 2
    Изучите встроенный язык: переменные, циклы, функции, модули
  3. 3
    Освойте основные объекты: справочники, документы, регистры сведений и накопления
  4. 4
    Научитесь писать запросы и строить отчеты на СКД
  5. 5
    Попробуйте простую доработку через расширение конфигурации, не меняя типовой код
  6. 6
    Проверьте результат на копии базы, прежде чем переносить в рабочую среду
Типичные ошибки
01
Думать, что 1С написана на «языке 1С» целиком: встроенный язык — только прикладной слой, ядро написано на C++
02
Править типовую конфигурацию вместо использования расширений — это усложняет обновления и повышает риск потери доработок
03
Писать запросы в цикле вместо одного запроса с соединениями — резкое падение производительности на больших базах
04
Работать с данными напрямую в СУБД — нарушение целостности базы и проблемы при обновлении

Частые вопросы

1С написана на русском языке программирования?

Нет. «Русский синтаксис» есть только у встроенного языка, на котором пишут конфигурации. Сама платформа скомпилирована из кода на C++, который не имеет «русской» версии.

Нужно ли знать C++, чтобы работать 1С-программистом?

Нет. Подавляющее большинство задач решается на встроенном языке 1С и языке запросов. C++ требуется только для разработки внешних компонент по Native API — это редкая специализация.

Можно ли писать для 1С на Python или C#?

Напрямую внутри конфигурации — нет, исполняется только встроенный язык. Но внешние приложения на Python, C# или любом другом языке могут обмениваться данными с 1С через HTTP-сервисы, веб-сервисы или файлы, и это стандартная практика интеграций.

Чем EDT отличается от конфигуратора?

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

На каком языке пишутся запросы в 1С?

На встроенном языке запросов 1С — он похож на SQL, но оперирует именами объектов метаданных (документов, регистров), а не физических таблиц. Платформа сама преобразует его в SQL под используемую СУБД.

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

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

Итог

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

Платформа 1С написана преимущественно на C++ и имеет закрытый код; прикладные решения пишутся на встроенном языке 1С с русским или английским синтаксисом; веб-клиент использует HTML, CSS и JavaScript; данные хранятся во внешней СУБД. Для работы 1С-разработчиком учите встроенный язык, язык запросов и объектную модель — C++ не нужен.