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

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

На чем написана 1С:Предприятие

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

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

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

Кроме двух основных слоев, в состав технологического стека входят веб-клиент на JavaScript и HTML, мобильная платформа, механизмы интеграции через COM, OLE, веб-сервисы и HTTP, а также расширение функциональности через внешние компоненты по технологии Native API. Ниже разберем каждый слой подробно.

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

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

Исходный код ядра закрыт. Пользователи и партнеры получают платформу в виде готовых дистрибутивов под Windows и Linux (серверная часть), а также клиентские приложения под Windows, Linux и macOS. Обновления ядра выходят вместе с новыми версиями платформы, и именно фирма «1С» решает, какие механизмы в него добавлять.

Практическое следствие: если в работе платформы возникает ошибка на уровне ядра (падение сервера, аварийное завершение клиента), исправить ее своими силами нельзя — только обновлением версии платформы или обращением к вендору. Дорабатывать можно только прикладной слой.

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

Весь прикладной код — обработчики документов, расчет проводок, алгоритмы отчетов — написан на встроенном языке 1С. Это высокоуровневый интерпретируемый язык, исполняемый виртуальной машиной платформы. Его ключевая особенность — предметная ориентация: в языке есть встроенные типы «Документ», «Справочник», «РегистрНакопления», а запросы к данным пишутся на собственном языке запросов, синтаксически похожем на SQL.

Язык поддерживает русскоязычный и англоязычный синтаксис (можно писать Если ... Тогда или If ... Then), динамическую типизацию и работу без явного управления памятью. Компиляция в байт-код происходит при сохранении конфигурации, исполнение — на стороне клиента или сервера в зависимости от директив компиляции (&НаСервере, &НаКлиенте).

Типичный фрагмент кода выглядит так:

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Товар, Количество ИЗ РегистрНакопления.Остатки.Остатки";

Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл

Сообщить(Результат.Товар);

КонецЦикла;

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

Веб-клиент и мобильная платформа

Веб-клиент 1С работает в браузере без установки платформы на компьютер пользователя. Он построен на стандартных веб-технологиях: интерфейс формируется с помощью HTML, CSS и JavaScript, а обмен данными с сервером идет по HTTP/HTTPS. Прикладной код при этом остается тем же самым — платформа транслирует формы и логику конфигурации в браузерное представление.

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

Клиентские варианты платформы

Толстый клиент

Полный клиент на C++, исполняет код локально. Подходит для файловых баз и отладки, требует установки и ресурсов на рабочем месте.

Тонкий клиент

Установленное приложение, вся логика исполняется на сервере. Оптимален для клиент-серверного режима в локальной сети.

Веб-клиент

Работает в браузере на HTML/JS без установки. Удобен для удаленных сотрудников, но имеет ограничения по работе с локальными файлами и оборудованием.

Мобильная платформа

Приложения под Android/iOS с автономной базой. Подходит для полевых сотрудников, требует отдельной мобильной конфигурации.

Интеграционные технологии: COM, веб-сервисы и HTTP

Для связи с внешними системами платформа поддерживает несколько стеков технологий. Исторически первым был COM: 1С может выступать COM-сервером (внешняя программа подключается к базе и вызывает ее объекты) и COM-клиентом (из кода 1С создаются объекты других приложений, например Excel через Новый COMОбъект("Excel.Application")). Эта технология работает только под Windows и постепенно вытесняется более современными способами.

Современный основной механизм — HTTP-сервисы и веб-сервисы (SOAP). Конфигурация может публиковать собственные HTTP-сервисы, принимая запросы от любых внешних систем, и обращаться к чужим API через объект HTTPСоединение. Поверх этого работают типовые механизмы: EnterpriseData, планы обмена, REST-интерфейс OData, который платформа публикует автоматически для объектов конфигурации.

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

Маршрут решения

Как выбрать способ интеграции

Нужно связать две базы 1С с регулярным обменом даннымиИспользуйте планы обмена или формат EnterpriseData — механизмы встроены в платформу
Внешняя система (сайт, CRM, мобильное приложение) должна читать и писать данные в 1СОпубликуйте HTTP-сервисы или включите REST-интерфейс OData
Нужно из кода 1С обратиться к внешнему APIИспользуйте объект HTTPСоединение с обработкой JSON или XML
Старый сценарий требует выгрузки в Excel на компьютере под WindowsДопустим COMОбъект, но планируйте замену на формирование файла табличным документом

Внешние компоненты и расширение возможностей

Когда встроенного языка не хватает — нужна работа со сканером штрих-кодов, криптография, специфические вычисления — используют внешние компоненты. Это библиотеки (DLL под Windows, so под Linux), написанные обычно на C++ по спецификации Native API, которую публикует фирма «1С». Компонента подключается из кода 1С и ее методы вызываются как методы обычного объекта.

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

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

Роль СУБД в архитектуре

Сама платформа не хранит данные в собственном формате (кроме файлового режима): в клиент-серверном варианте она работает поверх внешних СУБД. Поддерживаются Microsoft SQL Server, PostgreSQL (включая адаптированные сборки), Oracle Database и IBM DB2. Платформа транслирует запросы встроенного языка запросов в SQL конкретной СУБД и управляет транзакциями.

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

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

Что это значит для разработчика и бизнеса

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

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

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

Итог

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

Ядро 1С:Предприятие написано на C++ и закрыто для изменений. Прикладные решения создаются на встроенном языке 1С с собственным языком запросов. Веб-клиент работает на HTML/JavaScript, интеграции — через HTTP-сервисы, OData и COM, а низкоуровневое расширение возможно через внешние компоненты на C++ по Native API.

Часто задаваемые вопросы

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

Напрямую внутри конфигурации — нет, прикладной код пишется только на встроенном языке 1С. Однако внешние системы на любых языках могут обмениваться данными с 1С через HTTP-сервисы, OData или веб-сервисы, а внешние компоненты разрабатываются на C++. Поэтому связка «1С + сервис на Python/C#» — рабочая и распространенная схема.

Почему в 1С свой язык, а не стандартный SQL или C#?

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

Правда ли, что код 1С можно писать по-русски?

Да, встроенный язык имеет два синтаксиса — русский и английский, и их можно смешивать. Все ключевые слова, встроенные функции и конструкции доступны на русском. На практике в российских конфигурациях традиционно используется русский синтаксис, но при желании можно писать If/Then вместо Если/Тогда.

Что нужно знать, чтобы стать разработчиком 1С?

Базовый минимум — встроенный язык, язык запросов, устройство основных объектов конфигурации (справочники, документы, регистры) и работа в конфигураторе. Дальше полезны понимание клиент-серверной архитектуры, основы SQL, механизмы обмена и HTTP-интеграции. Знание C++ не требуется, если вы не планируете разрабатывать внешние компоненты.

Работает ли 1С на Linux и macOS, если ядро написано на C++?

Да. C++ — кроссплатформенный язык, и фирма «1С» собирает платформу под несколько ОС: сервер работает на Windows и Linux, клиенты — на Windows, Linux и macOS. Ограничения касаются отдельных технологий: COM-интеграция и часть внешних компонент доступны только под Windows.

Можно ли посмотреть исходный код типовой конфигурации?

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