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

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

На чём сделана 1С: технологии и архитектура платформы

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

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

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

Ядро платформы: на чём написан «движок» 1С

Исполняемая часть платформы — сервер приложений, клиентские приложения, конфигуратор — реализована преимущественно на C++ с использованием кроссплатформенных библиотек. Именно поэтому одна и та же платформа выпускается для Windows и Linux, а сервер 1С может работать на обеих ОС. Исходный код ядра закрыт: пользователи и партнёры получают скомпилированные дистрибутивы.

Ядро отвечает за всё «тяжёлое»: исполнение кода встроенного языка, генерацию SQL-запросов к СУБД, управление транзакциями и блокировками, механизмы разграничения прав, кластер серверов, фоновые задания. Доработать ядро нельзя — можно только менять прикладную логику конфигурации и использовать открытые точки расширения (расширения конфигурации, внешние компоненты).

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

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

Вся прикладная логика — проведение документов, расчёт налогов, формирование отчётов — написана на встроенном языке 1С. Это интерпретируемый язык высокого уровня с предметно-ориентированными типами: «ДокументОбъект», «СправочникСсылка», «РегистрСведенийМенеджерЗаписи». Синтаксис может быть русским или английским, ключевые слова вроде «Если...Тогда...КонецЕсли» имеют английские аналоги.

Язык не компилируется в машинный код: модули хранятся в конфигурации и исполняются платформой. Это даёт высокую скорость разработки и встроенную защиту от целого класса ошибок (работа с памятью, указатели), но ограничивает производительность в вычислительно тяжёлых задачах. Для них предусмотрены внешние компоненты по технологии Native API — библиотеки на C++, подключаемые к платформе.

Запросы к данным пишутся на собственном языке запросов 1С — декларативном языке, похожем на SQL, но работающем с объектами конфигурации, а не с физическими таблицами. Платформа транслирует его в SQL конкретной СУБД, поэтому один и тот же запрос работает на любой поддерживаемой базе.

Хранение данных: какие СУБД использует 1С

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

СУБДОсобенности применения с 1СКогда выбирают
Файловый режимДанные в одном файле 1Cv8.1CD, без внешней СУБДНебольшие базы, один или несколько пользователей
MS SQL ServerНаиболее распространённый вариант в клиент-серверных установкахСредние и крупные внедрения на Windows-инфраструктуре
PostgreSQLИспользуются специальные сборки, адаптированные под 1СКогда важно снизить стоимость лицензий на СУБД
Oracle, IBM Db2Поддерживаются платформой, но встречаются режеКрупные организации с существующей инфраструктурой этих вендоров

Критичный момент: структура физических таблиц в СУБД генерируется платформой и не предназначена для прямой работы. Имена таблиц и полей служебные, связи между ними описаны в метаданных платформы. Прямые INSERT или UPDATE в базу мимо платформы нарушают целостность данных и лишают поддержки — это одна из самых опасных «оптимизаций».

Клиент-серверная архитектура: как устроено взаимодействие

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

Кластер серверов — это собственная разработка 1С: менеджер кластера распределяет соединения между рабочими процессами, обеспечивает отказоустойчивость и балансировку нагрузки. На одном физическом сервере можно запускать несколько рабочих процессов, чтобы использовать многопроцессорность и изолировать сбои.

Код встроенного языка явно разделяется на клиентский и серверный: в модулях используются директивы «&НаКлиенте» и «&НаСервере». Серверный код не имеет доступа к интерфейсу, клиентский — к прямым запросам к данным. Это архитектурное ограничение нужно учитывать при разработке: например, обход большой таблицы на клиенте приведёт к тысячам обращений к серверу и деградации скорости.

Как определить режим работы своей базы
  1. 1
    Откройте список информационных баз в окне запуска 1С или файл настроек подключения.
  2. 2
    Посмотрите строку соединения: «File=...» означает файловый режим, «Srvr=...;Ref=...» — клиент-серверный.
  3. 3
    Для клиент-серверного режима уточните у администратора, какая СУБД используется (MS SQL, PostgreSQL и т.д.).
  4. 4
    Проверьте версию платформы в меню «Справка — О программе»: от неё зависят доступные технологии.

Клиентские приложения: толстый, тонкий, веб и мобильный клиент

