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

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

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

На чём написан 1С:Предприятие: встроенный язык, C++ в ядре платформы, СУБД, веб-клиент и мобильная платформа. Разбираем стек технологий простым языком.

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

Коротко: прикладная логика конфигураций (модули документов, справочников, отчётов) пишется на встроенном языке 1С, который часто называют «язык 1С» или по аналогии с английским сообществом — BSL (1C:Enterprise script). Сама платформа, которая исполняет этот код, написана преимущественно на C++. Поверх этого работают СУБД, веб-клиент на JavaScript и мобильная платформа.

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

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

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

Характерная особенность — возможность писать код на русском языке: ключевые слова вроде «Процедура», «Если», «КонецЕсли», «Цикл» являются полноценными элементами синтаксиса. Существует и английский вариант синтаксиса, оба могут смешиваться, хотя на практике смешение считается плохим стилем. Это снижает порог входа: бухгалтер или аналитик без классического программистского образования может читать и править типовой код.

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

Ядро платформы: C++ и компилируемые технологии

Сама платформа 1С:Предприятие — сервер приложений, клиентские приложения, конфигуратор — написана преимущественно на C++. Это видно по косвенным признакам: распространяемые бинарные файлы, требования к распространяемым пакетам Visual C++, кроссплатформенность ядра (Windows, Linux, macOS для отдельных компонентов).

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

Для разработчика прикладных решений это значит одно: «залезть внутрь платформы» и поправить её поведение нельзя. Доступные точки расширения — конфигурация, расширения конфигурации, внешние обработки и отчёты, внешние компоненты по технологии Native API или COM.

Язык запросов и роль СУБД

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

Файловый вариант базы использует собственный формат файла 1Cv8.1CD с встроенным движком. Клиент-серверный вариант поддерживает Microsoft SQL Server, PostgreSQL (включая сборки, адаптированные под 1С), Oracle Database и IBM Db2. Прямой доступ к таблицам СУБД средствами SQL официально не поддерживается: структура таблиц недокументирована и может меняться между релизами платформы.

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

Веб-клиент 1С работает в браузере без установки платформы. Здесь в стек добавляются стандартные веб-технологии: HTML, CSS и JavaScript на клиенте, взаимодействие с веб-сервером (IIS или Apache) через специальный модуль расширения. Прикладной код при этом остаётся тем же встроенным языком 1С — платформа транслирует логику форм в браузерное представление.

Мобильная платформа — отдельный продукт, позволяющий собирать приложения под Android и iOS. Разработчик снова пишет на встроенном языке 1С, а сборку в нативное приложение выполняет специальный сборщик. Для распространения понадобятся учётные записи разработчика в Google Play и App Store.

Интеграции с внешним миром опираются на стандартные протоколы и форматы: HTTP-сервисы и REST, веб-сервисы SOAP, XML и JSON, обмен через файлы и брокеры сообщений. Это позволяет стыковать 1С с системами, написанными на любых языках, — Java, C#, Python, PHP.

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

Модули объектов, форм, общие модули — всё на русском или английском синтаксисе

Ядро платформыПреимущественно C++

Сервер, клиенты, конфигуратор; исходный код закрыт

ДанныеСУБД или файл 1Cv8.1CD

MS SQL, PostgreSQL, Oracle, Db2 либо файловый режим

Интерфейс в браузереHTML/CSS/JavaScript

Веб-клиент через IIS или Apache

Что нужно знать разработчику 1С на практике

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

Следующий уровень — администрирование и интеграции: основы SQL для анализа планов запросов, устройство клиент-серверной архитектуры, HTTP и JSON для обмена с сайтами и сервисами. Знание C#, Java или Python требуется только если вы пишете внешние компоненты или смежные системы, но не для работы внутри 1С.

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

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

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

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

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

Способы расширить функциональность 1С

Расширение конфигурации

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

Внешняя компонента (Native API / COM)

Нужна для оборудования и низкоуровневых задач; требует C++ или C# и усложняет обновления

Внешний HTTP-сервис

Универсальный вариант для тяжёлой логики на любом языке; требует отдельного развёртывания и мониторинга

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

Распространённое заблуждение — «1С написана на 1С». На встроенном языке написаны конфигурации (Управление торговлей, Бухгалтерия, Зарплата и управление персоналом), но платформа, которая их исполняет, — компилируемый продукт. Второе заблуждение — «язык 1С не настоящий язык программирования». Это полноценный язык с процедурами, функциями, объектами, обработкой исключений и коллекциями, просто специализированный под учётные задачи.

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

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

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

Конфигурации 1С пишутся на встроенном языке (BSL) с русским или английским синтаксисом, платформа реализована преимущественно на C++, данные хранятся в СУБД, а веб-клиент использует стандартные веб-технологии. Для прикладной разработки достаточно встроенного языка, языка запросов и СКД.

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

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

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

Почему в 1С код пишут на русском языке?

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

Какая СУБД лучше для клиент-серверной 1С?

Официально поддерживаются MS SQL Server, PostgreSQL, Oracle и IBM Db2. Выбор зависит от бюджета на лицензии, квалификации администраторов и требований к нагрузке; универсально «лучшей» СУБД нет, у каждой есть особенности настройки под 1С.

Открыт ли исходный код платформы 1С?

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

Чем EDT отличается от конфигуратора — это другой язык?

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

Нужно ли знать SQL разработчику 1С?

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