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

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

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

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

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

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

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

Из чего состоит система 1С: слои архитектуры

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

Такое разделение объясняет, почему конфигурации переносимы между операционными системами и СУБД: платформа скрывает различия Windows, Linux, PostgreSQL, MS SQL Server и других сред. Разработчик пишет код один раз на встроенном языке, а платформа сама транслирует запросы в SQL конкретной СУБД.

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

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

Отдельные вспомогательные компоненты и инструменты экосистемы могут использовать другие языки — например, веб-клиент работает в браузере и опирается на HTML, CSS и JavaScript, которые платформа генерирует автоматически из описания форм. Разработчику конфигураций кода этих компонентов касаться не нужно: исходники платформы закрыты и изменению не подлежат.

Встроенный язык 1С: на что похож и как устроен

Встроенный язык 1С — предметно-ориентированный язык, заточенный под задачи учёта. Синтаксически он ближе всего к BASIC и Pascal: процедуры, функции, условные операторы «Если…Тогда…Иначе…КонецЕсли», циклы «Для…Цикл» и «Пока…Цикл». Ключевые слова можно писать как по-русски, так и по-английски — платформа понимает оба варианта, а типовые конфигурации написаны на русском.

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

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

Функция РассчитатьСкидку(СуммаПокупки) Экспорт

Если СуммаПокупки >= 100000 Тогда

Возврат СуммаПокупки * 0.10;

ИначеЕсли СуммаПокупки >= 50000 Тогда

Возврат СуммаПокупки * 0.05;

Иначе

Возврат 0;

КонецЕсли;

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

Язык не поддерживает классическое ООП с наследованием — вместо этого используются объекты метаданных и подписки на события. Это осознанное ограничение: предметная модель (документ, проведение, регистр) уже задана платформой, и разработчик описывает поведение внутри неё.

Язык запросов и другие встроенные технологии

Помимо основного языка, в платформу встроен собственный язык запросов — декларативный, похожий на SQL, но работающий с объектами метаданных, а не с таблицами СУБД напрямую. Запрос «ВЫБРАТЬ Номенклатура.Наименование ИЗ Справочник.Номенклатура» платформа сама преобразует в SQL под конкретную базу.

В экосистему также входят: язык выражений системы компоновки данных (СКД) для отчётов, механизм XDTO для описания и обмена XML-данными, поддержка HTTP-сервисов и веб-сервисов SOAP для интеграций. Веб-клиент и мобильная платформа используют стандартные веб-технологии, но разработчик по-прежнему пишет логику на встроенном языке — интерфейс генерируется платформой.

Сравнение языков в экосистеме 1С

Встроенный язык 1С

Основной инструмент разработчика конфигураций: бизнес-логика, обработчики событий, печатные формы. Не требует знания C++ или SQL.

Язык запросов 1С

Для выборки данных из базы. Похож на SQL, но оперирует объектами метаданных. Прямые SQL-запросы к СУБД в обход платформы не рекомендуются.

C++ (ядро платформы)

Используется только фирмой «1С» для разработки самой платформы. Прикладному разработчику недоступен и не нужен.

JavaScript/HTML/CSS

Задействованы внутри веб-клиента автоматически. Ручное использование возможно только через поле HTML-документа в формах.

Что нужно знать, чтобы разрабатывать и дорабатывать 1С

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

Следующий уровень — интеграции: HTTP-запросы из встроенного языка, REST и SOAP-сервисы, форматы JSON и XML, планы обмена. Здесь полезны общие знания веб-технологий, но писать на других языках по-прежнему не требуется. Для расширенных сценариев существуют внешние компоненты по технологии Native API — их пишут на C++ или C#, когда встроенного языка не хватает (например, работа с оборудованием или сложная математика).

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

Распространённые заблуждения и типичные ошибки

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

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

Типичные ошибки
01
Прямые SQL-запросы к базе в обход платформы — обход блокировок, рассинхронизация данных и сбои при обновлении
02
Изменение типовой конфигурации без расширений — потеря доработок при каждом обновлении
03
Игнорирование разделения кода на серверный и клиентский — ошибки компиляции в тонком и веб-клиенте
04
Изучение C++ вместо встроенного языка — потеря времени на навык, который в 1С-разработке не применяется

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

1С написана на 1С — это правда?

Частично. Конфигурации (прикладные решения) написаны на встроенном языке 1С, а сама платформа, которая этот язык исполняет, написана на C++. То есть «программа 1С», с которой работает бухгалтер, — это код на встроенном языке поверх C++-ядра.

Нужно ли знать SQL для работы с 1С?

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

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

Напрямую внутри конфигурации — нет. Внешние системы на этих языках могут взаимодействовать с 1С через HTTP-сервисы, веб-сервисы или файловый обмен. Для низкоуровневых задач существует технология внешних компонент (Native API) на C++ и C#.

Почему в 1С русские ключевые слова — это обязательно?

Нет, язык имеет два встроенных синтаксиса: русский и английский. Их можно даже смешивать, хотя это считается дурным тоном. Типовые конфигурации написаны на русском варианте, поэтому для их доработки удобнее придерживаться его.

Что такое OneScript и как он связан с 1С?

OneScript — независимый open-source интерпретатор языка, синтаксически совместимого со встроенным языком 1С. Его используют для скриптов автоматизации, сборки и тестирования. Это отдельный проект сообщества, а не часть платформы фирмы «1С».

Итог

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

Платформа 1С написана на C++, прикладные конфигурации — на встроенном языке с русским синтаксисом, выборки данных — на встроенном языке запросов. Для разработки и доработки 1С нужны встроенный язык, конфигуратор и СКД; прямая работа с СУБД и кодом платформы запрещена.