Когда речь заходит о платформе 1С:Предприятие, многие пользователи и даже начинающие разработчики задаются вопросом: на чем же написана эта система? Ответ не так прост, как может показаться. — это не просто программа, а целая экосистема с уникальной архитектурой, сочетающей собственные разработки и стандартные IT-решения. В отличие от большинства бизнес-приложений, где используется один язык программирования, 1С:Предприятие построена на комбинации технологий, каждая из которых отвечает за свою часть функционала.

В этой статье мы детально разберем, какие языки и инструменты лежат в основе платформы, как устроена её внутренняя кухня, и почему выбор технологий именно такой. Вы узнаете о роли встроенного языка 1С, C++, JavaScript и других компонентов, а также о том, как они взаимодействуют между собой. Особое внимание уделим мифам и заблуждениям — например, почему не является "просто базой данных" и чем её архитектура отличается от классических ERP-систем.

1. Ядро платформы: C++ как основа производительности

Центральная часть 1С:Предприятия — её ядро — написана на C++. Этот выбор неслучаен: C++ обеспечивает высокую скорость выполнения операций, что критично для обработки больших объемов данных в бизнес-приложениях. Ядро отвечает за:

  • 🔹 Работу с базой данных (включая оптимизированные запросы)
  • 🔹 Управление памятью и ресурсами системы
  • 🔹 Выполнение встроенного языка (преобразование скриптов в машинный код)
  • 🔹 Межпроцессное взаимодействие (например, обмен данными между клиентом и сервером)

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

📊 Какой язык программирования вы используете чаще?
1С (встроенный язык)
C++
JavaScript
Python
Другой

Интересный факт: в ранних версиях платформы (до 1С:Предприятие 7.7) ядро писалось на Clarion — малоизвестном языке для бизнес-приложений. Переход на C++ в 1С:Предприятие 8 стал революционным шагом, позволившим значительно расширить возможности системы.

