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

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

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

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

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

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

Ниже разберём, из каких технологических слоёв состоит экосистема 1С, как устроен встроенный язык, какие СУБД и протоколы используются, и что это значит для разработчика и администратора на практике.

Из чего состоит технологическая платформа 1С

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

Помимо C++-ядра в платформе используются и другие технологии. Веб-клиент построен на HTML, CSS и JavaScript — он фактически транслирует интерфейс, описанный в конфигурации, в браузерную страницу. Мобильная платформа использует собственный движок, который интерпретирует ту же конфигурацию на Android и iOS. Отдельные компоненты (например, средства кластеризации и администрирования) используют служебные протоколы и скриптовые инструменты.

Исходный код платуры закрыт. Пользователи и партнёры получают только исполняемые файлы и документацию. Это означает, что исправить ошибку платформы или изменить её поведение самостоятельно нельзя — можно лишь обходить ограничения на уровне встроенного языка или ждать исправлений от вендора.

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

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

Характерная особенность — возможность писать код на русском языке: ключевые слова, имена встроенных функций и объектов имеют русские и английские варианты (например, Если / If, КонецЦикла / EndDo). На практике в типовых конфигурациях используется русский синтаксис, а во многих собственных разработках — английский; платформа понимает оба.

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

bsl
Функция ПолучитьОстаток(Номенклатура)
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ ЕСТЬNULL(СУММА(Количество), 0) КАК Остаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки ГДЕ Номенклатура = &Номенклатура";
	Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
	Возврат Запрос.Выполнить().Выгрузить()[0].Остаток;
КонецФункции

Язык запросов и работа с СУБД

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

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

Практический вывод: знание SQL полезно разработчику 1С, но писать «сырые» запросы напрямую к таблицам базы данных не рекомендуется. Структура таблиц не документирована и может меняться между версиями платформы; корректный путь — язык запросов 1С и объектная модель.

Расширения, внешние компоненты и интеграции

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

Для интеграций платформа поддерживает HTTP и REST-сервисы, веб-сервисы (SOAP), работу с JSON и XML, файловый обмен, а также механизмы Enterprise Data и планы обмена. На стороне внешних систем интеграционный код пишется на любом языке — C#, Java, Python, PHP — и общается с 1С через опубликованные сервисы.

Чем дополнить встроенный язык

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

Подходит для доработки типового решения без снятия с поддержки. Ограничение: нельзя менять всю структуру метаданных, только добавлять и переопределять.

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

Подходит для работы с оборудованием и ресурсоёмких операций. Ограничение: требует разработки на C++ и сопровождения отдельной библиотеки.

HTTP/REST-интеграция

Подходит для связи с внешними системами и вынесения тяжёлой логики. Ограничение: нужна инфраструктура веб-сервера и контроль безопасности.

Как это знание применить на практике

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

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

Как определить, что используется в вашем внедрении
  1. 1
    Откройте конфигуратор или окно «О программе» и посмотрите версию платформы и режим работы (файловый или клиент-серверный).
  2. 2
    Если режим клиент-серверный — уточните у администратора, какая СУБД обслуживает кластер (PostgreSQL, MS SQL и т.д.).
  3. 3
    Откройте конфигуратор и посмотрите модуль любого объекта: код на встроенном языке покажет, русский или английский синтаксис принят в проекте.
  4. 4
    Проверьте список подключённых расширений и внешних компонент, чтобы понять, какие дополнительные технологии задействованы.

Частые ошибки и ограничения

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

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

Типичные ошибки
01
Попытка править данные напрямую в таблицах СУБД — приводит к рассогласованию данных и потере поддержки.
02
Реализация тяжёлых расчётов циклами встроенного языка вместо запросов — резкое падение производительности на больших базах.
03
Обновление платформы без тестового контура — изменения в поведении платформы могут сломать доработки конфигурации.
04
Игнорирование того, что веб-клиент работает в браузере: часть возможностей тонкого клиента (например, прямой доступ к файловой системе) там недоступна.

FAQ

1С — это язык программирования или программа?

Это экосистема: платформа (написана преимущественно на C++), встроенный язык для разработки конфигураций и готовые прикладные решения. Когда говорят «программист 1С», обычно имеют в виду разработчика на встроенном языке.

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

Нет. Для доработки конфигураций, отчётов и интеграций достаточно встроенного языка и языка запросов. C++ нужен только для разработки внешних компонент по технологии Native API.

Можно ли писать код 1С на английском?

Да, платформа поддерживает английский синтаксис встроенного языка. Можно даже смешивать русские и английские конструкции, хотя на практике в одном проекте принято придерживаться одного стиля.

На какой СУБД лучше разворачивать 1С?

Для небольших баз достаточно файлового режима. В клиент-серверном варианте чаще выбирают PostgreSQL или MS SQL Server: первый дешевле по лицензиям, второй проще в администрировании для Windows-инфраструктуры. Итоговый выбор зависит от нагрузки, бюджета и компетенций администраторов.

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

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

Чем встроенный язык 1С отличается от обычных языков программирования?

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

Итог

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

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