Разработка и Конфигурация · 10 мин
На чем написано 1С:Предприятие: языки и технологии платформы
Разбираем, на чем написано 1С:Предприятие: встроенный язык 1С, C++ в ядре платформы, СУБД, веб-клиент и мобильная платформа. Что нужно знать разработчику и администратору.
Платформа «1С:Предприятие» — это не одна программа на одном языке, а многоуровневая система, где разные компоненты написаны на разных технологиях. Ядро платформы разработано на C++, прикладная логика конфигураций — на встроенном языке 1С, а взаимодействие с данными выполняется через запросы и СУБД. Понимание этого стека важно разработчикам, администраторам и тем, кто выбирает инструменты доработки.
Пользователь и прикладной разработчик напрямую работают только с встроенным языком и конструктором запросов — исходный код самой платформы закрыт и недоступен для изменения. Поэтому вопрос «на чем написано 1С» имеет два ответа: один касается внутреннего устройства платформы, второй — того, на чем реально пишут разработчики в проектах.
Ниже разобраны все уровни технологического стека: от ядра до мобильного клиента, а также практические выводы о том, какие навыки нужны для разработки и сопровождения систем на 1С.
Ядро платформы: на чем написана сама 1С
Исполняемые файлы платформы — сервер приложений, толстый и тонкий клиент, конфигуратор — написаны преимущественно на C++. Это обеспечивает высокую производительность при работе с большими объемами данных и поддержку кроссплатформенности: платформа работает под Windows, Linux и macOS.
Исходный код ядра закрыт: фирма «1С» не публикует его, и разработчики конфигураций не могут изменить поведение платформы на уровне ядра. Все доработки выполняются только средствами, которые платформа предоставляет официально: встроенный язык, механизм расширений, внешние компоненты.
Кроссплатформенность достигается за счет того, что единое ядро компилируется под разные операционные системы. Одна и та же конфигурация без изменений работает в клиент-серверном варианте на Windows Server с MS SQL и на Linux с PostgreSQL.
Встроенный язык 1С: на чем пишут разработчики
Основной инструмент прикладной разработки — встроенный язык 1С (его называют также «язык 1С» или по аналогии с англоязычной документацией — 1C:Enterprise script). По синтаксису он напоминает смесь Pascal и BASIC: операторные скобки «Если… Тогда… КонецЕсли», отсутствие фигурных скобок, слабая динамическая типизация.
Характерная особенность — двуязычность: код можно писать как на русском, так и на английском синтаксисе, причем в одном модуле допустимо смешение. В типовых конфигурациях используется русский синтаксис, поэтому для работы с ними знание русских ключевых слов обязательно.
Язык тесно интегрирован с объектной моделью метаданных: справочниками, документами, регистрами. Разработчик не создает таблицы вручную — структуру базы данных платформа строит автоматически по описанию объектов в конфигураторе. Это главное отличие от классической разработки, где схему БД проектируют отдельно.
Функция ПолучитьОстатокТовара(Товар)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ СУММА(Остатки.Количество) КАК Остаток
|ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Товар = &Товар) КАК Остатки";
Запрос.УстановитьПараметр("Товар", Товар);
Результат = Запрос.Выполнить().Выбрать();
Возврат ?(Результат.Следующий(), Результат.Остаток, 0);
КонецФункции
Язык запросов и работа с СУБД
Для выборки данных используется собственный язык запросов 1С — декларативный, похожий на SQL, но работающий с объектами метаданных, а не с физическими таблицами. Запрос «ВЫБРАТЬ … ИЗ Справочник.Номенклатура» платформа сама транслирует в SQL конкретной СУБД.
В клиент-серверном режиме 1С работает с четырьмя основными СУБД: Microsoft SQL Server, PostgreSQL (включая адаптированные сборки), Oracle Database и IBM Db2. В файловом режиме используется собственная встроенная СУБД платформы.
Прямые SQL-запросы к базе в обход платформы — рискованная практика. Структура физических таблиц не документирована и может меняться между релизами. Чтение через прямые запросы еще допустимо в интеграциях, но запись напрямую в таблицы почти гарантированно нарушит целостность данных.
Клиентская часть: тонкий, толстый и веб-клиент
Толстый и тонкий клиенты — нативные приложения на C++, входящие в состав платформы. Толстый клиент исполняет код локально и используется в основном для разработки и администрирования, тонкий — передает на сервер большую часть вычислений и подходит для работы пользователей по сети.
Веб-клиент работает в браузере без установки платформы. Интерфейс формируется средствами HTML, CSS и JavaScript, при этом прикладной код конфигурации остается тем же — платформа транслирует формы в веб-представление. Для разработчика это означает ограничения: не все возможности тонкого клиента доступны в браузере, например работа с локальными файлами требует расширения для браузера.
Интерфейс «Такси», используемый в современных конфигурациях, декларативно описывается в конфигураторе: разработчик задает состав элементов формы, а визуализацию на каждом типе клиента платформа строит сама.
Внешние компоненты и интеграции: где нужны другие языки
Когда возможностей встроенного языка не хватает — работа с оборудованием, криптография, специфические протоколы — применяются внешние компоненты по технологии Native API. Их пишут на C++ (реже на языках .NET через COM), компилируют в библиотеку и подключают к платформе методом ПодключитьВнешнююКомпоненту.
Для интеграции с внешними системами платформа поддерживает стандартные механизмы: HTTP-сервисы и HTTP-запросы, веб-сервисы SOAP, работу с JSON и XML, COM-соединение между базами 1С, а также планы обмена. Публикация HTTP-сервисов выполняется через веб-сервер Apache или IIS.
Расширенную аналитику и произвольные интерфейсы иногда строят на внешних инструментах: например, отчеты выгружают в Power BI, а специализированные формы реализуют через поле HTML-документа с кодом на JavaScript, обменивающимся данными с формой 1С.
Чем дорабатывать 1С в разных задачах
Подходит для 95% доработок: документы, отчеты, обработки. Ограничение — только в рамках объектной модели платформы.
Нужны для работы с оборудованием и низкоуровневых задач. Требуют навыков C++ и сборки под все целевые ОС.
Стандартный способ интеграции с сайтами, CRM и другими системами. Требует настройки веб-сервера и продумывания безопасности.
Допустим только для чтения в отчетных интеграциях. Для записи — запрещен из-за риска разрушения данных.
Мобильная платформа
Мобильные приложения на 1С создаются на отдельной мобильной платформе: разработчик пишет конфигурацию на том же встроенном языке в конфигураторе, а сборку под Android и iOS выполняет специальный сервис сборки мобильных приложений. Готовое приложение устанавливается на устройство как обычное мобильное приложение.
Мобильная платформа поддерживает автономную работу с локальной базой на устройстве и последующую синхронизацию с основной базой через веб-сервисы. Это типовой сценарий для торговых представителей, курьеров и сервисных инженеров.
Ограничения мобильной платформы существенны: урезанный состав объектов метаданных, упрощенный интерфейс, отсутствие части механизмов «большой» платформы. Полноценную конфигурацию перенести на мобильное устройство нельзя — мобильное решение проектируется отдельно.
Какие навыки нужны для разработки и администрирования
Прикладному разработчику 1С достаточно встроенного языка, языка запросов и понимания объектной модели: документы, регистры накопления и сведений, подсистемы. Для типовых конфигураций дополнительно требуется знание библиотеки стандартных подсистем (БСП), на которой построены все современные решения фирмы «1С».
Администратору клиент-серверной базы нужны навыки работы с выбранной СУБД: резервное копирование, обслуживание индексов, мониторинг блокировок. Знание SQL на уровне чтения планов запросов помогает находить причины медленной работы, хотя изменять данные напрямую по-прежнему нельзя.
Знание C++ требуется только узкому кругу специалистов, разрабатывающих внешние компоненты. Для подавляющего большинства проектов внедрения и сопровождения 1С он не нужен.
- 1Откройте «О программе» в клиенте 1С — там указаны версия платформы и режим работы (файловый или клиент-серверный).
- 2В консоли кластера серверов 1С посмотрите, какая СУБД указана в свойствах информационной базы.
- 3В конфигураторе откройте «Конфигурация → Открыть конфигурацию» — прикладной код на встроенном языке доступен в модулях объектов.
- 4Проверьте подключенные внешние компоненты и расширения: они укажут, где используются технологии за пределами встроенного языка.
Что важно запомнить
1С:Предприятие — многоуровневая система: ядро на C++, прикладная логика на встроенном языке 1С, данные — в MS SQL, PostgreSQL, Oracle или Db2, веб-клиент — на HTML/JavaScript. Разработчику нужны встроенный язык и язык запросов; C++ требуется только для внешних компонент.
Частые вопросы
1С написана на Python или Java?
Нет. Ядро платформы написано на C++. Python и Java могут использоваться только во внешних системах, которые обмениваются данными с 1С через HTTP-сервисы или файлы обмена.
Можно ли программировать в 1С на английском языке?
Да, встроенный язык поддерживает английский синтаксис: If… Then… EndIf вместо Если… Тогда… КонецЕсли. Однако типовые конфигурации написаны на русском синтаксисе, поэтому для их доработки нужно знать оба варианта.
Какая СУБД лучше для клиент-серверной 1С?
Чаще всего выбирают между MS SQL Server и PostgreSQL. MS SQL проще в администрировании для Windows-инфраструктуры, PostgreSQL дешевле по лицензиям, но требует адаптированной сборки и более внимательной настройки. Выбор зависит от бюджета, компетенций администраторов и нагрузки.
Нужно ли знать SQL для разработки в 1С?
Прямое знание диалекта SQL конкретной СУБД не обязательно: запросы пишутся на собственном языке запросов 1С. Но понимание принципов SQL — соединений, группировок, индексов — сильно помогает писать эффективные запросы и разбираться в проблемах производительности.
Можно ли посмотреть исходный код платформы 1С?
Нет, исходный код ядра платформы закрыт. Доступен только код конфигураций: у типовых решений он открыт для просмотра и доработки в конфигураторе (с учетом правил поддержки и лицензионного соглашения).
На чем писать мобильное приложение для 1С?
Мобильное приложение разрабатывается на встроенном языке 1С в конфигураторе с использованием мобильной платформы, а сборка под Android и iOS выполняется сервисом сборки. Знание Java/Kotlin или Swift не требуется, если не нужны специфические нативные функции.