Разработка и Конфигурация · 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С
Основной инструмент разработчика конфигураций: бизнес-логика, обработчики событий, печатные формы. Не требует знания C++ или SQL.
Для выборки данных из базы. Похож на SQL, но оперирует объектами метаданных. Прямые SQL-запросы к СУБД в обход платформы не рекомендуются.
Используется только фирмой «1С» для разработки самой платформы. Прикладному разработчику недоступен и не нужен.
Задействованы внутри веб-клиента автоматически. Ручное использование возможно только через поле HTML-документа в формах.
Что нужно знать, чтобы разрабатывать и дорабатывать 1С
Минимальный набор 1С-разработчика: встроенный язык, язык запросов, конфигуратор и понимание объектов метаданных (документы, регистры накопления и сведений, планы счетов). Для отчётов — система компоновки данных. Этого достаточно, чтобы дорабатывать типовые конфигурации и создавать собственные.
Следующий уровень — интеграции: HTTP-запросы из встроенного языка, REST и SOAP-сервисы, форматы JSON и XML, планы обмена. Здесь полезны общие знания веб-технологий, но писать на других языках по-прежнему не требуется. Для расширенных сценариев существуют внешние компоненты по технологии Native API — их пишут на C++ или C#, когда встроенного языка не хватает (например, работа с оборудованием или сложная математика).
- 1Установите платформу и учебную версию конфигурации, откройте конфигуратор
- 2Изучите дерево метаданных: справочники, документы, регистры
- 3Напишите простую процедуру в общем модуле и вызовите её из формы
- 4Освойте отладчик: точки останова, табло, стек вызовов
- 5Перейдите к языку запросов и построению отчёта на СКД
Распространённые заблуждения и типичные ошибки
Новички часто считают, что для программирования в 1С нужно знать C++ — это неверно: ядро платформы закрыто, а вся прикладная разработка ведётся на встроенном языке. Обратное заблуждение — что встроенный язык «ненастоящий» и ограничен игрушечными задачами: на нём написаны конфигурации из сотен тысяч строк кода, обслуживающие крупные предприятия.
Ещё одна ошибка — попытки работать с базой напрямую через SQL в обход платформы. Структура таблиц СУБД не документирована и меняется между релизами: прямые запросы ломаются при обновлении, а прямая запись в таблицы нарушает целостность данных и лицензионные условия.
Частые вопросы
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С нужны встроенный язык, конфигуратор и СКД; прямая работа с СУБД и кодом платформы запрещена.