Веб-клиент 1С:Предприятия 8.3 изнутри: от браузера до кластера и публикация на IIS и Apache
Содержание
Веб-клиент 1С работает без установки платформы на компьютер пользователя: браузер загружает с веб-сервера готовое приложение на JavaScript, а все обращения к базе идут по HTTP(S) через модуль расширения веб-сервера (wsisapi.dll для IIS, wsap24.dll или wsap24.so для Apache 2.4). Чтобы он заработал, базу публикуют на веб-сервере: в Конфигураторе Администрирование → Публикация на веб-сервере или утилитой webinst.
Частое заблуждение — считать веб-клиент «упрощённой 1С для браузера». На деле это тот же клиент управляемого приложения, что и тонкий клиент: те же управляемые формы, те же права, та же серверная логика. Отличаются только среда выполнения клиентского кода и транспорт. Всё ниже относится к платформе 8.3 и не зависит от конфигурации — БП, ЗУП и УТ публикуются одинаково.
Путь запроса: браузер → веб-сервер → база
Цепочка всегда одна, меняется только последнее звено — где лежит база.
- Пользователь открывает адрес вида
https://srv/buh/. - Веб-сервер (IIS или Apache) видит, что адрес относится к публикации 1С, и передаёт запрос модулю расширения.
- Модуль читает файл
default.vrdв каталоге публикации. В нём записана строка соединения с базой. - Модуль подключается к базе и возвращает браузеру данные форм, а не готовый HTML страницы.
Дальше всё зависит от варианта работы базы.
| Вариант базы | Строка в default.vrd | Где выполняется серверный код |
|---|---|---|
| Файловая | File="D:\Bases\Buh"; | В процессе веб-сервера, на его компьютере |
| Клиент-серверная | Srvr=srv1c;Ref=buh; | В рабочих процессах кластера 1С |
В файловом варианте модуль веб-сервера сам открывает файл 1Cv8.1CD. Поэтому учётной записи, под которой работает веб-сервер, нужны права на чтение и запись в каталог базы.
В клиент-серверном варианте модуль ведёт себя как обычный клиент кластера. Он обращается к агенту сервера (порт 1540), тот передаёт его менеджеру кластера (1541), а данные идут через рабочие процессы. Порты рабочих процессов берутся из диапазона, заданного в свойствах рабочего сервера. Между веб-сервером и сервером 1С эти порты должны быть открыты.
Наружу, в интернет, открывают только 443 (или 80) на веб-сервере. Порты кластера 1540-1541 и диапазон рабочих процессов остаются во внутренней сети. В этом главный плюс публикации с точки зрения сети.
Пример содержимого default.vrd для серверной базы:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/buh"
ib="Srvr="srv1c";Ref="buh";">
</point>
Кавычки внутри атрибута ib записываются как ". Если правите файл руками и ставите обычные кавычки, XML ломается, и публикация перестаёт открываться.
Чем веб-клиент похож на тонкий клиент и чем отличается
Тонкий клиент и веб-клиент — две реализации одной модели. Сервер хранит данные и выполняет серверные процедуры, клиент рисует управляемые формы и выполняет код с директивой &НаКлиенте.
Разница в том, кто исполняет клиентскую часть:
- 🖥️ Тонкий клиент — программа
1cv8c.exe, установленная на компьютер. Работает с файлами, COM-объектами, внешними компонентами без ограничений браузера. - 🌐 Веб-клиент — код платформы на JavaScript, который выполняется внутри вкладки браузера. Ограничен песочницей браузера.
Отсюда практические следствия:
- 📄 Обычные формы в веб-клиенте не открываются вообще. Старые конфигурации на обычном приложении через браузер не работают.
- 📁 Чтобы сохранять и выбирать файлы, загружать документы и печатать без лишних окон, в браузер ставят «Расширение для работы с 1С:Предприятием». Платформа сама предлагает его установить при первом обращении к файлам.
- 🔌 Внешние компоненты работают, только если у них есть версия для браузера. Многие драйверы торгового оборудования её не имеют.
- ⏳ Модальные окна и синхронные вызовы браузеры не поддерживают. Типовые конфигурации на актуальных релизах написаны на асинхронных методах, а вот самописная доработка с
Вопрос()вместоПоказатьВопрос()может не работать.
Важная деталь: тот же адрес публикации принимает и тонкий клиент. В окне добавления базы выбирают «На веб-сервере» и указывают https://srv/buh. Пользователь получает полноценное приложение, а сеть по-прежнему видит только HTTPS. Для удалённых сотрудников это часто лучший компромисс, чем чистый браузер.
Публикация базы на IIS и Apache
Что подготовить заранее
- ✅ На веб-сервер установлена платформа 1С той же разрядности, что и веб-сервер, с компонентом «Модули расширения веб-сервера».
- ✅ Версия платформы на веб-сервере совпадает с версией кластера до последней цифры сборки. Иначе подключение отвергается с ошибкой несоответствия версий.
- ✅ Для серверной базы — доступ с веб-сервера к портам кластера.
- ✅ Конфигуратор запускается от имени администратора: публикация пишет в каталог веб-сервера и его настройки.
Публикация на IIS (Windows Server 2016 и новее)
- В «Диспетчере серверов» добавьте роль «Веб-сервер (IIS)». В компонентах разработки приложений отметьте «Расширения ISAPI» и «Фильтры ISAPI». В средствах управления — «Совместимость управления IIS 6», без неё Конфигуратор не видит IIS.
- Если платформа 32-разрядная, в пуле приложений
DefaultAppPoolвключите «Разрешить 32-разрядные приложения». Для 64-разрядной платформы оставьте выключенным. - Откройте базу в Конфигураторе от имени администратора:
Администрирование → Публикация на веб-сервере. - Укажите имя публикации (оно станет частью адреса, лучше латиницей:
buh), веб-сервер «Internet Information Services» и каталог, напримерC:\inetpub\wwwroot\buh. - Отметьте «Публиковать доступ для клиентских приложений» и при необходимости веб-сервисы и HTTP-сервисы конфигурации. Нажмите «Опубликовать».
- Для файловой базы дайте группе
IIS_IUSRS(иIUSR) права «Изменение» на каталог базы. Права на чтение нужны также на каталогbinплатформы.
Публикация на Apache 2.4
Конфигуратор умеет публиковать и на Apache: выбираете «Apache 2.4» и путь к httpd.conf. Под капотом он дописывает в конфиг такие строки:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1586/bin/wsap24.dll"
# 1c publication
Alias "/buh" "C:/Apache24/htdocs/buh/"
<Directory "C:/Apache24/htdocs/buh/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/Apache24/htdocs/buh/default.vrd"
</Directory>
Номер версии в пути LoadModule здесь для примера — подставьте свою. На Linux модуль называется wsap24.so и лежит в каталоге платформы, обычно /opt/1cv8/x86_64/<версия>/. После правки перезапустите Apache: systemctl restart apache2 (Debian/Ubuntu) или systemctl restart httpd (RHEL-подобные).
Перезапуск веб-сервера обрывает все текущие сеансы веб-клиента и тонких клиентов, подключённых через HTTP. Делайте это вне рабочего времени или предупредите пользователей.
Публикация из командной строки: webinst
На сервере без графического Конфигуратора или в скрипте обновления удобнее утилита webinst из каталога bin платформы:
webinst -publish -apache24 -wsdir buh -dir "C:\Apache24\htdocs\buh" -connstr "Srvr=srv1c;Ref=buh;" -confpath "C:\Apache24\conf\httpd.conf"
Для IIS вместо -apache24 указывают -iis, а -confpath не нужен. Удаляют публикацию ключом -delete. Остальные параметры смотрите в справке самой утилиты.
Скорость и возможности: веб-клиент против тонкого клиента
Оба клиента передают по сети данные форм, а не экраны, поэтому на слабом канале работают одинаково терпимо. Различие — в мощности клиентской стороны.
| Критерий | Тонкий клиент | Веб-клиент |
|---|---|---|
| Установка | Нужна платформа на каждом ПК | Не нужна, только браузер |
| Открытие форм | Быстрее, метаданные кешируются на диске | Медленнее, зависит от браузера и ОЗУ |
| Обычные формы | Нет (только управляемые) | Нет |
| Работа с файлами | Полная | Через расширение браузера |
| Торговое оборудование, COM | Да | Ограниченно |
| Доступ с macOS, Linux, планшета | Есть сборки под Linux и macOS | Любой поддерживаемый браузер |
| Обновление платформы | На каждом ПК | Только на веб-сервере |
Практические наблюдения:
- 🐢 Первое открытие базы в браузере всегда медленнее: грузится код платформы. Повторные входы быстрее за счёт кеша браузера.
- 💾 Вкладка с 1С на тяжёлой конфигурации занимает заметный объём памяти. На ПК с 4 ГБ ОЗУ и десятком открытых вкладок это ощущается.
- 🔄 Большие отчёты формируются на сервере, поэтому их скорость от типа клиента почти не зависит. Тормозить в браузере начинает вывод огромного табличного документа на экран.
- 🧩 Файловая база через веб-сервер — разумный выбор для 3-5 человек. Дальше выгоднее перейти на клиент-серверный вариант: в файловом режиме все обращения идут через один процесс веб-сервера.
Если пользователи весь день сидят в 1С, ставьте им тонкий клиент, подключённый к той же публикации. Веб-клиент оставьте для редких входов, гостевых рабочих мест и сотрудников на своей технике.
Защита опубликованной базы и права пользователей
Публикация — это база, доступная по сети. Чем шире круг адресов, с которых она видна, тем серьёзнее защита.
Шифрование канала
Без HTTPS логин и пароль 1С идут открытым текстом. Сертификат ставится на веб-сервер, а не в 1С:
- в IIS — привязка
httpsк сайту в разделе «Привязки»; - в Apache — модуль
mod_sslи виртуальный хост на 443 порту; - для внутреннего сервера подойдёт сертификат корпоративного центра сертификации, для внешнего — Let’s Encrypt или коммерческий.
Права остаются в 1С
Веб-сервер не обходит права конфигурации. Пользователь видит в браузере ровно то, что разрешают его роли. Отдельно стоит проверить права на корень конфигурации: там есть флажки «Веб-клиент», «Тонкий клиент», «Толстый клиент», «Внешнее соединение». Сняв «Веб-клиент» в роли, вы запретите вход через браузер, не трогая тонкий клиент.
Аутентификация
- 🔐 Аутентификация 1С — логин и пароль в окне входа. Задайте пароли всем пользователям, особенно администратору: пользователь без пароля из интернета — открытая дверь.
- 🪟 Аутентификация ОС — в IIS включите проверку подлинности Windows для публикации, у пользователя 1С отметьте вход через ОС и привяжите доменную учётную запись. Пароль 1С тогда не нужен.
- 🚫 Не публикуйте адреса с логином и паролем в параметрах строки запуска. Они оседают в истории браузера и журналах веб-сервера.
Что ещё закрыть
- Ограничьте доступ к публикации по IP-адресам или выведите её за VPN, если внешним сотрудникам хватает VPN.
- Не публикуйте веб-сервисы и HTTP-сервисы, если они не используются: каждый лишний вход — лишняя поверхность атаки.
- Для файловой базы у учётной записи веб-сервера должны быть права только на каталог этой базы, а не на весь диск.
Ошибки публикации и как их разобрать
Почти все сбои укладываются в четыре группы: модуль не загрузился, нет доступа к базе, не совпали версии, проблема на стороне браузера.
После каждого обновления платформы на сервере 1С повторяйте публикацию: путь к модулю в httpd.conf или в обработчиках IIS содержит номер сборки. Удобнее держать команду webinst в том же скрипте, которым обновляете платформу.
Перед диагностикой «на стороне 1С» откройте адрес публикации прямо на веб-сервере. Если локально работает, а с рабочего места нет — проблема в сети, DNS или брандмауэре, а не в публикации.