Публикация базы 1С не открывается в браузере: диагностика от кластера до логов IIS
Содержание
Проверить публикацию 1С на сервере проще всего с конца цепочки: откройте в браузере адрес http://<веб-сервер>/<имя_публикации>/. Если загрузился веб-клиент и спросил пользователя — публикация работает. Если нет, код ответа подскажет, где обрыв: 404 — у веб-сервера нет нужного каталога или обработчика, 500 — не загрузился модуль расширения 1С, текст ошибки 1С на странице — веб-сервер в порядке, а проблема на стороне кластера или базы.
Цепочка всегда одна: браузер → IIS или Apache → модуль веб-расширения 1С → файл default.vrd → сервер 1С или каталог файловой базы. Диагностика идёт по звеньям, и на каждом есть своя быстрая проверка. Ниже порядок, которым пользуются администраторы, когда публикация «вроде сделана, но не открывается».
Что проверить до диагностики: состав публикации
Публикация — это не одна галочка, а четыре вещи сразу. Пока не убедитесь, что все они на месте, искать ошибку дальше бессмысленно.
- 📁 Каталог публикации с файлом
default.vrd. Для IIS по умолчанию это папка внутриC:\inetpub\wwwroot\, напримерC:\inetpub\wwwroot\buh\. - 🧩 Модуль веб-расширения из каталога платформы:
wsisapi.dllдля IIS,wsap24.dllдля Apache 2.4 на Windows,wsap24.soна Linux. - 🔗 Обработчик в настройках веб-сервера, который направляет запросы в этот модуль.
- 🗄️ Строка подключения к базе внутри
default.vrd.
Откройте 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>
Сверьте три значения:
baseсовпадает с именем виртуального каталога в адресе (/buh→http://server/buh/).Srvr— имя или адрес сервера 1С, которое резолвится с веб-сервера, а не с вашего ноутбука.Ref— имя базы ровно так, как оно зарегистрировано в кластере. Регистр и опечатки здесь частая причина отказа.
Для файловой базы вместо Srvr и Ref будет File="D:\Bases\Buh";. Путь должен существовать на самом веб-сервере.
Если публикацию делали через Конфигуратор (Администрирование → Публикация на веб-сервере), запускать его нужно от имени администратора Windows. Без прав мастер может создать каталог, но не прописать обработчик в IIS — снаружи это выглядит как «публикация есть, а адрес отдаёт 404».
Проверка базы и сеансов в консоли кластера
Для клиент-серверной базы откройте консоль администрирования серверов 1С и убедитесь в трёх вещах.
База зарегистрирована. Разверните Центральные серверы 1С:Предприятия → <сервер> → Кластеры → <кластер> → Информационные базы. Имя в списке должно совпадать с Ref из default.vrd.
Начало сеансов не заблокировано. В свойствах информационной базы проверьте флажок блокировки начала сеансов. Если его включили на время обновления и забыли снять, веб-клиент получит отказ так же, как толстый клиент.
Подключение действительно доходит. Откройте базу из браузера и сразу обновите в консоли список Сеансы. В колонке «Приложение» должен появиться сеанс веб-клиента. Для веб-сервисов и HTTP-сервисов там будут отдельные типы приложений.
Появился сеанс — значит, веб-сервер, модуль и строка подключения в порядке. Нет сеанса, а в браузере ошибка 1С — проблема между веб-сервером и кластером.
То же самое можно проверить без консоли, утилитой rac (нужен запущенный сервис ras):
rac cluster list
rac infobase summary list --cluster=<uuid_кластера>
rac session list --cluster=<uuid_кластера>
Первая команда выдаёт идентификатор кластера, вторая — список баз, третья — активные сеансы. Если какой-то параметр не принимается, смотрите rac help для своей версии платформы.
Связь веб-сервера с сервером 1С
Когда IIS и сервер 1С стоят на разных машинах, клиентом для кластера выступает модуль расширения на веб-сервере. Ему нужны те же сетевые пути, что и обычному клиенту:
| Порт | Кому | Что даёт |
|---|---|---|
| 1540 | Агент сервера | Первичное подключение |
| 1541 | Менеджер кластера | Выдача рабочего процесса |
| 1560–1591 | Рабочие процессы | Обмен данными сеанса (диапазон задаётся в свойствах рабочего сервера) |
Проверка с веб-сервера в PowerShell:
Test-NetConnection srv1c -Port 1540
Test-NetConnection srv1c -Port 1541
Если порт закрыт, ошибка в браузере будет про то, что сервер 1С:Предприятия не обнаружен или соединение не установлено.
Версия платформы на веб-сервере должна совпадать с версией сервера 1С до последней цифры. Модуль wsisapi.dll берётся из каталога установленной платформы, и при несовпадении номера сборки подключение отклоняется с ошибкой о несоответствии версий клиента и сервера. После обновления кластера переопубликуйте базу из новой версии.
Настройки IIS, которые ломают публикацию чаще всего
Откройте Диспетчер служб IIS и пройдите по пунктам ниже. Каждый из них по отдельности способен положить публикацию.
Компоненты роли веб-сервера
Модуль 1С работает как ISAPI-расширение. Если компоненты не установлены, обработчик просто не на что повесить. Проверка в PowerShell на Windows Server:
Get-WindowsFeature Web-ISAPI-Ext, Web-ISAPI-Filter
В колонке Install State должно стоять Installed. Если нет — добавьте их через мастер ролей или Install-WindowsFeature.
Сопоставление обработчиков
Выберите виртуальный каталог публикации → Сопоставления обработчиков. Там должна быть запись для пути *, которая ссылается на wsisapi.dll из каталога той же версии платформы, например C:\Program Files\1cv8\8.3.25.1374\bin\wsisapi.dll.
Типичная находка: после обновления платформу старой сборки удалили, а обработчик всё ещё смотрит на её папку. IIS не находит файл и отдаёт 500.
Ограничения ISAPI и CGI
На уровне сервера (не сайта) откройте Ограничения ISAPI и CGI. Путь к wsisapi.dll должен быть в списке со статусом «Разрешено». Если записи нет или она запрещена, IIS отвечает ошибкой 404.2 — запрос до 1С не доходит вовсе.
Пул приложений и разрядность
Это самая коварная настройка. В Пулы приложений → <пул публикации> → Дополнительные параметры найдите Разрешены 32-разрядные приложения (Enable 32-Bit Applications):
| Платформа на веб-сервере | Значение параметра |
|---|---|
64-разрядная (C:\Program Files\1cv8\) | False |
32-разрядная (C:\Program Files (x86)\1cv8\) | True |
При несовпадении в журнале IIS будет 500 с кодом Win32 193 — «не является приложением Win32».
Перезапуск пула или iisreset обрывает все текущие сеансы веб-клиента и запросы к веб-сервисам. Делайте это в нерабочее время или предупредите пользователей.
Права доступа на каталоги и безопасность
Ошибки прав выглядят по-разному: 401, 500 или ошибка 1С «недостаточно прав». Проверяйте по слоям.
Права учётной записи IIS
Рабочий процесс IIS работает под удостоверением пула. По умолчанию это IIS AppPool\<имя пула>, а анонимный доступ идёт через IUSR. Нужны:
- 📄 Чтение каталога публикации (с
default.vrd) — дляIIS_IUSRSиIUSR. - ⚙️ Чтение и выполнение каталога
binплатформы — оттуда грузитсяwsisapi.dllи библиотеки рядом с ним. - 🗄️ Изменение каталога файловой базы — только для файлового варианта. Без него база открывается, но падает на первой записи или сразу на блокировке.
Быстро посмотреть фактические права:
icacls "C:\inetpub\wwwroot\buh"
icacls "D:\Bases\Buh"
Аутентификация на уровне IIS
В разделе Проверка подлинности для каталога публикации обычно включена «Анонимная проверка подлинности»: логин и пароль спрашивает уже сама 1С. Если там стоит только «Проверка подлинности Windows», браузер покажет окно Windows-входа или 401 ещё до формы 1С.
Включайте Windows-аутентификацию в IIS, только если при публикации отмечали вход по учётной записи ОС и у пользователей 1С настроена аутентификация операционной системы.
Права внутри 1С
Если до формы входа дошли, а дальше «нет прав на запуск веб-клиента» или похожее сообщение, смотрите роли пользователя в базе. Для запуска нужен соответствующий режим в ролях, а для HTTP- и веб-сервисов — права на вызов этих сервисов. Пользователь, под которым ходит внешняя система, часто заведён с урезанным профилем.
Какие расширения опубликованы и как их проверить
В мастере публикации отдельными флажками включаются: веб-клиент, тонкий клиент по HTTP, стандартный интерфейс OData, веб-сервисы и HTTP-сервисы. Каждому соответствует свой адрес и своя проверка.
| Что опубликовано | Адрес для проверки | Ожидаемый ответ |
|---|---|---|
| Веб-клиент | http://server/buh/ | Форма входа 1С |
| OData | http://server/buh/odata/standard.odata/ | XML со списком сущностей (после ввода логина) |
| HTTP-сервис | http://server/buh/hs/<корневой URL>/<шаблон> | Ответ обработчика сервиса |
| Веб-сервис (SOAP) | http://server/buh/ws/<имя>?wsdl | Описание WSDL |
Пустой или почти пустой ответ OData при правильных логине и пароле — не ошибка публикации. Это значит, что в базе не задан состав стандартного интерфейса OData. Его задают отдельно: программно методом УстановитьСоставСтандартногоИнтерфейсаOData() или обработкой настройки OData, которая есть в типовых конфигурациях на БСП.
Если HTTP-сервис отдаёт 404, а веб-клиент открывается, проверьте в default.vrd, что публикация HTTP-сервисов включена и корневой URL сервиса совпадает с адресом. После правки default.vrd пул нужно перезапустить.
Проверка из браузера и из командной строки
Браузер удобен для веб-клиента, но кешируют страницы и запоминают пароли. Для чистой проверки используйте curl прямо на веб-сервере:
curl -I http://localhost/buh/
curl -u Admin:password http://localhost/buh/odata/standard.odata/
curl http://localhost/buh/ws/Exchange?wsdl
Ключ -I показывает только заголовки, по ним сразу видно код ответа.
Логика простая:
- С самого веб-сервера через
localhostработает, снаружи нет — дело в брандмауэре, привязках сайта (Привязки…в IIS), прокси или DNS. - Не работает
и на
localhost— проблема в IIS, модуле или кластере. - Работает по HTTP, не работает по HTTPS — смотрите привязку сертификата к порту 443 и то, что сертификат выдан на то имя, по которому заходят.
Для веб-клиента проверьте и поддерживаемый браузер: актуальные Chrome, Edge, Firefox, Safari. Устаревший браузер даёт пустую страницу без внятной ошибки.
Журналы и логи: где искать причину сбоя
Если код ответа ничего не объяснил, идите в логи. Их четыре уровня, и смотреть стоит в таком порядке.
1. Журнал IIS. Лежит в C:\inetpub\logs\LogFiles\W3SVC<номер сайта>\. В каждой строке есть три поля, которые вместе дают точный диагноз: sc-status (код HTTP), sc-substatus (подкод, например 2 для 404.2) и sc-win32-status. Последнее — код системной ошибки: 5 — отказано в доступе, 126 — модуль не найден, 193 — не та разрядность.
2. Журнал событий Windows. eventvwr.msc → Журналы Windows → Приложение. Сюда пишут сбои рабочего процесса IIS (w3wp.exe) и события самой 1С. Падение w3wp.exe в момент открытия базы — повод проверить разрядность и версию модуля.
3. Журнал регистрации базы. Откройте базу в толстом или тонком клиенте и посмотрите журнал регистрации за время попытки входа. Если там есть событие «Сеанс. Аутентификация (ошибка)» с вашим пользователем, запрос дошёл до базы, и вопрос в логине или ролях.
4. Технологический журнал 1С. Включается файлом logcfg.xml в каталоге conf платформы на веб-сервере и на сервере 1С. Для диагностики подключения достаточно событий исключений и соединений:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\1C_TechLog" history="2">
<event><eq property="name" value="EXCP"/></event>
<event><eq property="name" value="CONN"/></event>
<property name="all"/>
</log>
</config>
Параметр history задаёт, сколько часов хранить логи. Каталог должен быть доступен на запись учётной записи, под которой работает процесс: на веб-сервере — удостоверению пула IIS.
Технологический журнал быстро растёт. Включайте его на время проверки и удаляйте logcfg.xml после, иначе диск заполнится за несколько дней.
Для Apache вместо журнала IIS смотрите error.log в каталоге logs веб-сервера. Строка про невозможность загрузить wsap24.dll почти всегда означает другую разрядность Apache или неверный путь в директиве LoadModule.
Если публикация на Apache
Короткая сверка httpd.conf для Apache 2.4 на Windows:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.25.1374/bin/wsap24.dll"
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>
После правки проверьте синтаксис командой httpd -t и только затем перезапускайте службу Apache. Директива LoadModule для модуля 1С должна быть одна: две строки от разных версий платформы — частая причина падения при старте.
Частые вопросы о проверке публикации
Нужно ли переопубликовывать базу после обновления платформы?
Занимает ли веб-клиент лицензию?
Можно ли опубликовать на одном IIS базы разных версий платформы?
wsisapi.dll вместе не работают.Почему публикация открывается у администратора, но не у пользователей?
localhost, а снаружи режет брандмауэр или DNS-имя ведёт на другой адрес. Второй вариант — у пользователей нет роли с правом запуска веб-клиента.