Веб-клиент 1С изнутри: браузер, веб-сервер и кластер
Содержание
Веб-клиент 1С работает так: браузер загружает с веб-сервера клиентскую часть платформы на JavaScript, а все обращения к базе передаёт по HTTP(S) модулю расширения веб-сервера 1С. Этот модуль сам открывает файловую базу или подключается к кластеру серверов 1С. На компьютер пользователя ничего не ставится, нужен только браузер и адрес публикации.
Выбор между клиентами простой. Тонкий клиент — для тех, кто работает в базе весь день. Веб-клиент — для удалённых сотрудников, планшетов, macOS без установленной платформы и разовых входов. Толстый клиент нужен только для обычных форм и Конфигуратора. Тема общая для платформы 8.3 и не зависит от конфигурации: БП, ЗУП и УТ публикуются одинаково.
Из чего состоит схема работы веб-клиента
В цепочке четыре звена. Если хотя бы одно не настроено, пользователь видит пустую страницу или ошибку подключения.
| Звено | Что делает | Где живёт |
|---|---|---|
| 🌐 Браузер | Рисует формы, выполняет клиентский код (&НаКлиенте) | Компьютер пользователя |
| 🖥 Веб-сервер | Принимает HTTP(S)-запросы, шифрует, сжимает | IIS или Apache |
| 🔌 Модуль расширения веб-сервера 1С | Переводит запросы браузера в вызовы платформы | Внутри процесса веб-сервера |
| 🗄 Информационная база | Выполняет серверный код, хранит данные | Файл 1Cv8.1CD или кластер 1С + СУБД |
Что происходит при открытии документа:
- Пользователь вводит адрес вида
https://srv/buh/ru_RU/. - Веб-сервер по пути
/buhнаходит публикацию и передаёт запрос модулю 1С. - Модуль читает файл
default.vrdв каталоге публикации и узнаёт строку подключения к базе. - Браузер получает клиентскую часть платформы и метаданные форм.
- Каждый серверный вызов (
&НаСервере, запись, проведение, отчёт) уходит отдельным HTTP-запросом на веб-сервер, оттуда — в базу.
Файловый и клиент-серверный режим
В файловом режиме модуль расширения сам работает с файлом базы. Фактически серверная часть 1С выполняется внутри процесса веб-сервера. Поэтому учётной записи, под которой работает IIS или Apache, нужны права на чтение и запись в каталог базы.
В клиент-серверном режиме модуль ведёт себя как обычный клиент 1С. Он обращается к агенту сервера (порт 1540), затем к менеджеру кластера (1541) и рабочим процессам. Серверный код выполняется в rphost, данные лежат в СУБД. Веб-сервер можно поставить на отдельную машину, в том числе в DMZ.
Для 10+ одновременных пользователей файловая база за веб-сервером работает заметно хуже. Блокировки файла и общий процесс веб-сервера становятся узким местом. Для такой нагрузки нужен кластер.
Публикация базы: модуль расширения и роль IIS или Apache
Сам по себе IIS или Apache не умеет говорить с 1С. Связь даёт модуль расширения веб-сервера, который ставится вместе с платформой. В установщике это компонент «Модули расширения веб-сервера» — его надо отметить явно, по умолчанию он не выбран.
| Веб-сервер | Файл модуля | Где подключается |
|---|---|---|
| IIS | wsisapi.dll | Обработчик в настройках сайта IIS |
| Apache 2.4 (Windows) | wsap24.dll | Строка LoadModule в httpd.conf |
| Apache 2.4 (Linux) | wsap24.so | Строка LoadModule в конфиге Apache |
Публикация из Конфигуратора
- Запустите Конфигуратор от имени администратора Windows — иначе публикация не сможет записать файлы в каталог веб-сервера и в его конфигурацию.
- Откройте
Администрирование → Публикация на веб-сервере. - Укажите имя публикации (оно станет частью адреса), веб-сервер и каталог.
- Отметьте, что публикуется: доступ для клиентских приложений, веб-сервисы, HTTP-сервисы, стандартный интерфейс OData.
- Нажмите «Опубликовать» и перезапустите веб-сервер, если Конфигуратор предложит.
Публикация из командной строки
На сервере без графики или при массовой публикации удобнее утилита webinst из каталога bin платформы:
webinst -publish -apache24 -wsdir buh -dir "C:\inetpub\buh" ^
-connstr "Srvr=srv1c;Ref=buh;" -confpath "C:\Apache24\conf\httpd.conf"
Для IIS вместо -apache24 и -confpath указывают ключ -iis. Удаление публикации — ключ -delete.
Что хранит default.vrd
Файл default.vrd — паспорт публикации. В нём строка подключения к базе (ib=), путь публикации (base=) и признаки того, какие сервисы включены. Минимальный пример для серверной базы:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
base="/buh"
ib="Srvr="srv1c";Ref="buh";">
</point>
По адресу публикации платформа разносит разные виды доступа:
- 🖥
/e1cib/— служебные запросы самого веб-клиента и тонкого клиента по HTTP; - 🔗
/hs/— HTTP-сервисы конфигурации; - 📨
/ws/— веб-сервисы SOAP; - 📊
/odata/standard.odata/— стандартный интерфейс OData.
Одна публикация обслуживает и браузер, и тонкий клиент. В тонком клиенте базу добавляют с типом расположения «На веб-сервере» и тем же адресом.
Веб-клиент, тонкий и толстый клиент: в чём разница
Код конфигурации один и тот же, но возможности клиентов различаются. Разница проявляется в работе с файлами, оборудованием и внешними компонентами.
| Признак | Веб-клиент | Тонкий клиент | Толстый клиент |
|---|---|---|---|
| Установка на ПК | Не нужна | Нужна | Нужна |
| Интерфейс | Только управляемые формы | Только управляемые формы | Управляемые и обычные формы |
| Подключение | Только через веб-сервер | Напрямую или через веб-сервер | Напрямую |
| Где выполняется клиентский код | В браузере | В приложении 1С | В приложении 1С |
| COM-объекты на клиенте | Нет | Да (Windows) | Да |
| Работа с файлами на ПК | Через расширение браузера | Полностью | Полностью |
| Конфигуратор | Нет | Нет | Запуск из того же дистрибутива |
Практические следствия:
- 📁 Для выгрузки и загрузки файлов, работы с электронной подписью и некоторых внешних компонент в браузере ставят «Расширение для работы с файлами 1С:Предприятия». Платформа сама предлагает его установить при первом обращении.
- 🖨 Торговое оборудование и сканеры штрихкодов, подключённые через внешние компоненты, в браузере работают не все. Если компонента выпущена только под Windows-приложение, на кассовом месте нужен тонкий клиент.
- 🪟 Обычные формы и старые конфигурации на обычном приложении в веб-клиенте не открываются вовсе.
- 🧩 Модальные окна браузер не любит. Конфигурации на современных релизах написаны без модальности, а самописные доработки с
Вопрос()вместоПоказатьВопрос()в веб-клиенте выдают ошибку.
Лицензии
Веб-клиент потребляет клиентскую лицензию так же, как тонкий клиент. Но получает её не компьютер пользователя, а серверная сторона: кластер 1С или, в файловом режиме, модуль расширения на веб-сервере. Поэтому USB-ключ, воткнутый в ноутбук пользователя, для веб-клиента бесполезен. Ключ или программная лицензия должны быть доступны серверу.
Скорость работы веб-клиента и как её поднять
Браузер выполняет интерфейс медленнее, чем родное приложение. Основные потери — на сетевых задержках: каждая кнопка, которая обращается к серверу, это отдельный HTTP-запрос.
Что влияет больше всего:
- Пинг до веб-сервера. При задержке 100+ мс серверные вызовы складываются в ощутимые секунды на каждой форме. Веб-сервер ставят ближе к пользователям или к серверу 1С, в зависимости от того, где длиннее канал.
- Число серверных вызовов в формах. Доработка, которая в цикле вызывает
&НаСерверепо каждой строке таблицы, в тонком клиенте почти незаметна, а в браузере тормозит. Решение — собрать данные одним вызовом, а для расчётов без формы использовать&НаСервереБезКонтекста. - Ресурсы веб-сервера. В файловом режиме серверный код крутится прямо в процессе IIS или Apache. Здесь важны память и процессор машины с веб-сервером.
- Браузер. Свежие версии Chrome, Firefox, Edge, Яндекс Браузера и Safari работают быстрее старых. Десятки открытых вкладок с 1С отнимают память у каждой.
Что настроить на веб-сервере:
- 🗜 Включите сжатие ответов (gzip) — статические файлы веб-клиента и данные форм сжимаются хорошо.
- 🔁 Оставьте включённым keep-alive: повторное установление TLS-соединения на каждый запрос добавляет задержку.
- 📦 Не выключайте кеширование статических файлов в браузере. После обновления платформы веб-клиент сам загрузит новые файлы.
Если медленно работает и тонкий клиент, проблема не в браузере. Ищите её на сервере 1С: тяжёлые запросы, блокировки, нехватка памяти у rphost.
Безопасность публикации и права доступа
Публикация в интернет — это вход в базу для всех, кто знает адрес. Защита строится на трёх уровнях: канал, веб-сервер, сама 1С.
Канал
- 🔒 Работайте только по HTTPS. Сертификат ставится средствами IIS или Apache, 1С в этом не участвует. Бесплатный сертификат Let’s Encrypt подходит.
- 🚪 Не открывайте наружу порты кластера 1С (1540, 1541 и диапазон рабочих процессов). Наружу смотрит только 443 веб-сервера.
Веб-сервер
- Ограничьте доступ по IP-адресам или поставьте публикацию за VPN, если удалённых пользователей немного.
- Добавьте вторую ступень авторизации на уровне веб-сервера (базовая аутентификация или Windows-аутентификация в IIS), если база открыта в интернет без VPN.
- Учётной записи, под которой работает веб-сервер, давайте права только на каталог публикации и, в файловом режиме, на каталог базы.
Сама публикация
- ⚠️ Не прописывайте логин и пароль пользователя 1С в
default.vrdи в адресе страницы. Такая публикация пускает в базу любого посетителя под этим пользователем. - Публикуйте только то, что нужно. Если OData и веб-сервисы не используются, снимите их флажки при публикации.
- У каждого пользователя должен быть пароль. Включите требования к сложности и сроку действия паролей в настройках пользователей конфигурации.
- Права в базе работают как обычно: веб-клиент видит ровно то, что разрешают роли пользователя. Отдельных «веб-прав» нет.
Пользователь без пароля в опубликованной в интернет базе — открытая дверь. Перед публикацией проверьте список пользователей и снимите галочку «Показывать в списке выбора».
Ошибки веб-клиента и как их устранить
Большая часть проблем возникает в двух ситуациях: при первой публикации и после обновления платформы.
Ещё три приёма, которые экономят время диагностики:
- Откройте адрес публикации с самого веб-сервера (
http://localhost/buh/ru_RU/). Если локально работает, а снаружи нет — смотрите брандмауэр, прокси и сертификат, а не 1С. - Подключите к той же публикации тонкий клиент с типом «На веб-сервере». Ошибка повторилась — проблема в публикации или базе, нет — в браузере.
- Проверьте журнал ошибок веб-сервера: для Apache это
logs\error.log, для IIS — журналы сайта и журнал событий Windows.
Перезапуск IIS или Apache обрывает все сеансы веб-клиента и тонких клиентов, подключённых через HTTP. Делайте это вне рабочего времени или предупредите пользователей.
Частые вопросы
Можно ли работать в веб-клиенте 1С с телефона?
Нужна ли отдельная лицензия на веб-сервер?
Почему в веб-клиенте не работает выгрузка в файл?
Можно ли опубликовать несколько баз на одном веб-сервере?
/buh, /zup, /ut.Работает ли веб-клиент на Linux и macOS?
wsap24.so.