Разработка и Конфигурация · 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.
Модули объектов, форм, общие модули — всё на русском или английском синтаксисе
Сервер, клиенты, конфигуратор; исходный код закрыт
MS SQL, PostgreSQL, Oracle, Db2 либо файловый режим
Веб-клиент через IIS или Apache
Что нужно знать разработчику 1С на практике
Минимальный набор для прикладной разработки: встроенный язык 1С, язык запросов, система компоновки данных (СКД) для отчётов и понимание объектной модели — чем регистр накопления отличается от регистра сведений и когда что применять. Этого достаточно для большинства задач доработки типовых конфигураций.
Следующий уровень — администрирование и интеграции: основы SQL для анализа планов запросов, устройство клиент-серверной архитектуры, HTTP и JSON для обмена с сайтами и сервисами. Знание C#, Java или Python требуется только если вы пишете внешние компоненты или смежные системы, но не для работы внутри 1С.
Отдельно стоит упомянуть 1C:Enterprise Development Tools (EDT) — среду разработки на базе Eclipse. Она использует тот же встроенный язык, но добавляет привычные инструменты: контроль версий через Git, статический анализ кода, автодополнение. Переход с конфигуратора на EDT не требует изучения нового языка.
- 1Установите учебную версию платформы и откройте конфигуратор
- 2Создайте пустую конфигурацию и добавьте справочник и документ
- 3Напишите первую процедуру в модуле объекта, например обработку проведения
- 4Освойте конструктор запросов — он генерирует текст запроса автоматически
- 5Соберите простой отчёт на СКД без единой строки кода
- 6Проверьте результат в режиме предприятия: документ проводится, отчёт формируется
Расширение возможностей: внешние компоненты и другие языки
Когда возможностей встроенного языка не хватает — например, нужна работа со сканером штрих-кодов, криптография или особый протокол оборудования, — используются внешние компоненты. Их пишут на C++ по технологии Native API либо как COM-объекты на C++, C# или другом языке, поддерживающем COM. Компонента подключается к платформе и вызывается из встроенного языка как обычный объект.
Второй путь — вынос логики наружу: 1С обращается по HTTP к внешнему сервису на любом языке, а тот выполняет специфическую работу — машинное обучение, сложные вычисления, интеграцию с редкими API. Такой подход проще сопровождать, чем внешние компоненты, и не привязывает решение к разрядности и версии платформы.
Способы расширить функциональность 1С
Подходит для доработки типового решения без снятия с поддержки; ограничено возможностями встроенного языка
Нужна для оборудования и низкоуровневых задач; требует C++ или C# и усложняет обновления
Универсальный вариант для тяжёлой логики на любом языке; требует отдельного развёртывания и мониторинга
Частые заблуждения о технологиях 1С
Распространённое заблуждение — «1С написана на 1С». На встроенном языке написаны конфигурации (Управление торговлей, Бухгалтерия, Зарплата и управление персоналом), но платформа, которая их исполняет, — компилируемый продукт. Второе заблуждение — «язык 1С не настоящий язык программирования». Это полноценный язык с процедурами, функциями, объектами, обработкой исключений и коллекциями, просто специализированный под учётные задачи.
Третья ошибка — попытка сравнивать встроенный язык с языками общего назначения по скорости. Платформа оптимизирована под транзакционную учётную нагрузку, а не под вычисления; узкие места почти всегда находятся в запросах и блокировках СУБД, а не в самом коде. Поэтому оптимизация начинается с анализа запросов и индексов, а не с переписывания алгоритмов.
Что важно запомнить
Конфигурации 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 помогает при диагностике производительности: чтение планов запросов и анализ блокировок на стороне СУБД требуют понимания того, во что платформа транслирует запросы.