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

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Разработчики, работающие с платформой «1С:Предприятие 8», часто задаются вопросом: как именно устроена графическая подсистема этой среды? На каком фреймворке построены окна конфигуратора и клиентских приложений? Использует ли 1С популярные кроссплатформенные библиотеки вроде Qt, wxWidgets или JUCE, либо же под капотом скрывается собственное закрытое решение?

В этой статье мы подробно разберем внутреннюю архитектуру графического движка платформы 1С. Выясним, с помощью каких библиотек C++ и системных API отрисовываются управляемые формы на различных операционных системах, как эволюционировал интерфейс платформы и каким образом осуществляется кроссплатформенность.

1. Собственная графическая библиотека wbase

Для начала разберем главный миф: платформа 1С не использует сторонние коммерческие или открытые GUI-фреймворки общего назначения (такие как Qt) для построения своего основного интерфейса. Вся клиентская часть платформы, написанная преимущественно на языке C++, базируется на собственном проприетарном решении.

Архитектура платформы разделена на множество динамических библиотек. За отрисовку и создание элементов управления отвечает специализированный низкоуровневый компонент — библиотека wbase (в операционной системе Windows она представлена файлом wbase.dll, а в Linux — wbase.so).

Рассмотрим подробнее, за что отвечает библиотека wbase:

  1. Базовые оконные классы: Внутри библиотеки реализована собственная иерархия классов для управления окнами, формами, диалогами и панелями.
  2. Собственный менеджер компоновки (Layout Manager): Управляемый интерфейс 1С строится по декларативному принципу. Разработчик в конфигураторе не задает жесткие координаты элементов управления (кнопок, полей ввода, таблиц). Вместо этого он определяет структуру формы. Библиотека wbase динамически рассчитывает размеры и положение элементов «на лету» в зависимости от разрешения экрана, системного масштабирования и размера шрифтов.
  3. Попиксельный рендеринг: Большинство сложных элементов интерфейса (табличные части, планировщики, диаграммы, графики) рисуются кодом платформы вручную. Это позволяет оптимизировать отрисовку тяжелых динамических списков и обеспечивать идентичное поведение элементов управления на разных ОС.

2. Эволюция графического рендеринга под Windows

Поскольку исторически основной операционной системой для платформы «1С:Предприятие» являлась Windows, графические технологии развивались в рамках этой экосистемы. Проанализируем, как менялся подход к рендерингу:

Классический интерфейс (Обычные формы):

В версиях 1С 8.0, 8.1 и на обычных формах в 8.2 интерфейс отрисовывался с помощью стандартных системных графических интерфейсов Windows — GDI (Graphics Device Interface) и GDI+. Обычные формы жестко привязывались к пиксельной сетке. Из-за этого при изменении системного масштаба (DPI) элементы интерфейса часто «плыли», текст становился размытым или не помещался в границы кнопок.

Современный интерфейс «Такси» (Управляемые формы):

С выходом управляемых форм и интерфейса «Такси» разработчики платформы кардинально переработали графический движок. Для поддержки мониторов с высоким разрешением (Ultra HD, 4K) и обеспечения плавной анимации современная платформа 1С v8.3 под Windows задействует аппаратное ускорение.

Рендеринг в управляемом интерфейсе комбинирует низкоуровневые вызовы Direct2D и технологии Direct3D через контекст устройства DXGI. Это позволяет переложить часть задач по отрисовке шрифтов, сглаживанию векторных примитивов и масштабированию окон на графический процессор (видеокарту). Именно поэтому современные формы выглядят четко при любом масштабе операционной системы.

3. Нативный клиент под Linux: GTK+ и WebKit

С появлением полноценных клиентских приложений для операционных систем семейства Linux (Ubuntu, Debian, RedHat, Astra Linux) перед разработчиками 1С встала задача перенести C++ движок wbase на Unix-совместимые графические серверы (X11 и Wayland). Рассмотрим, как это было реализовано:

Интеграция с GTK+:

Для создания системных окон, обработки событий мыши, клавиатуры и системного фокуса нативный клиент 1С в Linux использует свободный кроссплатформенный фреймворк GTK+ (в зависимости от релиза платформы задействуются библиотеки GTK+ 2 или GTK+ 3). Системные окна 1С мимикрируют под оформление текущего оконного менеджера Linux за счет вызовов этого API.

Проблема WebKit и отображение HTML:

Для вывода форматированного текста, интерактивных отчетов и полей HTML-документов на Linux-клиенте используется библиотека WebKitGTK (исторически — пакет libwebkitgtk-3.0). Поскольку эта библиотека отвечает за рендеринг веб-содержимого внутри оконного приложения, стабильность работы клиента 1С напрямую зависит от нее.

Системные администраторы часто сталкиваются с тем, что в современных дистрибутивах Linux библиотека webkitgtk старых версий исключена из репозиториев по соображениям безопасности. Без нее нативный клиент 1С может аварийно завершать работу или не запускаться вовсе. Решается эта проблема ручной установкой совместимых пакетов или настройкой символических ссылок на библиотеки совместимости C++ (например, libstdc++.so.6).

4. Архитектура веб-клиента: HTML5, CSS3 и JavaScript

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

Когда пользователь открывает базу через веб-клиент:

  1. Сервер «1С:Предприятия» транслирует декларативное XML-описание управляемой формы в стандартное дерево элементов DOM (Document Object Model).
  2. Для стилизации элементов интерфейса генерируются файлы динамических стилей CSS3, которые обеспечивают визуальное соответствие интерфейсу «Такси».
  3. Вся интерактивная логика, включая обработчики событий элементов управления и клиентский код, написанный разработчиком, компилируется сервером «на лету» в оптимизированный код на языке JavaScript.

Для наглядности рассмотрим пример кода на встроенном языке 1С, который выполняется на клиенте:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ПеременнаяТекста = "Добро пожаловать в веб-клиент!";
    ПоказатьПредупреждение(, ПеременнаяТекста);
КонецПроцедуры

При запуске этой формы в веб-клиенте платформа преобразует данную процедуру в JavaScript-функцию, которая обращается к внутреннему JS-фреймворку 1С для вывода модального окна средствами HTML/CSS. Таким образом, в браузере за отрисовку интерфейса отвечают исключительно стандартные веб-технологии, поддерживаемые движками V8, WebKit или Gecko.

5. Будущее интерфейсов: Технология 1С:Элемент

В рамках новой ветки развития программных продуктов 1С (таких как «1С:Кабинет сотрудника», «1С:Шина» и др.) активно внедряется технология «1С:Элемент». Проанализируем ключевые отличия этой технологии от классических управляемых форм:

Подводя итог, можно утверждать, что графический интерфейс управляемых форм 1С — это сложная гибридная система. На десктопных ОС Windows и Linux она опирается на собственное высокопроизводительное C++ ядро wbase, тесно интегрированное с системными графическими API (Direct2D/GTK), а в браузерах трансформируется в классическое веб-приложение на базе HTML5 и JavaScript.

← На главную