Разработка и Конфигурация · 9 мин
На чем написан 1С: язык платформы и встроенный язык разработки
Из чего состоит технологическая платформа 1С:Предприятие, на каком языке написано ядро, что такое встроенный язык 1С и какие технологии используются для интеграций и расширений.
Вопрос «на чем написан 1С» имеет два разных ответа в зависимости от того, что понимать под программой. Сама технологическая платформа 1С:Предприятие — это исполняемый код, написанный преимущественно на C++, а прикладные решения (конфигурации «Бухгалтерия», «Управление торговлей», «Зарплата и управление персоналом») создаются на встроенном языке 1С, который интерпретируется платформой.
Понимание этой двухуровневой структуры важно практически: от него зависит, какие навыки нужны разработчику, как расширять функциональность, почему конфигурации работают на разных операционных системах без переписывания кода и где находятся границы возможностей встроенного языка.
Ниже разобраны устройство платформы, особенности встроенного языка, языка запросов и механизмов интеграции, а также типичные заблуждения, которые мешают правильно оценить технологию при выборе инструментов разработки.
Из чего состоит платформа 1С:Предприятие
1С:Предприятие — это не одна программа, а многослойная система. Нижний слой — технологическая платформа: исполняемые файлы сервера, клиентских приложений и веб-компонентов. Этот слой разработан фирмой «1С» на C++ и поставляется в скомпилированном виде — исходный код платформы закрыт и недоступен пользователям.
Верхний слой — прикладная конфигурация: описание структур данных, форм, отчетов и алгоритмов на встроенном языке. Именно этот слой видят и дорабатывают программисты 1С. Платформа интерпретирует код конфигурации, обеспечивает работу с СУБД, интерфейс, права доступа и транзакции.
Такое разделение дает ключевое преимущество: одна и та же конфигурация работает на Windows, Linux и macOS, в клиент-серверном и файловом варианте, без переписывания прикладного кода. Платформа сама адаптирует исполнение под окружение.
Ядро на C++: что это означает на практике
Выбор C++ для ядра обусловлен требованиями к производительности и кроссплатформенности. Платформа должна быстро обрабатывать большие объемы данных, управлять памятью и работать на нескольких операционных системах — компилируемый язык системного уровня подходит для этого лучше интерпретируемых решений.
Для пользователя и разработчика конфигураций язык ядра почти не имеет практического значения: напрямую с C++-кодом платформы работать нельзя. Однако есть косвенные следствия:
- обновления платформы выпускает только фирма «1С» — исправить ошибку ядра самостоятельно невозможно;
- производительность встроенного языка ограничена интерпретацией — тяжелые вычисления выносят во внешние компоненты;
- платформа версии 8.3 поддерживает 32- и 64-разрядные режимы, что влияет на выбор разрядности сервера и клиентов.
Встроенный язык 1С: главный инструмент разработчика
Встроенный язык 1С — предметно-ориентированный язык программирования, оптимизированный под задачи учета и автоматизации бизнеса. Его синтаксис существует в двух вариантах: русском и английском. Оба варианта можно смешивать в одном модуле, хотя на практике в типовых конфигурациях используется русский синтаксис.
Ключевые особенности языка:
- динамическая типизация — тип переменной определяется значением в момент присваивания;
- встроенные типы для учетных задач: документы, справочники, регистры, перечисления;
- работа с датами, валютой и итогами на уровне самого языка;
- компиляция в промежуточный байт-код, который исполняет платформа;
- разделение контекстов исполнения: клиент, сервер, толстый и тонкий клиент.
Язык не является самостоятельным: программа на нем не запустится вне платформы 1С. Это принципиальное отличие от универсальных языков вроде Python или Java — встроенный язык существует только внутри экосистемы 1С:Предприятие.
Процедура РассчитатьСкидку(СуммаДокумента) Экспорт
Если СуммаДокумента > 100000 Тогда
Возврат СуммаДокумента * 0.1;
Иначе
Возврат 0;
КонецЕсли;
КонецПроцедурыЯзык запросов 1С и работа с базами данных
Для выборки данных в 1С используется собственный язык запросов, внешне похожий на SQL, но работающий с объектами конфигурации (справочниками, документами, регистрами), а не с физическими таблицами СУБД. Платформа сама транслирует запрос в диалект конкретной базы данных.
Поддерживаемые СУБД для клиент-серверного режима: Microsoft SQL Server, PostgreSQL (включая российские сборки), Oracle Database и IBM DB2. В файловом режиме платформа использует собственный формат файловой базы.
Это означает, что разработчик пишет один запрос, а платформа адаптирует его под установленную СУБД. Обратная сторона — прямой доступ к таблицам базы данных в обход платформы запрещен лицензионным соглашением и опасен: структура таблиц не документирована и меняется между версиями.
Интеграции и расширение возможностей
Когда возможностей встроенного языка не хватает, используются механизмы выхода за пределы платформы:
- Внешние компоненты — библиотеки по технологии Native API или COM, которые пишут на C++ или других компилируемых языках для тяжелых вычислений и работы с оборудованием;
- HTTP-сервисы и веб-сервисы — платформа умеет и публиковать, и вызывать REST/SOAP-интерфейсы;
- COM-соединение — на Windows позволяет управлять одной базой 1С из другой программы;
- Расширения конфигурации — механизм доработки типовых решений без изменения основной конфигурации, написанный на том же встроенном языке.
Способы расширения функциональности
Подходит для 95% задач учета и автоматизации; ограничение — скорость тяжелых вычислений и невозможность низкоуровневой работы с ОС.
Подходят для криптографии, работы с оборудованием, математики; требуют навыков C++ и поддержки отдельных сборок под каждую ОС.
Подходит для связи с сайтами, CRM и мобильными приложениями; требует продумывания авторизации и обработки ошибок сети.
Что нужно знать, чтобы писать под 1С
Для разработки конфигураций достаточно встроенного языка и языка запросов — знание C++ не требуется. Порог входа ниже, чем в универсальное программирование: многие специалисты приходят из учетных профессий и осваивают язык на практических задачах.
Инструментарий разработчика — конфигуратор (встроенная среда разработки платформы) и 1C:Enterprise Development Tools (EDT) — среда на базе Eclipse для крупных проектов. Оба инструмента работают с одним и тем же встроенным языком, различаясь возможностями командной разработки и контроля версий.
Как проверить, с чем вы работаете
Если нужно понять, какие технологии задействованы в конкретной базе, начните с простых проверок: откройте «О программе» и посмотрите версию платформы и режим совместимости, в конфигураторе проверьте наличие расширений и внешних компонент, а строку подключения к серверу 1С уточните у администратора — по ней видно, файловый или клиент-серверный вариант используется и какая СУБД задействована.
Как проверить окружение
Отображается в окне «О программе», совместима с конфигурацией
Ошибка несовместимости версий при запуске
Файловый или клиент-серверный вариант известен и задокументирован
Неизвестно, где физически хранятся данные
Список компонент известен, есть сборки под все используемые ОС
Ошибки «компонента не найдена» на части рабочих мест
Что важно запомнить
Платформа 1С:Предприятие написана на C++ и поставляется в закрытом скомпилированном виде. Прикладные решения создаются на встроенном языке с русским или английским синтаксисом, данные выбираются собственным языком запросов, а для выхода за пределы платформы используются внешние компоненты и интеграционные механизмы.
Частые вопросы
Можно ли посмотреть исходный код платформы 1С?
Нет. Исходный код ядра платформы закрыт и принадлежит фирме «1С». Пользователям доступен только код прикладных конфигураций, поставляемых в открытом виде, и собственных разработок.
Почему в 1С используют русский синтаксис языка?
Русский синтаксис снижает порог входа для специалистов без программистского образования — бухгалтеров и аналитиков. Английский вариант синтаксиса существует параллельно, и оба варианта технически равнозначны.
Можно ли писать для 1С на Python или C#?
Напрямую внутри конфигурации — нет, только на встроенном языке. Но внешние сервисы на любых языках могут обмениваться данными с 1С через HTTP-сервисы, COM или файловые форматы обмена.
Что такое 1C:EDT и чем он отличается от конфигуратора?
EDT — среда разработки на базе Eclipse, ориентированная на командные проекты, контроль версий и статический анализ кода. Язык тот же — встроенный язык 1С; отличаются инструменты и процесс разработки.
Правда ли, что 1С работает только на Windows?
Нет. Платформа 8.3 поддерживает Windows и Linux для сервера и клиентов, а также macOS для клиентской части. Веб-клиент работает в браузере вообще без установки платформы.
Нужно ли знать SQL для работы с 1С?
Для разработки конфигураций достаточно языка запросов 1С. Знание SQL полезно администраторам для диагностики производительности СУБД, но изменять данные напрямую через SQL нельзя.