2. Встроенный язык 1С: "скриптовый" слой для бизнес-логики

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

  • 📜 Синтаксис, напоминающий Pascal (но с уникальными конструкциями)
  • 🔄 Интеграция с объектами платформы (справочники, документы, регистры)
  • 🛠️ Возможность расширения через внешние компоненты (например, на C# или Delphi)

Встроенный язык не является самостоятельным языком программирования в классическом смысле — он существует только в контексте платформы и выполняется её виртуальной машиной. Например, когда вы пишете:

Если НДС = 20 Тогда

СуммаНДС = Сумма * 0.2

КонецЕсли;

Этот код преобразуется ядром в оптимизированные команды, которые уже выполняются на уровне C++. Таким образом, встроенный язык служит "мостом" между бизнес-логикой пользователя и низкоуровневыми операциями ядра.

⚠️ Внимание: Встроенный язык не подходит для написания автономных приложений. Он работает только внутри платформы и не имеет компилятора для создания исполняемых файлов (.exe).

3. Роль JavaScript в современных версиях 1С

С выходом 1С:Предприятие 8.3.10 в платформе появилась поддержка JavaScript — сначала для веб-клиента, а позже и для тонкого клиента. Это было связано с несколькими факторами:

  1. Кроссплатформенность: JavaScript позволяет запускать в браузере без установки дополнительного ПО.
  2. Интеграция с веб-технологиями: Упростился обмен данными с внешними сервисами через REST API.
  3. Современный интерфейс: Появилась возможность использовать HTML5 и CSS3 для оформления форм.

Однако JavaScript в имеет ограничения:

Аспект Встроенный язык 1С JavaScript в 1С
Доступ к объектам платформы Полный Ограниченный (только через API)
Производительность Высокая (оптимизирован ядром) Ниже (интерпретируется браузером)
Поддержка серверных вычислений Да Нет (только клиентская часть)
Отладка Через конфигуратор 1С Через инструменты браузера (F12)

На практике JavaScript в используется преимущественно для:

  • 🌐 Веб-клиента и мобильных приложений
  • 🎨 Кастомизации интерфейса (например, динамические формы)
  • 🔗 Взаимодействия с внешними веб-сервисами
💡

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

4. Базы данных: SQL, PostgreSQL и собственные решения

Одним из ключевых компонентов 1С:Предприятия является система управления базами данных (СУБД). Здесь платформа поддерживает несколько вариантов:

  • 🗃️ Файловый режим: Данные хранятся в бинарных файлах (.1CD). Используется для небольших баз (до 10-20 пользователей).
  • 🛢️ Клиент-серверный режим: Работает с внешними СУБДMicrosoft SQL Server, PostgreSQL, IBM DB2 или Oracle Database.
  • 🔧 Собственная СУБД: В последних версиях платформы появилась экспериментальная поддержка встроенной СУБД на основе SQLite (для мобильных и легких решений).

При работе в клиент-серверном режиме генерирует SQL-запросы для взаимодействия с базой. Однако эти запросы не пишутся вручную — их формирует ядро платформы на основе команд встроенного языка. Например, запрос:

Выбрать *

Из Справочник.Номенклатура

Где ВидНоменклатуры = &Вид;

Преобразуется в SQL вида:

SELECT * FROM Reference17 WHERE Reference18 = :param1

(где Reference17 и Reference18 — внутренние идентификаторы таблиц в базе).

⚠️ Внимание: При использовании внешних СУБД (например, PostgreSQL) настройка сервера должна учитывать специфику работы . Например, рекомендуется отключать автовакуум (autovacuum) и настраивать shared_buffers вручную для оптимальной производительности.

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

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

  • 🔌 Интегрироваться с оборудованием (например, фискальными регистраторами или сканерами штрихкодов)
  • 📊 Использовать специализированные алгоритмы (например, для обработки изображений или шифрования)
  • 🌍 Подключаться к внешним сервисам (например, API банков или государственных систем)

Внешние компоненты могут быть написаны на:

Язык/Технология Пример использования Особенности
C++/C# (Native API) Драйверы для торгового оборудования Максимальная производительность, сложность разработки
COM-объекты (Windows) Интеграция с Microsoft Office Только для Windows, зависимость от регистрации в системе
Java (через Java Bridge) Работа с Android-устройствами Кроссплатформенность, но высокая нагрузка на память
JavaScript (в веб-клиенте) Кастомизация интерфейса Ограниченный доступ к системным ресурсам

Пример подключения внешней компоненты на C#:

ПодключитьВнешнююКомпоненту("C:\MyComponent\MyLib.dll", "MyComponent", ТипВнешнейКомпоненты.Native);

Объект = Новый("AddIn.MyComponent.Class1");

Как отладить внешнюю компоненту?

Для отладки внешних компонент на C# используйте Visual Studio с подключением к процессу 1С (rphost.exe или 1cv8.exe). Установите точки останова в коде компоненты, затем запустите 1С в режиме отладки. Важно: отладочная версия компоненты должна быть подписана тем же сертификатом, что и релизная.

6. Архитектура "тонкий клиент — сервер — база данных"

Современная 1С:Предприятие построена по многоуровневой архитектуре, где каждый компонент выполняет свою роль:

  1. Клиентское приложение:
    • 🖥️ Толстый клиент — полнофункциональный, требует установки.
    • 🌐 Тонкий клиент — легковесный, работает через интернет.
    • 📱 Мобильное приложение — для iOS/Android.
  • Сервер 1С:Предприятия: Обрабатывает бизнес-логику, управляет транзакциями и кэшированием.
  • Сервер баз данных: Хранит данные и выполняет SQL-запросы (если используется клиент-серверный режим).
  • Схема взаимодействия выглядит так:

    ПользовательКлиентСервер 1ССУБДСервер 1СКлиентПользователь

    Пример: когда пользователь открывает документ "Реализация товаров", происходит следующее:

    1. Клиент отправляет запрос на сервер .
    2. Сервер проверяет права доступа и кэширует часто используемые данные.
    3. Если данных нет в кэше, сервер обращается к СУБД (например, PostgreSQL).
    4. СУБД возвращает результат запроса.
    5. Сервер обрабатывает данные (например, рассчитывает итоги) и отправляет клиенту.
    6. Клиент отображает форму документа пользователю.
    7. ⚠️ Внимание: В файловом режиме сервер и СУБД фактически объединены в одном процессе (1cv8.exe). Это упрощает развертывание, но ограничивает масштабируемость и надежность.

      7. Мифы и заблуждения о технологиях 1С

      Вокруг платформы существует множество мифов, связанных с её внутренним устройством. Разберем самые распространенные:

      • 🚫 "1С написана на Delphi": Это верно только для некоторых внешних утилит (например, 1С:Предприятие 7.7 имела клиент на Delphi). Современные версии используют C++ и собственные решения.
      • 🚫 "1С — это просто оболочка для SQL": Платформа имеет собственную систему типов, объектную модель и виртуальную машину. SQL используется только для хранения данных.
      • 🚫 "Встроенный язык 1С — это упрощенный Pascal": Хотя синтаксис похож, встроенный язык включает уникальные конструкции для работы с бизнес-объектами (например, Запрос или РегистрыНакопления).
      • 🚫 "1С работает только на Windows": Серверная часть поддерживает Linux (официально с версии 8.3.10), а веб-клиент кроссплатформенный.

      Ещё одно распространенное заблуждение — что "медленная" из-за использования скриптового языка. На самом деле производительность зависит от:

      • 🔧 Оптимизации запросов (неправильный код может тормозить даже на C++).
      • 🗃️ Конфигурации сервера баз данных (например, индексы в PostgreSQL).
      • 🖥️ Аппаратных ресурсов (особенно важно для файлового режима).
      💡

      Встроенный язык 1С не является "узким местом" производительности. Основные задержки обычно связаны с неоптимизированными запросами к базе данных или недостатком серверных ресурсов.

      8. Перспективы: куда движется платформа?

      Фирма активно развивает платформу, и в последних версиях можно наблюдать следующие тренды:

      • 🌐 Усиление веб-технологий: Развитие веб-клиента и мобильных приложений на базе JavaScript и WebAssembly.
      • 📦 Контейнеризация: Поддержка Docker для упрощения развертывания серверов.
      • ☁️ Облачные решения: Расширение функционала 1С:Fresh и интеграция с 1С:EDT (средой разработки на базе Eclipse).
      • 🤖 Искусственный интеллект: Внедрение механизмов анализа данных и предсказательных моделей (например, в 1С:ERP).

      Один из самых ожидаемых шагов — переход на 64-битную архитектуру для клиентских приложений (уже реализовано для сервера). Это позволит:

      • 🚀 Увеличить производительность при работе с большими данными.
      • 🧠 Использовать больше оперативной памяти (актуально для сложных отчетов).
      • 🔄 Улучшить совместимость с современными операционными системами (например, Windows 11 или macOS).

      Также стоит отметить развитие 1С:EDT (Eclipse Development Tools) — новой среды разработки, которая:

      • 🔧 Поддерживает современные практики (Git, рефакторинг, статический анализ кода).
      • 🌍 Работает на разных платформах (в отличие от классического конфигуратора).
      • 📂 Позволяет разрабатывать расширения для на Java и JavaScript.
      ⚠️ Внимание: Некоторые экспериментальные функции (например, встроенная СУБД на SQLite) могут изменяться или исчезать в будущих версиях. Перед использованием в продакшн проверяйте их статус в документации.

      FAQ: Частые вопросы о технологиях 1С

      Можно ли написать свою программу на языке 1С без использования платформы?

      Нет, встроенный язык работает только внутри платформы 1С:Предприятие. Он не имеет самостоятельного компилятора или runtime-окружения за пределами системы. Однако вы можете:

      • Использовать 1С:Предприятие как основу для своего приложения (создав собственную конфигурацию).
      • Разработать внешнюю компоненту на C#/C++ и подключить её к .
      • Экспортировать данные из и обрабатывать их в другой системе (например, на Python).
    Почему 1С не переходит полностью на открытые технологии (например, Python или Java)?

    Есть несколько причин:

    1. Обратная совместимость: Миллионы существующих конфигураций написаны на встроенном языке, и их миграция потребует колоссальных усилий.
    2. Производительность: Встроенный язык оптимизирован под специфические задачи учета (например, работа с регистрами).
    3. Безопасность: Закрытая платформа проще в управлении правами доступа и лицензированием.
    4. Бизнес-модель: Фирма зарабатывает на продаже лицензий и поддержке проприетарных решений.

    Вместо полного отказа от своих технологий интегрирует открытые стандарты там, где это выгодно (например, PostgreSQL или JavaScript).

    Какой язык программирования выучить для работы с 1С: встроенный или что-то ещё?

    Это зависит от вашей роли:

    • 📊 Для пользователя/бухгалтера: Достаточно освоить основы встроенного языка для написания простых отчетов или обработок.
    • 💻 Для разработчика 1С: Глубокое знание встроенного языка + SQL (для оптимизации запросов). Желательно изучить JavaScript для веб-клиента.
    • 🔧 Для системного архитектора: Кроме 1С, пригодятся C# (для внешних компонент), Python (для интеграций) и знания администрирования PostgreSQL/SQL Server.

    Если вы планируете заниматься интеграциями, обратите внимание на:

    • REST API и JSON (для обмена данными с внешними системами).
    • XML (для старых протоколов обмена, например, с госсистемами).
    Можно ли запустить 1С на Linux или macOS?

    Да, но с оговорками:

    • 🐧 Сервер 1С: Полноценно поддерживает Linux (дистрибутивы на базе glibc 2.17+, например, CentOS 7, Ubuntu 18.04 LTS).
    • 🍎 Клиентская часть:
      • Тонкий клиент и веб-клиент работают через браузер (кроссплатформенно).
      • Толстый клиент официально доступен только для Windows, но можно запустить через Wine (с ограничениями).
    • 📱 Мобильное приложение: Доступно для Android и iOS.

    Для развертывания сервера на Linux потребуется:

    1. Установить пакеты 1c-enterprise и 1c-enterprise-ngnx (для веб-сервера).
    2. Настроить PostgreSQL или другую поддерживаемую СУБД.
    3. Сконфигурировать SELinux и брандмауэр.

    Подробные инструкции есть в официальной документации (1С:Предприятие для Linux).

    Какая база данных лучше для 1С: SQL Server или PostgreSQL?

    Выбор СУБД зависит от задач:

    Критерий Microsoft SQL Server PostgreSQL
    Стоимость Платная лицензия (от ~$1000 за сервер) Бесплатная (открытая лицензия)
    Производительность Высокая (оптимизирован для 1С) Сопоставимая, но требует тонкой настройки
    Масштабируемость Лучше для больших нагрузок (кластеры) Гибкая, но сложнее в администрировании
    Кроссплатформенность Только Windows Linux/Windows/macOS
    Поддержка 1С Полная (рекомендована для ERP) Полная (с версии 8.3.10)

    Рекомендации:

    • Для небольших компаний (до 50 пользователей) подойдет PostgreSQL (экономия на лицензиях).
    • Для крупных предприятий с высокими нагрузками лучше SQL Server (особенно если уже есть инфраструктура Microsoft).
    • Для Linux-инфраструктуры выбор очевиден — PostgreSQL.