Разработка и Конфигурация · 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С выполняются медленнее, чем в компилируемых языках. Для таких задач рекомендуется выносить логику в запросы к СУБД или использовать фоновые задания.
Функция ПолучитьОстаток(Номенклатура)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ЕСТЬ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С через опубликованные сервисы.
Чем дополнить встроенный язык
Подходит для доработки типового решения без снятия с поддержки. Ограничение: нельзя менять всю структуру метаданных, только добавлять и переопределять.
Подходит для работы с оборудованием и ресурсоёмких операций. Ограничение: требует разработки на C++ и сопровождения отдельной библиотеки.
Подходит для связи с внешними системами и вынесения тяжёлой логики. Ограничение: нужна инфраструктура веб-сервера и контроль безопасности.
Как это знание применить на практике
Если вы выбираете, что учить для работы с 1С, начинайте со встроенного языка и языка запросов — именно они покрывают подавляющую часть задач разработки и доработки. C++ требуется только тем, кто пишет внешние компоненты или работает в самой фирме «1С».
Для администратора важнее понимать архитектуру: какой режим работы используется (файловый или клиент-серверный), какая СУБД обслуживает базу, как обновляется платформа. Ошибки на этом уровне — например, размещение файловой базы на сетевом диске при большом числе пользователей — дают основную массу проблем с производительностью и повреждением данных.
- 1Откройте конфигуратор или окно «О программе» и посмотрите версию платформы и режим работы (файловый или клиент-серверный).
- 2Если режим клиент-серверный — уточните у администратора, какая СУБД обслуживает кластер (PostgreSQL, MS SQL и т.д.).
- 3Откройте конфигуратор и посмотрите модуль любого объекта: код на встроенном языке покажет, русский или английский синтаксис принят в проекте.
- 4Проверьте список подключённых расширений и внешних компонент, чтобы понять, какие дополнительные технологии задействованы.
Частые ошибки и ограничения
Распространённое заблуждение — считать, что 1С «написана на 1С». Платформа и конфигурация — разные сущности: первую пишет вендор на C++, вторую — разработчики на встроенном языке. Отсюда следует практическое ограничение: нельзя «переписать 1С под себя» на уровне платформы, можно только менять конфигурацию и расширения.
Вторая типичная ошибка — попытка оптимизировать производительность переписыванием кода циклами встроенного языка там, где задача решается одним запросом. Встроенный язык интерпретируется и проигрывает СУБД на больших объёмах данных. Правило простое: выборки и агрегации — в запрос, объектная логика — в код.
FAQ
1С — это язык программирования или программа?
Это экосистема: платформа (написана преимущественно на C++), встроенный язык для разработки конфигураций и готовые прикладные решения. Когда говорят «программист 1С», обычно имеют в виду разработчика на встроенном языке.
Нужно ли знать C++, чтобы работать с 1С?
Нет. Для доработки конфигураций, отчётов и интеграций достаточно встроенного языка и языка запросов. C++ нужен только для разработки внешних компонент по технологии Native API.
Можно ли писать код 1С на английском?
Да, платформа поддерживает английский синтаксис встроенного языка. Можно даже смешивать русские и английские конструкции, хотя на практике в одном проекте принято придерживаться одного стиля.
На какой СУБД лучше разворачивать 1С?
Для небольших баз достаточно файлового режима. В клиент-серверном варианте чаще выбирают PostgreSQL или MS SQL Server: первый дешевле по лицензиям, второй проще в администрировании для Windows-инфраструктуры. Итоговый выбор зависит от нагрузки, бюджета и компетенций администраторов.
Можно ли посмотреть исходный код платформы 1С?
Нет, исходный код платформы закрыт. Доступен для просмотра и изменения только код конфигураций (в типовых решениях он открыт) и собственных разработок.
Чем встроенный язык 1С отличается от обычных языков программирования?
Он предметно-ориентированный: типы данных и конструкции заточены под учётные задачи (документы, регистры, проведение), нет ручного управления памятью и компиляции в машинный код. Это ускоряет разработку прикладной логики, но ограничивает применение вне экосистемы 1С.
Что важно запомнить
Платформа 1С написана на C++ и закрыта для изменений, прикладные решения — на встроенном языке с русским и английским синтаксисом, данные хранятся во внешних СУБД. Для практической работы ключевыми навыками являются встроенный язык и язык запросов, а прямое вмешательство в базу данных в обход платформы недопустимо.