Доступ к 1С через браузер: публикуем базу на IIS и Apache

· 10 мин

Содержание

Чтобы опубликовать базу 1С на веб-сервере, нужны три вещи: установленный IIS или Apache, компонент платформы «Модули расширения веб-сервера» и сама публикация. Её делают в конфигураторе через Администрирование → Публикация на веб-сервере или утилитой webinst. После этого база открывается в браузере по адресу вида http://server/buh/.

Частое заблуждение: «опубликовать базу» — значит скопировать её файлы в папку сайта. Нет. В каталог публикации кладётся только маленький файл default.vrd со строкой подключения. Сама база остаётся на месте: в файловом каталоге или на сервере 1С. Веб-сервер лишь передаёт запросы браузера платформе через свой модуль расширения.

Как устроен веб-доступ к 1С и что подготовить

Схема простая. Браузер или тонкий клиент обращается к веб-серверу по HTTP или HTTPS. Модуль расширения 1С внутри IIS или Apache читает default.vrd, подключается к базе и отдаёт клиенту формы. Для клиент-серверной базы модуль идёт к агенту сервера 1С (порт 1540), а дальше — к менеджеру кластера и рабочим процессам. Порты рабочих процессов задаются в свойствах рабочего сервера.

Что проверить до начала работ:

  • 🖥️ Веб-сервер. На Windows — IIS (входит в Windows Server, отдельно не покупается) или Apache 2.4. На Linux — Apache 2.4.
  • 🧩 Модули расширения веб-сервера. Это отдельный компонент установщика платформы. По умолчанию он не ставится — именно его чаще всего забывают.
  • 🔢 Совпадение версий. Версия модулей на веб-сервере должна совпадать с версией сервера 1С до последней цифры. Если сервер 1С на 8.3.24.1467, модули тоже должны быть 8.3.24.1467.
  • 🧮 Разрядность. 64-битный Apache загружает только 64-битный модуль, 32-битный — только 32-битный. В IIS разрядность модуля должна совпадать с режимом пула приложений.
  • 🔑 Лицензии. Сеанс веб-клиента расходует клиентскую лицензию так же, как тонкий клиент. Отдельной «веб-лицензии» нет, но и бесплатным доступ через браузер не становится.
  • 👤 Пользователи в базе. В списке пользователей должен быть хотя бы один с паролем. Без пользователей любой, кто откроет адрес, попадёт в базу без входа.

Для файловой базы публикация тоже работает. Но учётная запись веб-сервера должна иметь права на изменение каталога базы. Для доступа нескольких человек из интернета разумнее клиент-серверный вариант.

Как поставить модули расширения веб-сервера

  1. Запустите установщик той же версии платформы, что и на сервере 1С (setup.exe в дистрибутиве Windows).
  2. Выберите «Изменить», если платформа уже установлена.
  3. Отметьте компонент «Модули расширения веб-сервера» и завершите установку.

На Linux модули входят в общий установщик платформы как отдельный компонент. В старых сборках с пакетами .deb и .rpm это пакет со словом ws в имени. После установки в каталоге /opt/1cv8/x86_64/<версия>/ появятся wsap24.so и утилита webinst.

Публикация базы через конфигуратор или webinst

Публикацию создают двумя способами. Результат одинаковый: каталог с default.vrd и записи в настройках веб-сервера.

СпособКогда удобенНа что обратить внимание
КонфигураторWindows, разовая публикация, есть рабочий стол на сервереЗапуск только от имени администратора
Утилита webinstLinux, сервер без графики, скрипты, много базНужно точно указать пути и строку подключения

Через конфигуратор

  1. Откройте конфигуратор на машине, где стоит веб-сервер. Запустите его правой кнопкой → «Запуск от имени администратора». Без повышенных прав запись в настройки IIS или httpd.conf не пройдёт.
  2. Откройте Администрирование → Публикация на веб-сервере.
  3. В поле «Имя» укажите короткое имя латиницей, например buh. Оно станет частью адреса.
  4. В поле «Веб-сервер» выберите IIS или нужную версию Apache. Если список пуст, значит модули расширения не установлены или нет веб-сервера.
  5. «Каталог» — папка публикации, например C:\inetpub\wwwroot\buh.
  6. Оставьте флажок публикации тонкого клиента и веб-клиента. OData, HTTP- и веб-сервисы включайте только если они действительно используются.
  7. Нажмите «Опубликовать». Если веб-сервер Apache, после публикации его нужно перезапустить.

Через webinst

Утилита лежит в каталоге bin платформы. Пример для IIS и клиент-серверной базы:

