Для многих разработчиков, ежедневно работающих в среде 1С, внутренняя архитектура платформы остается «черным ящиком». Мы привыкли оперировать объектами метаданных, писать код на встроенном языке и не задумываться о том, что происходит «под капотом». В рамках этой статьи мы детально проанализируем технологический стек, на котором базируется «1С:Предприятие», и выясним, на каких языках написаны встроенные процедуры и функции.
Рассмотрим основной фундамент платформы. Как подтверждают данные от разработчиков компании «1С», основным языком разработки ядра является C++. Это обусловлено необходимостью обеспечения максимально высокой производительности и прямого доступа к системным ресурсам. Проанализируем масштабы проекта:
C++14 занял существенное время и потребовал высокой квалификации разработчиков.Использование C++ позволяет платформе эффективно управлять памятью и обеспечивать кроссплатформенность, работая как в операционных системах семейства Windows, так и в различных дистрибутивах Linux.
Разберем важный нюанс: когда мы пишем процедуру на встроенном языке 1С, она не преобразуется напрямую в машинный код процессора. Вместо этого в платформе реализован механизм, схожий с принципами работы Java или .NET.
Проанализируем этот процесс по шагам:
Именно поэтому в бинарных файлах платформы (например, при анализе дампов памяти) можно встретить вставки, напоминающие инструкции низкоуровневого языка — это и есть команды виртуальной машины, которые обеспечивают работу нашего прикладного кода.
Выясним, как реализуется визуальная часть. Для создания элементов интерфейса в настольных клиентах (толстом и тонком) активно используется фреймворк Qt. Это позволяет разработчикам платформы писать код отрисовки окон и таблиц один раз, после чего он корректно работает и в Windows, и в Linux.
Кроме того, в коде широко применяются библиотеки Boost, которые дополняют стандартную библиотеку C++ и решают сложные задачи по работе с сетями, файловыми потоками и структурами данных. Для отображения HTML-контента внутри форм используется Chromium Embedded Framework (CEF), что позволяет встраивать полноценный современный браузер прямо в интерфейс 1С.
Посмотрим на ситуацию с веб-клиентом. Здесь архитектура кардинально меняется. Поскольку браузеры не могут исполнять код на C++ или напрямую понимать байт-код 1С, используется сложная система трансляции.
Веб-клиент практически полностью написан на JavaScript. Внутренние механизмы платформы «на лету» преобразуют описания форм и логику на языке 1С в JavaScript-код, который исполняется в браузере пользователя. Это сложный проприетарный фреймворк, который обеспечивает идентичность поведения программы в обычном приложении и в браузере.
Проанализируем современную среду разработки — 1C:Enterprise Development Tools (EDT). В отличие от классического «Конфигуратора», EDT построена на базе платформы Eclipse. Это означает, что её основным языком является Java.
Использование Java для среды разработки позволяет:
Разберем, как устроены мобильные приложения на базе 1С. Здесь используется гибридная схема:
Важно понимать, что встроенные функции работы с запросами также имеют сложную реализацию. Платформа содержит слой абстракции, написанный на C++, который переводит запросы на языке 1С в диалекты SQL, специфичные для конкретной СУБД (MS SQL, PostgreSQL, Oracle или IBM DB2).
Если же мы используем файловый вариант базы данных (.1CD), то задействуются внутренние алгоритмы 1С, которые управляют индексами, блокировками и хранением страниц данных на диске. Вся эта низкоуровневая математика реализована максимально эффективно на C++.
Таким образом, мы видим, что «1С:Предприятие» — это сложный конгломерат технологий. Встроенные процедуры и функции — это лишь верхушка айсберга. Под ними скрывается:
Понимание этой структуры помогает осознать, почему некоторые операции в 1С выполняются именно так, и какую колоссальную работу проделывает платформа, чтобы превратить наш код в работающее бизнес-приложение.