Платформа предоставляет несколько способов доступа к одной и той же базе. Тонкий клиент — лёгкое приложение, которое передаёт на сервер только вызовы и отображает готовый интерфейс; он работает по собственному протоколу и через веб-сервер. Толстый клиент исполняет больше логики локально и нужен в основном для разработки и отдельных старых сценариев.

Веб-клиент работает в браузере без установки платформы: интерфейс рендерится средствами HTML и JavaScript, а взаимодействие с сервером идёт через публикацию на веб-сервере (IIS или Apache). Это основной способ дать доступ внешним пользователям и сотрудникам без установки ПО.

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

Сравнение вариантов клиентского доступа

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

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

Веб-клиент

Ничего устанавливать не нужно, работает через браузер; требует публикации базы на веб-сервере и настройки доступа.

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

Нужен разработчикам и для отдельных устаревших механизмов; новые конфигурации на него не ориентируются.

Мобильный клиент

Для работы с планшетов и смартфонов через мобильную платформу; требует отдельной мобильной конфигурации.

Интеграция и расширяемость: чем 1С связывается с внешним миром

Для обмена с внешними системами платформа предоставляет стандартные протоколы: HTTP-сервисы и HTTP-клиенты, веб-сервисы SOAP, работу с JSON и XML, а также REST-интерфейс OData, который автоматически публикует объекты конфигурации для чтения и изменения. Файловый обмен поддерживает форматы XML, JSON, CSV, DBF и другие.

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

Технология COM-соединения (1C:ComConnector) позволяет обращаться к базе 1С из внешних приложений на Windows, а механизм «EnterpriseData» и планы обмена используются для синхронизации между разными конфигурациями 1С. При проектировании интеграции важно выбирать механизм под задачу: для разовой выгрузки достаточно файлового обмена, для онлайн-взаимодействия — HTTP-сервисов.

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

Что это значит при выборе и администрировании

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

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

Для разработчика ключевой вывод такой: эффективная работа с 1С требует понимания всего стека — от встроенного языка до поведения СУБД. Ошибка на любом слое (неоптимальный запрос, лишние серверные вызовы, неверные настройки СУБД) проявляется для пользователя одинаково — как «1С тормозит», но лечится совершенно по-разному.

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

Как выбрать действие

База для 1–5 пользователей без выделенного сервераИспользуйте файловый режим и регулярное резервное копирование файла базы.
Десятки одновременных пользователей и активная работа с документамиПереходите на клиент-серверный режим с MS SQL Server или PostgreSQL.
Нужен доступ сотрудникам без установки программыПубликуйте базу на веб-сервере и давайте доступ через веб-клиент.
Требуется доработать типовую конфигурациюИспользуйте механизм расширений, не изменяя саму конфигурацию.
Нужна интеграция с сайтом или внешней системой в реальном времениРеализуйте HTTP-сервисы в 1С или используйте авто-публикацию OData.
Итог

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

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

Частые вопросы

1С написана на 1С — правда ли это?

Частично. Ядро платформы написано на C++ и закрыто, а вот прикладные конфигурации (Бухгалтерия, УТ, ЗУП) действительно написаны на встроенном языке 1С. Большую часть их кода можно посмотреть и изменить в конфигураторе.

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

Технически чтение возможно, но структура таблиц служебная и не документирована для прямой работы, поэтому интерпретировать данные сложно. Для выгрузок используйте штатные механизмы: OData, HTTP-сервисы, отчёты и обработки. Запись в базу напрямую недопустима.

На каком языке писать доработки для 1С?

Основная разработка ведётся на встроенном языке 1С в конфигураторе или в среде EDT. Для задач, требующих высокой производительности или работы с оборудованием, создают внешние компоненты на C++ по технологии Native API.

Работает ли 1С на Linux?

Да. Сервер 1С и сервер СУБД (PostgreSQL, IBM Db2) могут работать на Linux, а клиентский доступ в таком случае обычно организуют через веб-клиент или тонкий клиент под Windows. Полноценная связка «Linux-сервер + PostgreSQL» — распространённый способ снизить затраты на лицензии.

Чем файловый режим отличается от клиент-серверного по технологии?

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

Подходит ли 1С для интеграции с интернет-магазином?

Да, для этого есть несколько штатных путей: публикация HTTP-сервисов в самой 1С, обращение из 1С к API магазина, обмен файлами по расписанию или использование готовых модулей обмена. Выбор зависит от требований к скорости синхронизации и направлению потока данных.