cd "C:\Program Files\1cv8\8.3.24.1467\bin"
webinst.exe -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "Srvr=srv1c;Ref=buh;"

Для файловой базы строка подключения другая: -connstr "File=D:\Bases\buh;". Удаляют публикацию ключом -delete с тем же -wsdir.

Готовый 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;;"/>

В default.vrd можно прописать логин и пароль пользователя 1С, чтобы вход был без запроса. Для публикации, доступной из интернета, так делать нельзя — любой, кто узнает адрес, войдёт в базу под этим пользователем.

Настройка IIS для публикации 1С

IIS — самый частый выбор на Windows Server: он уже в системе и управляется из привычной оснастки. Публикацию на IIS нужно подготовить заранее, иначе конфигуратор создаст каталог, а браузер покажет ошибку.

Установка роли

  1. Откройте «Диспетчер серверов» → «Добавить роли и компоненты».
  2. Отметьте роль «Веб-сервер (IIS)».
  3. В службах роли раскройте «Разработка приложений» и отметьте «Расширения ISAPI» и «Фильтры ISAPI».
  4. Если нужен вход в 1С по учётной записи Windows, в разделе «Безопасность» отметьте «Проверка подлинности Windows».
  5. Завершите установку и только потом публикуйте базу.

Права и пул приложений

После публикации в IIS появится приложение с именем buh и обработчик, указывающий на wsisapi.dll из каталога bin платформы. Дальше два обязательных шага.

Права на каталоги. Группе IIS_IUSRS нужны права на чтение и выполнение:

  • на каталог публикации (C:\inetpub\wwwroot\buh);
  • на каталог bin платформы (C:\Program Files\1cv8\8.3.24.1467\bin);
  • для файловой базы — права на изменение каталога с базой.

Разрядность пула. Откройте в диспетчере IIS «Пулы приложений» → пул, в котором работает публикация → «Дополнительные параметры». Параметр «Разрешены 32-разрядные приложения» ставят в True, только если модули 1С 32-битные. Для 64-битной платформы оставьте False.

Отдельный пул под 1С удобнее, чем общий DefaultAppPool. Его можно перезапустить, не задевая другие сайты на сервере. Перезапуск пула обрывает текущие сеансы веб-клиентов, поэтому делайте его, когда пользователи не работают.

Публикация базы 1С на Apache в Windows и Linux

Apache выбирают на Linux и там, где IIS не хочется ставить. Поддерживается версия 2.4, модуль называется wsap24.dll в Windows и wsap24.so в Linux.

Apache на Windows

  1. Скачайте сборку Apache 2.4 той же разрядности, что и платформа, и распакуйте, например в C:\Apache24.
  2. Зарегистрируйте службу: C:\Apache24\bin\httpd.exe -k install в командной строке от имени администратора.
  3. Убедитесь, что порт 80 не занят IIS или другой программой.
  4. Опубликуйте базу конфигуратором (веб-сервер «Apache 2.4») или командой:
webinst.exe -publish -apache24 -wsdir buh -dir "C:\Apache24\htdocs\buh" -connstr "Srvr=srv1c;Ref=buh;" -confpath "C:\Apache24\conf\httpd.conf"

В конец httpd.conf добавится блок примерно такого вида:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1467/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 должна быть одна на весь файл, даже если опубликовано десять баз. Блоков Alias и Directory — по одному на каждую базу.

Apache на Linux

На Debian и Ubuntu основной файл настроек — /etc/apache2/apache2.conf, на RHEL-подобных — /etc/httpd/conf/httpd.conf. Пример для Ubuntu:

sudo mkdir -p /var/www/buh
sudo /opt/1cv8/x86_64/8.3.24.1467/webinst -publish -apache24 -wsdir buh \
  -dir /var/www/buh -connstr "Srvr=srv1c;Ref=buh;" \
  -confpath /etc/apache2/apache2.conf
sudo chown -R www-data:www-data /var/www/buh
sudo apachectl configtest
sudo systemctl restart apache2

Команда apachectl configtest проверяет синтаксис до перезапуска. Если она пишет Syntax OK, перезапускайте службу. Перезапуск Apache обрывает открытые сеансы веб-клиента — выбирайте время, когда в базе никого нет.

После обновления платформы путь в LoadModule указывает на старую версию. Его нужно исправить вручную или переопубликовать базу, иначе получите несовпадение версий клиента и сервера.

Как подключиться к опубликованной базе

