Доступ к 1С через браузер: публикуем базу на IIS и Apache
Содержание
Чтобы опубликовать базу 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С (
setup.exeв дистрибутиве Windows). - Выберите «Изменить», если платформа уже установлена.
- Отметьте компонент «Модули расширения веб-сервера» и завершите установку.
На Linux модули входят в общий установщик платформы как отдельный компонент. В старых сборках с пакетами .deb и .rpm это пакет со словом ws в имени. После установки в каталоге /opt/1cv8/x86_64/<версия>/ появятся wsap24.so и утилита webinst.
Публикация базы через конфигуратор или webinst
Публикацию создают двумя способами. Результат одинаковый: каталог с default.vrd и записи в настройках веб-сервера.
| Способ | Когда удобен | На что обратить внимание |
|---|---|---|
| Конфигуратор | Windows, разовая публикация, есть рабочий стол на сервере | Запуск только от имени администратора |
Утилита webinst | Linux, сервер без графики, скрипты, много баз | Нужно точно указать пути и строку подключения |
Через конфигуратор
- Откройте конфигуратор на машине, где стоит веб-сервер. Запустите его правой кнопкой → «Запуск от имени администратора». Без повышенных прав запись в настройки IIS или
httpd.confне пройдёт. - Откройте
Администрирование → Публикация на веб-сервере. - В поле «Имя» укажите короткое имя латиницей, например
buh. Оно станет частью адреса. - В поле «Веб-сервер» выберите IIS или нужную версию Apache. Если список пуст, значит модули расширения не установлены или нет веб-сервера.
- «Каталог» — папка публикации, например
C:\inetpub\wwwroot\buh. - Оставьте флажок публикации тонкого клиента и веб-клиента. OData, HTTP- и веб-сервисы включайте только если они действительно используются.
- Нажмите «Опубликовать». Если веб-сервер 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="srv1c";Ref="buh";"/>
В default.vrd можно прописать логин и пароль пользователя 1С, чтобы вход был без запроса. Для публикации, доступной из интернета, так делать нельзя — любой, кто узнает адрес, войдёт в базу под этим пользователем.
Настройка IIS для публикации 1С
IIS — самый частый выбор на Windows Server: он уже в системе и управляется из привычной оснастки. Публикацию на IIS нужно подготовить заранее, иначе конфигуратор создаст каталог, а браузер покажет ошибку.
Установка роли
- Откройте «Диспетчер серверов» → «Добавить роли и компоненты».
- Отметьте роль «Веб-сервер (IIS)».
- В службах роли раскройте «Разработка приложений» и отметьте «Расширения ISAPI» и «Фильтры ISAPI».
- Если нужен вход в 1С по учётной записи Windows, в разделе «Безопасность» отметьте «Проверка подлинности Windows».
- Завершите установку и только потом публикуйте базу.
Права и пул приложений
После публикации в 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
- Скачайте сборку Apache 2.4 той же разрядности, что и платформа, и распакуйте, например в
C:\Apache24. - Зарегистрируйте службу:
C:\Apache24\bin\httpd.exe -k installв командной строке от имени администратора. - Убедитесь, что порт 80 не занят IIS или другой программой.
- Опубликуйте базу конфигуратором (веб-сервер «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С нажмите «Добавить».
- Выберите добавление существующей информационной базы.
- Тип расположения — «На веб-сервере», адрес —
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С будет ругаться на него — для внешнего доступа берите сертификат от доверенного центра.
Что ещё закрыть
- 🔒 Наружу открывайте только 443 порт веб-сервера. Порты кластера 1С (1540, 1541 и диапазон рабочих процессов) из интернета быть доступны не должны.
- 👥 У каждого пользователя 1С — свой пароль. Пользователь «Администратор» без пароля в опубликованной базе — прямой путь к утечке.
- 📡 Не публикуйте OData, HTTP- и веб-сервисы «на всякий случай». Каждый лишний интерфейс — ещё одна точка входа.
- 🗂️ Не используйте общий каталог
wwwrootдля чужих сайтов и публикаций 1С. Отдельная папка и отдельный пул упрощают права. - 🧭 Если доступ нужен только сотрудникам, ограничьте его по IP или пустите людей через VPN, а публикацию оставьте во внутренней сети.
Вход по учётной записи Windows настраивается в свойствах пользователя 1С (флажок аутентификации операционной системы) и в публикации. Для IIS дополнительно нужна служба роли «Проверка подлинности Windows». В локальной сети домена это избавляет от ввода пароля.