Разработка и Конфигурация · 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С или файл настроек подключения.
- 2Посмотрите строку соединения: «File=...» означает файловый режим, «Srvr=...;Ref=...» — клиент-серверный.
- 3Для клиент-серверного режима уточните у администратора, какая СУБД используется (MS SQL, PostgreSQL и т.д.).
- 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-сервисов.
Что это значит при выборе и администрировании
Из архитектуры следуют конкретные требования к инфраструктуре. Для клиент-серверного режима нужны минимум два компонента: сервер 1С и сервер СУБД, которые можно размещать на одной машине только в небольших внедрениях. Производительность зависит от трёх узких мест: дисковой подсистемы СУБД, оперативной памяти рабочих процессов и качества запросов в конфигурации.
Обновления тоже двухуровневые: отдельно обновляется платформа (дистрибутив от вендора) и отдельно — конфигурация. Несовпадение версий в пределах поддерживаемой совместимости допустимо, но выход за её границы приводит к отказу запуска. Перед обновлением платформы на рабочем контуре обновление проверяют на копии базы.
Для разработчика ключевой вывод такой: эффективная работа с 1С требует понимания всего стека — от встроенного языка до поведения СУБД. Ошибка на любом слое (неоптимальный запрос, лишние серверные вызовы, неверные настройки СУБД) проявляется для пользователя одинаково — как «1С тормозит», но лечится совершенно по-разному.
Как выбрать действие
Что важно запомнить
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 магазина, обмен файлами по расписанию или использование готовых модулей обмена. Выбор зависит от требований к скорости синхронизации и направлению потока данных.