Веб-клиент. Откройте в браузере адрес http://имя-сервера/buh/. Подходят актуальные Chrome, Firefox, Edge и Safari. Разрешите для сайта всплывающие окна — 1С открывает в них часть форм и отчётов.

Тонкий клиент через веб-сервер. Удобен, если веб-клиент кажется медленным или нужны функции, недоступные в браузере:

  1. В окне запуска 1С нажмите «Добавить».
  2. Выберите добавление существующей информационной базы.
  3. Тип расположения — «На веб-сервере», адрес — http://имя-сервера/buh/.

Такой тонкий клиент не требует открывать наружу порты кластера 1С. Всё идёт через 80 или 443 порт веб-сервера.

Ошибки публикации и медленная работа веб-клиента

Большинство проблем после публикации укладываются в несколько симптомов. Ниже — что означает каждый и куда смотреть.

Диагностика: выберите симптом

Если база в браузере работает медленно

  • 🌐 Сеть. Веб-клиент чувствителен к задержкам. Медленные формы на удалённом канале часто лечатся переходом на тонкий клиент через тот же адрес.
  • 🧱 Сервер рядом с кластером. Веб-сервер лучше держать в той же локальной сети, что и сервер 1С. Каждая операция — это обмен между ними.
  • 🔄 Перезапуски пула. В IIS по умолчанию пул периодически перезапускается. Если пользователи жалуются на внезапные обрывы, проверьте расписание переработки пула в его дополнительных параметрах.
  • 🧹 Кэш браузера. После обновления конфигурации часть пользователей видит старые формы. Помогает очистка кэша браузера или вход в режиме инкогнито для проверки.

Безопасность публикации и HTTPS

Публикация, открытая в интернет по HTTP, передаёт логины и пароли пользователей 1С открытым текстом. Для внешнего доступа HTTPS обязателен.

Включение HTTPS

IIS. Импортируйте сертификат в хранилище сервера. В диспетчере IIS выберите сайт → «Привязки» → «Добавить», тип https, порт 443, укажите сертификат. После проверки уберите привязку на порт 80 или настройте с него перенаправление.

Apache. Подключите модуль mod_ssl и опишите виртуальный хост на 443 порту с путями к сертификату и ключу. На Linux бесплатный сертификат Let’s Encrypt удобно получать через certbot — он сам пропишет настройки и продление.

Тонкому клиенту адрес указывают уже с https://. Если сертификат самоподписанный, клиент 1С будет ругаться на него — для внешнего доступа берите сертификат от доверенного центра.

Что ещё закрыть

  1. 🔒 Наружу открывайте только 443 порт веб-сервера. Порты кластера 1С (1540, 1541 и диапазон рабочих процессов) из интернета быть доступны не должны.
  2. 👥 У каждого пользователя 1С — свой пароль. Пользователь «Администратор» без пароля в опубликованной базе — прямой путь к утечке.
  3. 📡 Не публикуйте OData, HTTP- и веб-сервисы «на всякий случай». Каждый лишний интерфейс — ещё одна точка входа.
  4. 🗂️ Не используйте общий каталог wwwroot для чужих сайтов и публикаций 1С. Отдельная папка и отдельный пул упрощают права.
  5. 🧭 Если доступ нужен только сотрудникам, ограничьте его по IP или пустите людей через VPN, а публикацию оставьте во внутренней сети.

Вход по учётной записи Windows настраивается в свойствах пользователя 1С (флажок аутентификации операционной системы) и в публикации. Для IIS дополнительно нужна служба роли «Проверка подлинности Windows». В локальной сети домена это избавляет от ввода пароля.

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

Можно ли опубликовать файловую базу 1С?
Да. В строке подключения указывают File= и путь к каталогу базы. Учётной записи веб-сервера нужны права на изменение этого каталога. Для большого числа пользователей лучше клиент-серверный вариант.
Нужна ли отдельная лицензия для веб-клиента?
Нет, используются обычные клиентские лицензии. Один сеанс веб-клиента занимает одну лицензию, как и тонкий клиент.
Можно ли опубликовать несколько баз на одном веб-сервере?
Да. Каждой базе — своё имя публикации и свой каталог: /buh/, /zup/, /ut/. Модуль расширения загружается один раз на весь веб-сервер.
Что делать с публикацией после обновления платформы?
Установить модули расширения новой версии и переопубликовать базы. В Apache обязательно проверьте путь в строке LoadModule — он содержит номер версии.
Можно ли поставить веб-сервер на отдельную машину, не на сервер 1С?
Можно. На ней нужны веб-сервер и модули расширения той же версии, что и сервер 1С, и сетевой доступ к портам кластера.