Веб-клиент 1С:Предприятия 8.3 изнутри: от браузера до кластера и публикация на IIS и Apache

· 10 мин

Содержание

Веб-клиент 1С работает без установки платформы на компьютер пользователя: браузер загружает с веб-сервера готовое приложение на JavaScript, а все обращения к базе идут по HTTP(S) через модуль расширения веб-сервера (wsisapi.dll для IIS, wsap24.dll или wsap24.so для Apache 2.4). Чтобы он заработал, базу публикуют на веб-сервере: в Конфигураторе Администрирование → Публикация на веб-сервере или утилитой webinst.

Частое заблуждение — считать веб-клиент «упрощённой 1С для браузера». На деле это тот же клиент управляемого приложения, что и тонкий клиент: те же управляемые формы, те же права, та же серверная логика. Отличаются только среда выполнения клиентского кода и транспорт. Всё ниже относится к платформе 8.3 и не зависит от конфигурации — БП, ЗУП и УТ публикуются одинаково.

Путь запроса: браузер → веб-сервер → база

Цепочка всегда одна, меняется только последнее звено — где лежит база.

  1. Пользователь открывает адрес вида https://srv/buh/.
  2. Веб-сервер (IIS или Apache) видит, что адрес относится к публикации 1С, и передаёт запрос модулю расширения.
  3. Модуль читает файл default.vrd в каталоге публикации. В нём записана строка соединения с базой.
  4. Модуль подключается к базе и возвращает браузеру данные форм, а не готовый 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=&quot;srv1c&quot;;Ref=&quot;buh&quot;;">
</point>

Кавычки внутри атрибута ib записываются как &quot;. Если правите файл руками и ставите обычные кавычки, XML ломается, и публикация перестаёт открываться.

Чем веб-клиент похож на тонкий клиент и чем отличается

Тонкий клиент и веб-клиент — две реализации одной модели. Сервер хранит данные и выполняет серверные процедуры, клиент рисует управляемые формы и выполняет код с директивой &НаКлиенте.

Разница в том, кто исполняет клиентскую часть:

  • 🖥️ Тонкий клиент — программа 1cv8c.exe, установленная на компьютер. Работает с файлами, COM-объектами, внешними компонентами без ограничений браузера.
  • 🌐 Веб-клиент — код платформы на JavaScript, который выполняется внутри вкладки браузера. Ограничен песочницей браузера.

Отсюда практические следствия:

  • 📄 Обычные формы в веб-клиенте не открываются вообще. Старые конфигурации на обычном приложении через браузер не работают.
  • 📁 Чтобы сохранять и выбирать файлы, загружать документы и печатать без лишних окон, в браузер ставят «Расширение для работы с 1С:Предприятием». Платформа сама предлагает его установить при первом обращении к файлам.
  • 🔌 Внешние компоненты работают, только если у них есть версия для браузера. Многие драйверы торгового оборудования её не имеют.
  • ⏳ Модальные окна и синхронные вызовы браузеры не поддерживают. Типовые конфигурации на актуальных релизах написаны на асинхронных методах, а вот самописная доработка с Вопрос() вместо ПоказатьВопрос() может не работать.

Важная деталь: тот же адрес публикации принимает и тонкий клиент. В окне добавления базы выбирают «На веб-сервере» и указывают https://srv/buh. Пользователь получает полноценное приложение, а сеть по-прежнему видит только HTTPS. Для удалённых сотрудников это часто лучший компромисс, чем чистый браузер.

Публикация базы на IIS и Apache

Что подготовить заранее

  • ✅ На веб-сервер установлена платформа 1С той же разрядности, что и веб-сервер, с компонентом «Модули расширения веб-сервера».
  • ✅ Версия платформы на веб-сервере совпадает с версией кластера до последней цифры сборки. Иначе подключение отвергается с ошибкой несоответствия версий.
  • ✅ Для серверной базы — доступ с веб-сервера к портам кластера.
  • ✅ Конфигуратор запускается от имени администратора: публикация пишет в каталог веб-сервера и его настройки.

Публикация на IIS (Windows Server 2016 и новее)

  1. В «Диспетчере серверов» добавьте роль «Веб-сервер (IIS)». В компонентах разработки приложений отметьте «Расширения ISAPI» и «Фильтры ISAPI». В средствах управления — «Совместимость управления IIS 6», без неё Конфигуратор не видит IIS.
  2. Если платформа 32-разрядная, в пуле приложений DefaultAppPool включите «Разрешить 32-разрядные приложения». Для 64-разрядной платформы оставьте выключенным.
  3. Откройте базу в Конфигураторе от имени администратора: Администрирование → Публикация на веб-сервере.
  4. Укажите имя публикации (оно станет частью адреса, лучше латиницей: buh), веб-сервер «Internet Information Services» и каталог, например C:\inetpub\wwwroot\buh.
  5. Отметьте «Публиковать доступ для клиентских приложений» и при необходимости веб-сервисы и HTTP-сервисы конфигурации. Нажмите «Опубликовать».
  6. Для файловой базы дайте группе 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. Остальные параметры смотрите в справке самой утилиты.

Перед тем как дать адрес пользователям
Выполнено: 0 / 6

Скорость и возможности: веб-клиент против тонкого клиента

Оба клиента передают по сети данные форм, а не экраны, поэтому на слабом канале работают одинаково терпимо. Различие — в мощности клиентской стороны.

КритерийТонкий клиентВеб-клиент
УстановкаНужна платформа на каждом ПКНе нужна, только браузер
Открытие формБыстрее, метаданные кешируются на дискеМедленнее, зависит от браузера и ОЗУ
Обычные формыНет (только управляемые)Нет
Работа с файламиПолнаяЧерез расширение браузера
Торговое оборудование, 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 или брандмауэре, а не в публикации.

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

Нужна ли лицензия 1С для работы через веб-клиент?
Да. Каждый сеанс веб-клиента расходует клиентскую лицензию так же, как тонкий клиент. Отдельной «веб-лицензии» нет.
Можно ли опубликовать базу на обычных формах?
Опубликовать можно, но в браузере обычные формы не откроются. Такую базу через публикацию используют только из тонкого клиента в режиме управляемого приложения либо переводят на управляемые формы.
Какой веб-сервер выбрать: IIS или Apache?
На Windows Server проще IIS: он ставится ролью и поддерживает проверку подлинности Windows. На Linux вариант один — Apache 2.4. По скорости для 1С разницы практически нет.
Можно ли держать веб-сервер и сервер 1С на одной машине?
Можно, для небольших компаний это обычная схема. Разносить их стоит, когда веб-сервер смотрит в интернет: тогда в DMZ стоит только он, а кластер остаётся во внутренней сети.
Как открыть базу в браузере на английском интерфейсе?
Язык интерфейса задаётся языком пользователя в настройках информационной базы и языками, доступными в конфигурации. Если в конфигурации есть английский, смените язык у пользователя.